Protocol BufferとZeroc-Iceの簡単な探求

3051 ワード

データ構造といえば、多くのプログラマーが最初に思い出したのはJSONとXMLで、それからなくなったと思います.実はそうではありません.JSONとXMLだけを思い出すと、視野が狭すぎることを意味します.JSONやXMLよりも比較的高度なデータ構造についてお話しします.
データ構造については、まずRPCという用語を理解しなければなりません.彼のフルコースはRemote Procedure Call Protocolです.リモート・プロシージャ呼び出しプロトコルと訳すことができます.これは、最下位のネットワーク技術を理解する必要がなく、ネットワークを介してリモートコンピュータプログラムからサービスを要求するプロトコルです.RPCプロトコルは、通信プログラム間で情報データを搬送するTCPまたはUDPのようないくつかの伝送プロトコルの存在を仮定する.OSIネットワーク通信モデルでは,RPCは伝送層と応用層にまたがっている.RPCにより、ネットワーク分散型マルチプログラムを含むアプリケーションの開発が容易になります.RPCはクライアント/サーバモードを採用している.リクエスト・プログラムはクライアントであり、サービス・プロバイダはサーバです.まず、クライアント呼び出しプロセスは、プロセスパラメータのある呼び出し情報をサービスプロセスに送信し、応答情報を待つ.サーバ側では、呼び出し情報が到着するまでプロセスはスリープ状態を維持します.1つの呼び出し情報が到着すると、サーバはプロセスパラメータを取得し、結果を計算し、応答情報を送信し、次の呼び出し情報を待つ.最後に、クライアント呼び出しプロセスは応答情報を受信し、プロセス結果を取得し、呼び出し実行を続行する.
次にProtocol Bufferについてお話しします.それはGoogle出品の軽量で効率的な構造化データストレージフォーマットで、性能はJson、XMLより本当に強いです!ひどい!多い!具体的には、以下の点を見てみましょう.
1、性能方面:
  • 体積が小さい:シーケンス化後、データサイズは元の3倍程度に縮小することができる.
  • シーケンス化速度が速い:XMLとJSONより約20-100倍速い;
  • 伝送速度が速い:これは主にデータ体積が小さいためである.

  • 2、使用方面:
  • の使用は簡単です.シーケンス化と逆シーケンス化はプロトコルによって自動的に完了します.
  • メンテナンスコストが低い:マルチプラットフォームにはオブジェクトプロトコルファイルが1セットしか必要ありません.
  • 互換性が良い:古いデータフォーマットを破壊する必要がなく、直接データフォーマットを更新することができる.
  • は暗号化性が良い:伝送過程はHTTPを使っても、パケットを捕まえられるのはバイトデータを捕まえるだけである.

  • 3、使用範囲:
    プラットフォーム間、言語間、拡張性に優れている
    もちろん、彼にも特定の欠点がある.例えば汎用性が悪い場合、JSONとXMLの2つのデータフォーマットはほとんど汎用であってもよいが、ProtocolBufferによって組織されたデータは特定の環境にのみ適している.また,自己解釈性能が劣り,伝送中はシーケンス化されたバイトデータであり,可読性はほぼゼロであり,逆シーケンス化されたもののみである.
    そしてZeroc-Iceについてお話しします.IceのフルネームはインターネットCommunications Engineです.IceはSOCKET通信技術に類似している.Iceは各プロセス間の通信を実現してデータを伝送し、分散アプリケーションを最小限の代価で構築することができます.Iceは、すべての下位レベルのネットワークインタフェースのプログラミングを処理するために、論理を適用する開発に専念させ、ネットワーク接続を開く、ネットワークデータ伝送のシーケンス化と逆シーケンス化、接続に失敗した試行回数などの詳細を考慮する必要はありません.Iceはオブジェクト向けミドルウェアであり、オブジェクト向けClient-Severアプリケーションの構築にツール、API、ライブラリサポートを提供しています.Iceアプリケーションは異機種プラットフォーム環境で使用するのに適しています.お客様とサーバは異なるプログラミング言語を採用することができ、異なるオペレーティングシステムとマシンアーキテクチャで実行することができ、多くのネットワーク技術を使用して通信することができます.導入環境にかかわらず、これらのアプリケーションのソースコードは移植可能です.IceはRPC通信分野で最も安定で、強大で、高性能で、プラットフォームをまたいで、多言語サポートのベテランオープンソースミドルウェアであり、特に現在のインターネット分野で1つのプラットフォームに多種類の開発言語プログラミングが存在し、ウェブサイトとAppアプリケーションが併存する複雑な大型プロジェクトに適している.Iceは言語とプラットフォームの中立、効率的な通信を実現し、特定のプログラミング言語に関係のない中立言語SlIce(Specification Language For Ice)によってサービスのインタフェースを記述し、それによって対象インタフェースとその実現を分離する目的を達成する.
  • Iceは、TCP/IPとしても、UDPとしても、最下位の伝送メカニズムとして使用できるRPCプロトコルを提供する.また、IceはSSLを伝送メカニズムとして使用し、お客様とサーバ間のすべての通信を暗号化することができます. 
  • Iceプロトコルは、メッセージタイプ、メッセージサイズ、使用するプロトコル、および符号化バージョン
  • のような詳細を含む、要求および回答タイプなどのメッセージタイプのヘッダを定義する.
  • Iceはオンラインでの圧縮もサポートしています.構成パラメータを設定することで、すべてのネットワーク通信データを圧縮し、帯域幅を節約できます.この機能は、アプリケーションがお客様とサーバ間で大量のデータを交換する場合に役立ちます. 
  • Iceプロトコルは、メッセージを転送するには、メッセージ内部の詳細を知る必要がないため、効率的なイベント転送メカニズムを構築するのに適しています.これは、メッセージスイッチがメッセージを任意のデコーディングまたは再編成する必要がないことを意味する.メッセージは、単純に不透明なバイトバッファとして
  • に転送することができる.
  • Iceプロトコルはまた、双方向の操作を構築するためにも適しています.サーバが、クライアントが提供したコールバックオブジェクトにメッセージを送信したい場合、このコールバックオブジェクトは、クライアントが作成した接続を介してサーバに送信することができます.お客様がファイアウォールの後ろにいる場合、接続は外出しかできず、アクセスできないため、この特性は特に重要です.