1

我知道 WCF 是一个消息传递系统,具有指定的Service Contract接口声明方法,可以返回或作为Data Contract类的参数实例。

我的问题是:是否可以使用 WCF 来实现一种面向对象的通信?例如 :

  • Service Contract接口方法可以返回另一个吗Service Contract?这将使我能够创建实例树,这是面向对象通信的第一步。
  • 更好的是,一个Service Contract不仅可以实现方法,还可以实现属性吗?

如果您对创建这种面向对象的通信有任何其他想法,请告诉我。我有点卡在这里。

4

1 回答 1

4

好吧,按顺序:

  1. WCF 允许您从协定方法返回接口。但是您计划在服务中使用的该接口的所有实现都需要为服务所知(通过ServiceKnownTypeAttribute或用 装饰它们DataContract),否则您将遇到序列化问题。
  2. 不,只允许使用方法。这就是它的工作原理。想象一下,如果要支持属性,代理的实现(无论是否生成)会是什么样子。对于可以通过方法轻松解决的事情有很多复杂性。

关于你怎么能做到...我假设这都是从客户的角度来看的。因此,在客户端上,您可以在服务代理上创建一个包装器,并使其公开属性和其他合同,正如您所称的那样。合同可以是其他服务代理的包装器(或相同,取决​​于您的需要)。

因此,底线是您必须直接在客户端上模拟您的要求。

您不应该考虑过度扩展/扩展 WCF 默认情况下可以执行的操作,而应仅在确实需要时在其上编写自己的框架。WCF 本身可以处理很多场景,也许您只需要稍微调整一下您的要求或技术设计。

于 2013-05-21T19:15:31.873 回答