谢谢你抽出时间回顾我的问题!
让我们假设有一个web服务(restful、SOAP、XML/JSON,不管你想要什么),它是一个关于小狗的服务。为了这个问题,小狗可以有两个成员变量。第一个是小狗的唯一ID。另一个数据成员是“跳蚤的数量”(跳蚤计数)。
小狗服务提供的功能之一可能是“根据小狗的ID返回表示小狗的对象”。
您将如何处理客户端应用程序可以更新Flea计数的要求?以下是我一直在思考的一些想法:
?
谢谢。
发布于 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()操作分开使用(也就是说,您不总是希望在检索小狗后更新跳蚤计数),那么它非常适合。
扩展我对“没有一个正确答案”的评论。我发明了“银弹规则”(虽然我相信很久以前有人就已经超过我了),在编程中从来没有银弹;你总是要权衡不同方法的利弊、成本/效益。关键在于识别和理解不同方法之间的差异。
发布于 2010-02-26 20:21:03
每个幼犬实例都在服务器上维护,服务应该公开获取、设置和刷新puppycount的方法。
发布于 2010-02-26 20:13:49
数字2,修改后返回一个布尔结果,该结果指示更新是否成功。
https://stackoverflow.com/questions/2344491
复制相似问题