別のアプローチはありますか? はい - オブジェクトを配布しないでください。最もスケーラブルなアプローチは、オブジェクトを互いに分散させないことです。あるフレーバーのコードを「アプリ サーバー」にデプロイし、別のフレーバーのコードを「Web サーバー」にデプロイする理由を自問してみてください。これらの 2 つのレイヤー間で行われる通信は、分散されている場合、市内通話よりもはるかに (など) コストがかかります。
今日の 64 ビット サーバー、そのすべてのメモリ、ホットな CPU、および ASP.NET の優れたメモリ管理を使用して、ビジネス ロジックと DAL を ASPX ファイルと同じ物理マシンに配置してみませんか? なぜだめですか?
スケーリングが必要な場合は、サーバーを追加します。単純。
もちろん、配布するのには十分な理由があります。最も一般的な正当な理由は、所有権のドメインに関係しています。複数の軸に沿って、セキュリティ管理、さらには予算と管理にさえ関係しています。つまり、後者の場合、チームがビジネス ロジックの実行を担当し、別のチームが Web レイヤーの構築と実行を担当している場合、管理の独立性を確保するために、これら 2 つのことを分散させることが理にかなっている可能性があります。コンピュータ コードを配布する正当な理由のほとんどは、コードを使用または開発する人間の組織の構造に由来しています。
データベース アクセス レイヤーと同じ CLR VM とメモリ ヒープを共有する同じ CPU で Web ページを実行してはならない技術的な理由はありません。
ディストリビューションで何をするかに関係なく、レイヤー間の接続を定義する形式的ではないインターフェイスでシステムを構築することは賢明ではありません。正式なインターフェイスを維持する場合、分散型アプローチと同じ場所に配置されたアプローチのパフォーマンスと効率を測定することは問題ありません。