共享客户端和服务器的WCF合同

And*_*lov 3 .net version-control wcf datacontract

有两个团队正在研究产品.一个团队正在研究服务器端逻辑,作为WCF服务公开,另一个团队正在致力于实现前端(ASP.NET MVC网站).在这两个团队之间共享服务API的适当解决方案是什么?通过API我的意思是一个Web服务接口+一堆DTO类.我们正在使用git和TeamCity进行持续集成.服务和前端是独立开发和部署的.

基于此,我看到的选项是:

  1. 将所有"接口"内容放入一个单独的项目中,并通过git模块共享它.客户端和服务器都将共享代码.
  2. 将所有"接口"内容放入单独的项目中,并将其发布到私有NuGet存储库.客户端和服务器都将引用唯一的通用程序集.
  3. 将客户端和服务器都放到单个VS解决方案中,然后共享程序集.

选项3感觉就像最简单的方法,易于实现和理解,但我对获得更大的解决方案的整个想法并不感到兴奋.选项1和2感觉非常相似,但我更喜欢选项2.

您认为这里有什么更好的方法?还有其他方法吗?

Chr*_*ter 6

我们使用选项4 - 客户端和服务器位于不同的解决方案中,但两个解决方案都包含相同的WCF合同项目(仅包含[DataContract][ServiceContract]定义),并使用项目引用而不是程序集引用引用它.这可能听起来很有趣,但它的工作正常.

两个解决方案都可以单独构建,并且它们都获得相同的DLL,因为无论它们内置了哪个顺序,第二个构建都不会重新编译DLL,因为它已经是最新的.

我认为这样做的主要优点是,当有人对合同项目进行源代码更改时,客户端和服务器代码都可以立即获得更改,而无需"刷新"任何内容.这削减了诸如"我确实做出了改变","不是你没有","我做了"," 看不到它"等论点.