8

RPC通信用のWindowsプラットフォームでのC++(ネイティブ)のプログラミングを学びたいです。サーバー側とクライアント側の両方を学びたい。また、パフォーマンスやセキュリティなどの高度なトピックについても学びたいと思います。

読むのに良いおすすめの資料はありますか?

(ところで、私はいくつかグーグルで検索しましたが、それらはすべて短すぎるかCOMに関連しているので、COMなしで純粋なRPCプログラミングを学びたいです。C++でVSTS 2008を使用しています。)

4

6 に答える 6

10

RPC上のPlatformSDKサンプルから始めます。

  • ASYNCRPCは、非同期リモートプロシージャコールを使用するRPCアプリケーションの構造を示しています。また、通話の完了を通知するさまざまな方法についても説明します。
  • CLUUIDは、クライアントオブジェクトUUIDを使用して、クライアントがリモートプロシージャの複数の実装から選択できるようにする方法を示しています。
  • DATAディレクトリには4つのプログラムが含まれています。
    • DUNIONは、識別された(カプセル化されていない)ユニオンを示します。
    • INOUTは、[in]、[out]パラメーターを示します。
    • REPASはrepresent_as属性を示します。
    • XMITは、transmit_as属性を示します。
  • DYNEPTは、動的エンドポイントを介してサーバーへの接続を管理するクライアントアプリケーションを示します。
  • FILEREPディレクトリには、開発者が単純なファイルレプリケーションサービス、マルチユーザーファイルレプリケーションサービス、セキュリティ機能をサポートするサービス、およびRPC非同期パイプを使用するサービスを作成する方法を示す4つのサンプルが含まれています。
  • HANDLESディレクトリには、AUTO、CXHNDL、USRDEFの3つのプログラムが含まれています。これらのプログラムは、それぞれauto_handle、[context_handle]、および汎用(ユーザー定義)ハンドルを示します。
  • HELLOは、「Hello、world」のクライアント/サーバー実装です。
  • PICKLEディレクトリには2つのプログラムが含まれています。
    • PICKLPは、データプロシージャのシリアル化を示します。
    • PICKLTは、データ型のシリアル化を示します。どちらのプログラムも[encode]属性と[decode]属性を使用します。
  • PIPESは、パイプ型コンストラクターの使用法を示しています。
  • RPCSVCは、RPCを使用したサービスの実装を示します。
  • STROUTは、サーバーで2次元オブジェクト(ポインターの配列)にメモリーを割り当て、それを[out]のみのパラメーターとしてクライアントに戻す方法を示しています。次に、クライアントはメモリを解放します。この手法により、スタブは、返されるデータの量を事前に知らなくてもサーバーを呼び出すことができます。
于 2009-10-18T14:51:46.993 に答える
9

これを試して:

概要

テクニカルリファレンス-それが何であるか、そしてそれがどのように機能するかについても説明します

于 2009-10-18T17:31:19.540 に答える
4

なぜ「生の」RPCを学びたいのですか?多くの優れた高レベルのRPC実装があります。

  1. CORBAの実装
  2. グーグルのプロトコルバッファ
  3. 倹約
于 2009-10-18T16:19:37.703 に答える
3

あなたはおそらく3つの異なることを学ぶ必要があります:

  • C++プログラミング言語
  • RPC
  • 一部のC++RPCライブラリ
于 2009-10-18T14:22:03.833 に答える
2

RPC=="リモートプロシージャコール"

基本的に、2つのエンドポイント間の通信は、相互に論理関数呼び出しを行うエンドポイントの概念に基づいてモデル化するのが最適であるという考え方です。一般に、一方の側は何らかの方法でAPIを「公開」します(たとえば、SOAPを使用している場合、通常、応答する関数を列挙するWSDL(wizdelと発音)と呼ばれるファイルがあります...クライアントが最初にダウンロードしますWSDLを作成してから、利用可能なAPIを呼び出します)...最近では、利用可能なテクノロジーのほとんどすべてが、HTTPの上に特定のプロトコル(Webサービス、UPnP、RESTなど)を階層化します。これは通常、ユーザーがサーバーはWebサーバーの上に実装されます...

したがって、実装する必要があるのがクライアント側だけである場合は、おそらくすべてのHTTPニーズにlibcurlを使用できます...

于 2009-10-18T15:23:33.077 に答える
1

RCF、 Deltavsoft_LinkCodeProject_Linkをご覧ください

主な動作は、RCFが個別のIDL(インターフェイス定義言語)を使用しないことです。

于 2012-09-20T14:56:01.160 に答える