アプリケーションの種類によって異なります。
デスクトップアプリケーション
サーバは、専用のサーバー上で実行することができればそれは理にかなっています。サーバーとGUIの両方を各デスクトップにインストールする場合(ほとんどのアプリケーション用)は意味がありません。次に、異なるプロジェクト/ dllを使用してUI /ビジネスロジックを分離します。
Webアプリケーション
はい。多くのWebアプリケーションでは、別々のサービスレイヤーがあり、GUIとサービスレイヤーの間の通信にSOAPを使用します。バニラソケットを使用して
ソケット
めったに今日は良い選択ではありません。いくつかの優れたIPCフレームワークが利用可能な場合に、独自のプロトコルと実装を構築するエネルギー/時間を無駄にするのはなぜですか。
分割統治をコメントに応答して
を更新。 UIをできるだけ小さなコンポーネントに分割して再利用できるようにします。これらのコンポーネントを別のプロジェクト/ dllに入れます。サンプルコンポーネントは、すべてのユーザのリストを提示するUserTable(インタフェースIUserService
の依存関係を取る)であってもよい。
UIレイヤ全体が失敗するため、再利用しようとしないでください。その理由は、構成可能で一般的なUIを作成しようとすると、再利用可能なコンポーネントを使用して特定のUIを構築するよりも、その時間を費やすことになります。また、最終的には、各アプリケーションに合わせて汎用UIレイヤーに軽微な変更を加えるために、小さな「ハック」を追加する必要があります。それはemssで終わるでしょう。
代わりに上記のコンポーネントを再利用して、アプリケーションごとに特定のUIを構築します。
これは完全に有効な解決策です。多くのうまく設計されたウェブアプリにとって、それはまさに何が起こっているのかです。クライアントは何らかの種類のWebブラウザであり、ビジネスロジックは集中サーバー上で実行されます。 – Marvo