我们正在构建可以被其他系统使用的产品。因为我们有SOA,所以我们只开发一个服务(WCF)。关于如何设计该服务的接口,我们进行了几次有争议的讨论。我们在面向服务的过程设计和面向对象设计之间进行选择。
由于我们的服务将从.NET和Java中使用,有人说,如果服务具有面向对象的设计,就很难与服务集成。其他人则认为服务不能使用OO方法。有人说OO是完全没问题的。因此,我们没有明显的抑郁。
WCF提供了使用这两种设计的简单方法,但是哪种设计是最好的呢?
发布于 2010-10-13 15:09:04
我假设您使用的“面向对象”的定义是管理“对象”的程序的概念,这些单独的对象管理其内部状态并公开要调用的函数。
最接近这一点的WCF是基于会话的服务,其中每个服务实例的生命周期由客户端控制。
如果你想让Java调用这个服务,你必须使用basicHttpBinding,因为它使用的是经典的web服务协议。
此绑定不提供对基于会话的服务的支持,因此您实际上不能使用基于会话的服务。
因此,您不能将“面向对象”范例应用于服务本身。
发布于 2010-10-13 15:49:53
你可以通过说:“我的问题是关于服务的方法是否应该接收复杂类型而不是标量参数?”
你应该问自己以下问题:
a)该服务是否有可能被非OO客户端使用?不知道,一个COBOL批处理?即使你的公司已经对面向对象技术(Java/.NET)进行了标准化,将来这个特定的服务是否有可能被一些外部实体(客户、PHP网站等)使用呢?
b)您是否已经在过去创建了许多这样的服务(因此您完全确定复杂类型不存在编组/序列化/反序列化问题,或者至少知道您可以安全地使用什么)?
如果您对这两点都很有信心,那么可以随意使用"OO“方法来设计您的服务的输入和输出。否则,使用最安全(如果更原始)的方法,并将“对象”分解为标量组。
https://stackoverflow.com/questions/3921047
复制相似问题