CLRのホスティングとClrCreateManagedInstanceの使用-利点は何ですか?
解決
通常、CLRのホストは、マネージコードとWin32を相互運用するために行うことではありません。通常、相互運用には3つの方法があります。
- Runtime Callable Wrapper(RCW)-.NETからCOMオブジェクトを呼び出す
- COM呼び出し可能ラッパー(CCW)-.NETオブジェクトをCOMオブジェクトとして表示する
- P / Invoke
これらは、.NETの最初のバージョンからサポートされています。 CLRをホストする全体のポイントは、アンマネージアプリケーション内に.NETコードを深く埋め込むことです。たとえば、Win32上のApacheで.NETをホストして、.aspxページを実行できるモジュールがあります。
同様に、SQL Serverは、マネージコードを使用して拡張ストアドプロシージャと関数を作成する方法を求めていました。以前は、これらをC / C ++で書くことができましたが、CLRをホストしていれば、実際に人々がC#でこれらを書くことを許可することができました。 CLRを状態に戻す作業は、タイムラインを本当に安全に埋め込むことができ、メモリやセキュリティの制御などが生まれました。 SQL Serverにはいくつかの深刻な安定性の要件があり、.NETを活用することはできません。
ホスティングAPIは.NET 1.xから2.xに大幅に変更されましたが、2.0 CLRが.NET 3.0、3.5などを経てより安定している
他のヒント
Microsoft SQL Serverは、セキュリティ、アセンブリの読み込み、メモリ管理、スレッド管理などを置き換えるために、これを広範囲に使用します。このテーマに関する良い本は、「Microsoft .NET Framework共通言語ランタイムのカスタマイズ」です。
レガシーアプリケーションがあり、サードパーティがアプリケーション内から.netの機能を使用できるようにしたい場合がありますが、特に アセンブリのロード元。 こちらは例です。