首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户端服务器设计问题:维护双方的状态

客户端服务器设计问题:维护双方的状态
EN

Stack Overflow用户
提问于 2010-02-26 20:10:04
回答 4查看 349关注 0票数 1

谢谢你抽出时间回顾我的问题!

让我们假设有一个web服务(restful、SOAP、XML/JSON,不管你想要什么),它是一个关于小狗的服务。为了这个问题,小狗可以有两个成员变量。第一个是小狗的唯一ID。另一个数据成员是“跳蚤的数量”(跳蚤计数)。

小狗服务提供的功能之一可能是“根据小狗的ID返回表示小狗的对象”。

您将如何处理客户端应用程序可以更新Flea计数的要求?以下是我一直在思考的一些想法:

  1. ,您是否允许客户端在客户端更新小狗的Flea计数,然后将整个对象发送回服务,以便更新其状态?
  2. ,您是否创建了一个接收小狗ID和新Flea计数的方法,以便将客户端与服务器同步,但不发送任何内容?
  3. 是否创建了一种方法,该方法接受小狗ID和新舰队计数,但服务响应于整个更新对象,然后替换现有的小狗(哦,不!)在客户端?
  4. Other?

  • ,您是否创建了一个接收小狗ID和更新服务器的新跳蚤计数的方法,但是客户端必须调用与按ID返回小狗对象相关的方法,并替换客户端的小狗(扼杀思想!)?

谢谢。

EN

回答 4

Stack Overflow用户

发布于 2010-02-26 20:18:17

取决于你的建筑设计--真的没有一个正确的答案:

1)这听起来就像使用"Mobile Object",即整个对象(包括逻辑)可以序列化并通过线路发送。它也可以被看作是没有逻辑的DTO (数据传输对象)。

2)这听起来更像是SOA--SOA的重点是使服务提供客户可以使用的直观方法。如果方法名为UpdatePuppyFleaCount(puppyId,fleaCount),那么它就有意义了。

3)这也是SOA的意思,但实际上模糊了行,因为它既是更新操作,也是读取操作(如果您发送更新的Puppy对象,并且服务器使用提交的Puppy对象进行响应--客户端必须知道交换,但这并不少见)。

4)这是真正的用例依赖者。如果你期望更新跳蚤数量,而对小狗不做任何其他事情,那么这是有意义的。如果你希望在更新跳蚤数量之后总是和小狗一起工作,那么要求客户端打两个电话是一个很糟糕的设计(webservice调用很慢)。

5-逆4(读取小狗,传递小狗实例和新的跳蚤计数到服务器,得到更新的小狗):同样,这取决于用例。如果读取操作可能与UpdateFleaCount()操作分开使用(也就是说,您不总是希望在检索小狗后更新跳蚤计数),那么它非常适合。

扩展我对“没有一个正确答案”的评论。我发明了“银弹规则”(虽然我相信很久以前有人就已经超过我了),在编程中从来没有银弹;你总是要权衡不同方法的利弊、成本/效益。关键在于识别和理解不同方法之间的差异。

票数 1
EN

Stack Overflow用户

发布于 2010-02-26 20:21:03

每个幼犬实例都在服务器上维护,服务应该公开获取、设置和刷新puppycount的方法。

票数 1
EN

Stack Overflow用户

发布于 2010-02-26 20:13:49

数字2,修改后返回一个布尔结果,该结果指示更新是否成功。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2344491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档