次の方法で共有


QStat サンプル:ビジネス ロジックを公開するには、COM オブジェクトをラップします。

QStat サンプルでは、COM オブジェクトへのアクセスをラップし、C++ を使用して .NET Framework クライアントに機能を公開する DLL の作成方法を示します。

セキュリティに関するメモセキュリティに関するメモ

このサンプル コードは概念を示すためのものであり、その概念に関連するコードのみを示しています。特定の環境について必ずしもセキュリティ要件を満たしていませんので、そのまま使用しないでください。セキュリティおよびエラー処理コードを追加して、プロジェクトをより安全かつ堅牢にすることをお勧めします。これらのサンプル コードは、現状有姿のままで提供されるものであり、一切保証されていません。

サンプルとそのインストール手順を取得するには

Visual Studio のサンプルにアクセスするには

  • [ヘルプ] メニューの [サンプル] をクリックします。

    既定では、これらのサンプルは drive:\Program Files\Microsoft Visual Studio 10.0\Samples\ にインストールされています。

  • このサンプルの最新版および他のサンプルの一覧については、MSDN Web サイト上で Visual Studio サンプル 」を参照してください。

サンプルのビルドと実行

サンプルをビルドするには

  1. Visual Studio IDE で、QStat.sln ソリューション ファイルを読み込みます。

  2. ソリューション エクスプローラーで、 ソリューションの QStat をマウスの右ボタンでクリックします。

  3. ショートカット メニューの [ソリューションのビルド] をクリックします。

サンプルを実行するには

  1. ソリューション エクスプローラーで、netClient プロジェクトをマウスの右ボタンでクリックします。

  2. メニューの [デバッグ、開始 クリックします。

クライアントが開始されると、ビジネス ロジックの呼び出しが行われていることを通知する一連のメッセージがコンソールに出力されます。

注意

コンポーネント間の対話をより詳しく理解するには、ブレークポイントを設定するか、[デバッグ] メニューの [ステップ イン] または [ステップ オーバー] を使用して、コードを 1 ステップずつ実行します。

[プロジェクトの説明]

このサンプルでは、ビジネス ロジック自体の実装ではなく、COM クライアントおよび .NET Framework クライアントのビジネス ロジックへのアクセスに重点が置かれています。そのため、このサンプルに示されたビジネス ロジックは、比較的簡単なものです。 実際に、このサンプルのビジネス ロジックは簡単な算術演算 (相乗平均、調和平均、二次平均の計算) を行い、結果をクライアントに返します。

プログラミングでは、ビジネス ロジックと、該当するビジネス ロジック (この例では COM) を公開するための構造を区別することをお勧めします。 ただし、このサンプルでは、使用する COM オブジェクト内にビジネス ロジックが直接実装され、COM オブジェクトを通じてアクセスする以外には、基になるビジネス ロジックにアクセスできないと仮定しています。

このサンプルでは、#import を通じて COM オブジェクトを使用するラッパー DLL を作成して、.NET Framework クライアントによって使用される .NET Framework クラスを公開しています。 これは、#import を通じて入手した COM スマート ポインターのデータ メンバーが含まれたネイティブ C++ クラス nativeMeanCalc を定義して行われます。 定義された .NET Framework クラスには、ネイティブ C++ クラスへのポインターがあります。 netMeanCalcは、.NET Framework クラスには、小道を目的の COM オブジェクトが完了する nativeMeanCalc オブジェクトへのポインターが含まれています。 netMeanCalc .NET Framework クライアントで消費されるパブリック クラスです。

以下の 2 つのクライアント プロジェクトがあります。

  • nativeClient は、ネイティブ C++ で実装された COM クライアントです。

  • netClient は、C++ の新しい構文を使用して作成されています。

クラスとキーワード

このサンプルでは、次のキーワードを使用します。

__gc; #using; #import; try; catch; _com_error; Console::WriteLine

参照

その他の技術情報

相互運用性のサンプル