如果我不将服务合同、代理和服务保存在单独的程序集中,则服务合同和代理驻留在客户端程序集中,而服务则驻留在服务程序集中。
如果我不将数据合同保存在单独的程序集中,它应该驻留在客户端还是服务端?
数据协定可以驻留在两个程序集中吗?
如果我不将服务合同、代理和服务保存在单独的程序集中,则服务合同和代理驻留在客户端程序集中,而服务则驻留在服务程序集中。
如果我不将数据合同保存在单独的程序集中,它应该驻留在客户端还是服务端?
数据协定可以驻留在两个程序集中吗?
在典型的面向服务的场景中,您的服务器端服务库中有 DataContract。任何打电话给你的人都会向你的服务添加一个客户端代理连接,因此实际上是在复制你的 DataContract。
因此,在“正常”情况下,您在服务器端拥有“主”DataContract,并且每个客户端代理中都有一个单独的类来访问您的服务。这些客户端副本是“在线上相同的”,例如它们序列化为相同的消息格式 - 这实际上是您的客户端和服务器之间的所有内容 - 一个来回发送的序列化消息。
作为服务开发人员,您肯定必须在服务器端拥有 DataContract。但同样的道理也适用于服务契约——它们也必须在服务器端——否则你将无法将你的服务接口发布到世界上,以供任何可能连接到你的服务的人使用。
我建议每个服务器至少有以下两个项目:
马克
我强烈建议有一个单独的程序集,其中包含客户端和服务器端都引用的接口和合同。
答案是——视情况而定。
通常最好将它们分开,但在某些情况下,将它们放在一起也是不错的选择。
当您将它们分开时,您可以引用和使用您的数据合同,而无需拖拽您的操作合同,这为您构建应用程序的方式提供了更大的灵活性。
您还可以独立地对合约进行版本控制。
但这一切都取决于您的实际应用。