【发布时间】:2012-03-26 13:47:35
【问题描述】:
通过 WCF 访问远程对象模型的最佳方式是什么?
我有一个带有面向对象模型的系统层 (A),并希望从另一层 (B) 访问此模型
所需的对象应由 B 按需加载。例如,假设我有 C1 和 C2 类,C1 持有 C2 的列表。此列表应仅在访问时加载。
由于数据合同不能保存操作合同,我将使用一个服务合同来实现这一点,其中有两种方法“getC1”和“getListC2(C1)”
但是,我真正想要的是访问一个面向对象的模型,例如在 C1 上调用函数:C1.getListC2
如何以更加面向对象的方式使用 WCF?
【问题讨论】:
-
面向服务的体系结构(尤其是 WCF)和面向对象的原则并不总是很好地匹配。 SOA 是关于服务和消息的——通常是具体的东西。它并不真正关心继承和多态性,真的——它需要拥有并处理具体的消息对象。另一方面,OOP 与封装、继承、多态有关。 OOP 在 服务(实现)中效果很好 - 跨服务边界的 OOP 不那么......
-
补充@marc_s 所说的内容,您所说的(以及答案所倡导的)是在远程服务上使用相对的Fine Grained Facade。您应该警惕这将如何执行,并且在选择跨远程边界工作时应用的 OO 技术时要务实。
标签: wcf oop datacontract servicecontract