.NET Remoting は、2002 年に.NET Frameworkのバージョン 1.0 でリリースされた、プロセス間通信用のMicrosoft アプリケーション プログラミング インターフェイス(API)です。これは、1990 年に16 ビットWindows用の最初のバージョンのObject Linking and Embedding (OLE)から始まった一連の Microsoft テクノロジの 1 つです。これらのテクノロジの開発における中間段階としては、1993 年にリリースされ、1995 年に COM-95 として更新されたComponent Object Model (COM)、1997 年にリリースされ ( ActiveXに名前が変更された) Distributed Component Object Model (DCOM) 、および 2000 年にリリースされた COM+ とそのMicrosoft Transaction Server (MTS) があります。[1]現在は、 .NET Framework 3.0の一部であるWindows Communication Foundation (WCF)に置き換えられています。
.NET Remoting は、 Common Object Request Broker Architecture (CORBA) やJava のリモート メソッド呼び出し(RMI)などの類似のテクノロジやファミリー メンバーと同様に複雑ですが、その本質は単純です。オペレーティング システムとネットワーク エージェントの支援により、クライアント プロセスはサーバー プロセスにメッセージを送信し、応答を受け取ります。[2] [3]
概要
.NET Remoting を使用すると、アプリケーションはオブジェクト(リモート可能オブジェクト)をリモート境界を越えて利用できるようになります。リモート境界には、異なるアプリケーションドメイン、プロセス、さらにはネットワークで接続された異なるコンピュータも含まれます。[4] .NET Remoting ランタイムは、サーバー アプリケーションのアプリケーションドメイン内のオブジェクトへの要求のリスナーをホストします。クライアント側では、リモート可能オブジェクトへの要求は、TCPストリーム、HTTPストリーム、名前付きパイプChannelなどの実際のトランスポート モードをカプセル化するオブジェクトを介して、 .NET Remoting ランタイムによってプロキシされます。その結果、適切なオブジェクトをインスタンス化することで、.NET Remoting アプリケーションは、アプリケーションを再コンパイルせずにさまざまな通信プロトコルをサポートするようにすることができます。ランタイム自体は、クライアントとサーバーのアプリケーションドメインにわたるオブジェクトのシリアル化とマーシャリングの動作を管理します。 [4]Channel
.NET リモート処理では、リモート可能オブジェクトの参照がクライアント アプリケーションで利用できるようになります。クライアント アプリケーションは、リモート可能オブジェクトをローカル オブジェクトであるかのようにインスタンス化して使用します。[4]ただし、実際のコード実行はサーバー側で行われます。リモート可能オブジェクトは、アクティベーションURLによって識別され、URL への接続によってインスタンス化されます。[5]オブジェクトのリスナーは、サーバーがリモート可能オブジェクトへの接続に使用されるチャネルを登録するときに、リモート処理ランタイムによって作成されます。クライアント側では、リモート処理インフラストラクチャによって、proxyリモート可能オブジェクトの疑似インスタンス化として機能するが作成されます。これは、リモート可能オブジェクトの機能を実装するものではなく、同様のインターフェイスを提供します。そのため、リモート処理インフラストラクチャでは、リモート可能オブジェクトのパブリック インターフェイスを事前に認識しておく必要があります。オブジェクトに対して行われたメソッド呼び出しは、メソッドの ID や渡されたパラメータを含め、すべてバイト ストリームにシリアル化さChannelれ、チャネルのトランスポート シンクに書き込むことによって、通信プロトコルに依存した方法でサーバー側の受信プロキシ オブジェクトに転送されます ("マーシャリング")。[5]サーバー側では、プロキシがシンクからストリームを読み取り、クライアントに代わってリモート可能オブジェクトを呼び出します。結果はシリアル化され、シンクを介してクライアントに転送されます。クライアントでは、プロキシが結果を読み取り、呼び出し元のアプリケーションに渡します。[5]リモート可能オブジェクトが何らかのサービスのためにクライアント オブジェクトにコールバックする必要がある場合、クライアント アプリケーションはそれをリモート可能としてマークし、リモート ランタイムにリスナーをホストさせる必要があります。[5]サーバーは別のチャネルを介して接続することも、基礎となる接続が双方向通信をサポートしている場合は既存のチャネルを介して接続することもできます。[5]チャネルは、異なる異種トランスポートを持つ可能性のある、複数の異なるチャネル オブジェクトで構成できます。したがって、リモート処理は、インターネットを含む異種ネットワークの相互接続によって分離されたシステム間でも機能します。[5] 型の安全性は、 CTSと .NET リモート処理ランタイムによって強制されます。リモート メソッド呼び出しは本質的に同期的です。非同期呼び出しは、スレッド ライブラリを使用して実装できます。認証とアクセス制御は、カスタム チャネルを使用するか、 IISでリモート可能なオブジェクトをホストしてから IIS 認証システムを使用することによって、クライアントに実装できます。[6]
参考文献
- ^ ソフトウェア技術ロードマップ (2001)。「コンポーネント オブジェクト モデルと関連機能」。カーネギーメロン ソフトウェア エンジニアリング研究所。2008 年 5 月 15 日時点のオリジナルからのアーカイブ。
- ^ McLean, Scott; Naftel, James; Kim, Williams (2002). Microsoft .NET Remoting . Microsoft Press. ISBN 9780585476445。
- ^ インゴ・ランマー;シュプスタ、マリオ (2005)。高度な .NET リモーティング。アプレス。ISBN 9781590594179。
- ^ abc 「.NET リモート処理の概要」 。2007年 10 月 23 日閲覧。
- ^ abcdef 「.NET リモート処理アーキテクチャ」。2007年 10 月 23 日閲覧。
- ^ 「セキュリティ」。MSDN。2006年 10 月 12 日。2007年 10 月 23 日閲覧。
外部リンク
- 公式サイト
- .NET リモート処理から WCF への移行
