设计WCF服务接口。程序与面向对象的设计

时间:2010-10-13 05:38:20

标签: oop wcf procedural

我们正在构建可供其他系统使用的产品。由于我们有SOA,我们只开发一个服务(WCF)。我们就如何设计该服务的界面进行了几次有争议的讨论。我们在程序设计和面向对象设计之间进行选择。

由于我们的服务将在.NET和Java中使用,因此有人说,如果它具有OO设计,很难与服务集成。其他认为服务桅杆不使用OO方法。有人说OO完全没问题。结果我们没有明显的沮​​丧。

WCF提供了使用这两种设计的简便方法,但最好的是什么?

2 个答案:

答案 0 :(得分:2)

我假设你正在使用的“面向对象”的定义是管理“对象”的程序的概念,这些单独的对象管理它们的内部状态并公开要调用的函数。

最接近的WCF parralel是基于会话的服务,其中每个服务实例的生命周期由客户端控制。

如果您希望Java调用此服务,则必须使用basicHttpBinding,因为它使用经典的Web服务协议。

此绑定不支持基于会话的服务,因此您实际上无法使用基于会话的服务。

因此,您无法对服务本身应用“面向对象”范例。

答案 1 :(得分:1)

您通过以下方式澄清原始问题: “我的问题是关于服务的方法,如果它们接收复杂类型而不是标量参数?”

你应该问自己以下几点:

a)非OO客户是否有可能使用该服务? Dunno,COBOL批次?即使您的公司已经在OO技术(Java / .NET)上进行了标准化,但是某些外部实体(客户,PHP网站,等等)将来可能会使用此特定服务

b)您以前是否已经创建了许多此类服务(因此您完全确定复杂类型没有编组/序列化/反序列化问题,或者至少知道您可以安全使用的服务)?

如果您对这两点都充满信心,那么请随意使用“OO”方法为您的服务设计输入和输出。否则,选择最安全(如果更原始)的方法,并分解标量组中的“对象”。