如果我不将Service Contract、proxy和Service放在单独的程序集中,那么Service contracts和proxy就会驻留在客户端程序集中,而服务就会驻留在service程序集中。
如果我没有在一个单独的程序集中保存数据协定,它应该驻留在哪里,客户端还是服务端?
数据契约可以同时驻留在两个程序集中吗?
发布于 2009-09-14 19:32:59
在一个典型的面向服务的场景中,您的服务器端服务库中有DataContract。任何要调用您的人都将向您的服务添加一个客户端代理连接,因此实际上将复制您的DataContract。
因此,在“正常”情况下,您的“主”DataContract位于服务器端,每个访问您的服务的客户端代理中都有一个单独的类。这些客户端副本“在网络上是相同的”,例如,它们被序列化为相同的消息格式-这实际上是您的客户端和服务器之间的所有内容-一个来回发送的序列化消息。
作为一名服务开发人员,您肯定需要将DataContract放在服务器端。但同样的道理也适用于服务合同--这些合同也必须在服务器端--否则你将无法向世界发布你的服务接口,以供任何可能连接到你的服务的人使用。
我建议每台服务器至少有两个项目:
Marc
发布于 2009-09-14 19:13:38
我强烈建议使用一个单独的程序集,其中包含客户端和服务器端都引用的接口和约定。
发布于 2009-09-14 19:16:23
答案是--视情况而定。
通常倾向于将它们分开,但在某些情况下,将它们放在一起也是一个很好的选择。
当您将它们分开时,您可以引用和使用您的数据契约,而无需拖动您的操作契约,这为您在如何构建应用程序方面提供了更大的灵活性。
您还可以独立地对您的合同进行版本控制。
但这完全取决于您的实际应用程序。
https://stackoverflow.com/questions/1423353
复制相似问题