代码之家  ›  专栏  ›  技术社区  ›  Burt

从列表中删除DTO时返回的内容

  •  2
  • Burt  · 技术社区  · 15 年前

    我有一个面向服务的体系结构。客户端持有绑定到前端的父级和子级DTO的列表。此服务是一个GET,返回所有内容的完整列表。

    删除时,最好:

    a.服务删除方法成功时,从前端列表中删除对象(成功或失败时返回bool)
    b.再次返回完整的对象列表
    c.只返回受影响的父母和子女
    D.其他建议

    提前谢谢

    4 回复  |  直到 13 年前
        1
  •  2
  •   Shiraz Bhaiji    15 年前

    这实际上取决于商业案例。

    当两个用户使用系统时。两者都在从列表中添加和删除项目。

    当用户A删除和项时,您希望他看到用户B的cheges,还是需要用户A按refresh来查看这些更改?

    询问用户希望它如何工作,然后选择通过网络传输最少数据量的方法。

        2
  •  4
  •   Mark Seemann    13 年前

    为了拥有真正面向服务的体系结构,服务应该是异步的,所以它们不应该返回任何结果。

    对于一个删除操作,这是非常简单的实现:只需激发并忘记。

    Udi Dahan's blog 是了解真正服务导向的好地方。

    如果您希望使用您的问题所暗示的rpc消息交换模式,我仍然认为该方法应该返回 无效 . 如果从同步HTTP发帖中得到一个空答案,这意味着成功——否则,您将得到一个SOAP错误或其他错误结果。

        3
  •  2
  •   Adam Ralph    15 年前

    我将使用选项A。如果您的服务能够正确地指示删除的成功或失败,那么为什么还要重新加载所有对象呢?当然,除非您还希望立即显示其他用户删除的内容,在这种情况下,B是更好的选择。您还可以选择通过定期轮询/通知方法(与删除操作分开)显示其他用户的删除操作。它实际上取决于应用程序的需求。

        4
  •  1
  •   Community Dunja Lalic    7 年前

    它不仅取决于业务案例,如 this answer 它还取决于您在代码设计中的风险承受能力。随着应用程序的增长和复杂性的增加,客户机和服务之间的紧密耦合会使代码更难更改。相反,职责和松耦合的清晰分离通常会增加可维护性和总体项目敏捷性。

    在这种情况下,这可能意味着服务不知道客户机的存在及其实现,因此排除了直接操纵客户机列表的服务。如果将此服务作为类库实现,我建议使用发布者/订阅者方法,其中服务公开包含相关删除信息的类型的C事件,并且客户机处理该事件并相应地更新其列表。

    如果这是一个Web(单向)服务,我希望删除服务调用独立于getall服务调用。客户机将使用这些调用的组合手动管理它的列表。