サービス/API アセンブリをクライアント アプリケーションと共有するかどうかは、かなり主観的なものです。あなたが完全な Microsoft ショップであり、アプリケーション スタック全体に .NET を使用している場合、API を共有することは、コードを再利用するための優れた方法であると言えます (出血しないように、API の設計方法に注意する必要があります)。クライアント アプリケーションを他のプラットフォームに移行する計画がない場合 (つまり、近い将来 .NET にとどまる予定の場合) は、共有しても問題ないと思います。サービス/API アセンブリ (その場合でも、マルチプラットフォーム クライアント環境では、サービス/API を .NET クライアントと共有することは引き続き許容されるはずです。)予算内」。アーキテクチャの理想を達成するために、多くの時間、お金、労力を費やすことができますが、それと実際のギャップはそれほど大きくないことがよくあります。API を共有せず、基本的に再作成して「正しい」SOA を維持し、コントラクトのみを消費するという選択は、実際には作業を増やし、この特定の時点での特定のプロジェクトにとって価値のないメンテナンスの手間を導入する可能性があります。あなたがすでに一般的に「サービス指向」であることを考えると、将来の時点で、クライアントでの契約のみの消費が提供できる利点が必要な場合は、すでにそこに行く準備ができています. しかし、あまりにも早くプッシュしすぎないでください。API を共有せず、基本的に再作成して「正しい」SOA を維持し、コントラクトのみを消費するという選択は、実際には作業を増やし、この特定の時点での特定のプロジェクトにとって価値のないメンテナンスの手間を導入する可能性があります。あなたがすでに一般的に「サービス指向」であることを考えると、将来の時点で、クライアントでの契約のみの消費が提供できる利点が必要な場合は、すでにそこに行く準備ができています. しかし、あまりにも早くプッシュしすぎないでください。API を共有せず、基本的に再作成して「正しい」SOA を維持し、コントラクトのみを消費するという選択は、実際には作業を増やし、この特定の時点での特定のプロジェクトにとって価値のないメンテナンスの手間を導入する可能性があります。あなたがすでに一般的に「サービス指向」であることを考えると、将来の時点で、クライアントでの契約のみの消費が提供できる利点が必要な場合は、すでにそこに行く準備ができています. しかし、あまりにも早くプッシュしすぎないでください。将来の時点で、クライアントでの契約のみの消費が提供できる利点が必要な場合は、すでにそこに行く準備ができています. しかし、あまりにも早くプッシュしすぎないでください。将来の時点で、クライアントでの契約のみの消費が提供できる利点が必要な場合は、すでにそこに行く準備ができています. しかし、あまりにも早くプッシュしすぎないでください。
あなたのニーズを考えると、これまでの投稿から収集できたことから、あなたのサービスも順調に進んでいると思います。リポジトリ (Evans、DDD 風) は間違いなくドメインの問題であり、そのため、プレゼンテーション レイヤーの観点からは特に気にする必要はありません。サービスは、ビジネス ロジックのホームであるドメインへのゲートウェイです。リポジトリは、データ ストアからのドメインの分離を実現するのに役立つサポート機能にすぎません (それらは実際には美化されたコレクションであり、率直に言って...動的で複雑なドメインでは少し面倒な場合があります。単純なデータ マッパー、 (Fowler、PofEAA) は、多くの場合、長期的にははるかに扱いやすく、複雑さが軽減され、データ取得ロジックに関するより適応性の高い動作をドメイン サービスに集中させることができます。) REST サービスへの AJAX 呼び出しを頻繁に使用することは別として、ドメインで適切なサービス/API を公開する場合、クライアントが心配する必要があるのはそれだけです。残りのすべてのビジネス ロジックをドメインの範囲内に完全にまとめ、クライアントを可能な限り軽量に保ち、「リポジトリ」や「データ マッパー」などの概念から抽象化します。
私の経験では、クライアントとドメインの境界を越えて共有する必要がある唯一のサービスまたは API 以外の概念はコンテキストです...そして、サービス指向アプリケーションでその境界を越えることは非常に難しいことで知られています。