クロスプラットフォームのクライアントサーバーアプリケーション開発、特に複数のクライアント間でのコードの再利用について私が与えたこれと以前の回答を参照してください。これは、こちらのWinformsクライアントサーバーアプリにも当てはまります。
多くの回答が言っているように、次のようにコードを共有するためにソリューションを構造化することができます。
プロジェクト構造
ソリューション
..共通(メッセージ、データコントラクト、ユーティリティ)
..ミドルウェア(参照共通、共通サービスを提供)
.. ..サーバーエグゼ(参照共通、ミドルウェア)
.. ..クライアントエグゼ(参照共通、ミドルウェア)
トップレベルのクライアントサーバーアーキテクチャ

あなたのスタックは
クライアント:
クライアントには、シリアル化、Webサービス/ミドルウェアのクライアント側実装、およびビューのModel-View-Presenterパターンがあります。
ミドルウェア:
ミドルウェア、つまりサーバー/クライアントデスクトップでの共有サービスとデータトランスポートの実装は同じにすることができます。または、このサービスを呼び出すこともできます。クライアントのみ(またはサーバーのみ)の特定のサービスは、個別のアセンブリに入れて、特定のexe(クライアントまたはサーバー)によってのみ参照される必要があります。つまり、共有されていないコードを共有しないでください!
メッセージ/DataContracts:
上で概説した手法を使用して、すべてのクライアント/サーバー間で共有されます。あなたの場合、これらはクライアントとサーバー間で共有される共通のドメインオブジェクトである可能性があります
サーバ:
すべてのビジネスロジック、DBアクセス、およびサーバー側のサービスの実装。DBアクセスの場合、優れたMicroORMとしてPetaPocoをお勧めします。
開発とデバッグ
はい、ソリューションには複数のexeを含めることができます。サーバーExeまたはクライアントExeを右クリックしてスタートアッププロジェクトを設定するだけで、どちらか一方をデバッグできます。
クライアントとサーバーを一緒に実行する場合は、コマンドラインから両方を実行し、デバッガーを両方のプロセスに接続できます。
よろしくお願いします、