数年前、私は.NETRemotingを使用する重要なビジネスシステムを設計および実装しました。クライアントはWindowsフォームGUIとして実装され、サーバーはWindowsサービスとして実装され、SQLServerデータベースがありました。
トラブルシューティング/デバッグ/開発用に設計したので、最初の設計基準の1つは、.NET Remotingの実装全体を簡単に削除して、デスクトップ上でシステム全体を実行できることでした。したがって、単一のブール構成設定を「false」=オフに変更することで、リモーティングを非アクティブ化できます。その後、.NET Remotingのオーバーヘッドや干渉なしに、トラブルシューティング、デバッグ、開発を完全に行うことができました。
これはあなたの状況にも役立つようです。実際のところ、特に実装が簡単なため、それが望ましい機能ではない状況を想像することはできません。
したがって、それを実装するために、構成設定は、クライアントとサーバーコードのそれぞれによって使用され、反対側との通信のためにインスタンス化する実装クラスを決定しました。すべての通信は、両側に2つの具体的な実装クラスを持つカスタムC#インターフェイスを介して行われました。1つのクラスは.NET Remotingを使用して通信を実装し、もう1つのクラスは直接インプロセスパススルー(直接呼び出し)として通信を実装しました。
.NET Remotingについて何も知らなかったのは1組のクラス(両側に1つずつ)だけだったので、分離は完全でした。ほとんどの場合、すべての開発者はリモート処理をオフにして作業しました。これは、より高速で簡単です。必要なとき、まれに、オンにしました(ほとんどの場合、私だけ、または誰かがトラブルシューティングのためにテスト/本番環境に接続したとき)。
ちなみに、私はリモーティングインターフェイスを非常にシンプルにしました:public Response execute(Request)
それ以外にも、上記のデバッガーの起動のヒントを使用しました。GUIスレッドへの影響に注意する必要があることに同意します。