製品に取り組んでいる2つのチームがあります。1つのチームは、WCFサービスとして公開されているサーバー側のロジックに取り組んでおり、もう1つのチームは、フロントエンド(ASP.NET MVC Webサイト)の実装に取り組んでいます。これら2つのチーム間でサービスAPIを共有するための適切なソリューションは何ですか?APIとは、Webサービスインターフェイスと一連のDTOクラスを意味します。継続的インテグレーションにはgitとTeamCityを使用しています。サービスとフロントエンドは独立して開発および展開されます。
これに基づいて、私が見るオプションは次のとおりです。
- すべての「インターフェース」のものを別のプロジェクトに入れ、gitモジュールを介して共有します。クライアントとサーバーの両方がコードを共有します。
- すべての「インターフェイス」を別のプロジェクトに配置し、プライベートNuGetリポジトリに公開します。クライアントとサーバーの両方が、唯一の共通のアセンブリを参照します。
- クライアントとサーバーの両方を単一のVSソリューションに配置し、文字通りアセンブリを共有します。
オプション3は、最も簡単なアプローチのように感じられ、実装と理解が容易ですが、より大きなソリューションを取得するというアイデア全体にはあまり興奮していません。オプション1と2はほとんど同じように感じますが、私はオプション2の方が好きです。
ここでのより良いアプローチは何だと思いますか?他の解決策はありますか?