3

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

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

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

选项 3 感觉是最简单的方法,易于实施和理解,但我对获得更大解决方案的整个想法并不感到兴奋。选项 1 和 2 感觉差不多,但我更喜欢选项 2。

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

4

3 回答 3

6

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

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

在我看来,这样做的主要优点是,当有人对合同项目进行源代码更改时,客户端和服务器代码都可以立即使用更改,而无需“刷新”任何内容。这消除了诸如“我确实做了那个改变”、“不,你没有”、“是的,我做了”、“看不到”等论点。

于 2012-12-07T08:25:38.790 回答
2

We do store our common code in a separate solution. It produces .dll's which are added as a simple assembly references to multiple other projects which depend on them.

All builds are defined in nant files, and we do got some .bat files which run the builds in appropriate order.

When You just want to build the project from VS, the dependent .dll most probably is already built. If You want to be 100% You got everything is built with latest changes, You run those bat scripts which will trigger nant builds and rebuild everything.

于 2012-12-07T09:01:39.213 回答
1

在我的项目中,我们使用了与您在选项 1 共享代码中描述的类似方式

于 2012-12-07T08:14:42.023 回答