首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WCF DataContract

WCF DataContract
EN

Stack Overflow用户
提问于 2009-09-14 19:10:28
回答 3查看 909关注 0票数 0

如果我不将Service Contract、proxy和Service放在单独的程序集中,那么Service contracts和proxy就会驻留在客户端程序集中,而服务就会驻留在service程序集中。

如果我没有在一个单独的程序集中保存数据协定,它应该驻留在哪里,客户端还是服务端?

数据契约可以同时驻留在两个程序集中吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-09-14 19:32:59

在一个典型的面向服务的场景中,您的服务器端服务库中有DataContract。任何要调用您的人都将向您的服务添加一个客户端代理连接,因此实际上将复制您的DataContract。

因此,在“正常”情况下,您的“主”DataContract位于服务器端,每个访问您的服务的客户端代理中都有一个单独的类。这些客户端副本“在网络上是相同的”,例如,它们被序列化为相同的消息格式-这实际上是您的客户端和服务器之间的所有内容-一个来回发送的序列化消息。

作为一名服务开发人员,您肯定需要将DataContract放在服务器端。但同样的道理也适用于服务合同--这些合同也必须在服务器端--否则你将无法向世界发布你的服务接口,以供任何可能连接到你的服务的人使用。

我建议每台服务器至少有两个项目:

  • 包含服务约定(IService接口)、数据约定以及可能的错误约定的类库包含实际服务实现(实现服务接口的类)的类库自托管EXE (控制台应用程序)

Marc

票数 2
EN

Stack Overflow用户

发布于 2009-09-14 19:13:38

我强烈建议使用一个单独的程序集,其中包含客户端和服务器端都引用的接口和约定。

票数 0
EN

Stack Overflow用户

发布于 2009-09-14 19:16:23

答案是--视情况而定。

通常倾向于将它们分开,但在某些情况下,将它们放在一起也是一个很好的选择。

当您将它们分开时,您可以引用和使用您的数据契约,而无需拖动您的操作契约,这为您在如何构建应用程序方面提供了更大的灵活性。

您还可以独立地对您的合同进行版本控制。

但这完全取决于您的实际应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1423353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档