質問

Rサーバーがあります  (Rは統計分析で使用されるプログラミング言語です)基本的にスクリプトとcsvファイルを受け取り、一部のデータを処理し、結果をテキストとして返します。

.netクライアント(.Net Windows FormsまたはASP.Netの場合もあります)がRサーバーに接続し、スクリプトとCSVファイルを送信し、結果を取得できるように、Rサーバーでサービスを作成する必要があります。

利用可能なさまざまなバインディングに混乱しており、Web上の情報は、選択するものについてまばらで散在しているようです。

また、IISでサービスを実行するのが最善ですか、それとも個別の「コマンドライン」としてタイプリスナーサービス(後者はIISと比較するといようですが、IISで実行できるのに誰がこれを選択するのかわからない)

役に立ちましたか?

解決

個人的には、必要なものを提供する最も簡単なバインディングをお勧めします。私は非常に多くのWCF(非常に複雑なもの)を実行しましたが、BasicHttpBinding以外を使用する必要はありませんでした。これにより、非.NETクライアントとの最大限の互換性も実現し、MTOMなどを使用して効率的なバイナリ転送を行うことができます。

再ホスティング。実際、IISはクライアント/サーバーのセットアップで最も簡単です。 2つの特定の長所:

  • SSLを簡単に構成できます(つまり、IISを構成するだけで、WCFがそれを使用します)
  • 負荷分散が簡単(Webファームの負荷分散のみ)

(I 信じている BasicHttpProfileで実行されているWCFは、IIS圧縮[GZip / Deflate]セットアップも活用できますが、引用しないでください...)

(たとえば)長時間実行されるステートフルサーバーが必要な場合は、スタンドアロンホスト(通常はWindowsサービス経由)を使用することを選択できます。 IISには、(設計上)アプリプールをリサイクルするという習慣があります。これは、何かをメモリに保存している場合は良くありません。別の例は、高速の「最初のヒット」のために既に実行したい場合です。パフォーマンス(IIS / ASP.NETが起動するのを待つのではなく)。これらの両方をカバーする例としては、WF(ワークフロー)サーバーのホストがあります。

もう一度。この複雑さが必要ない場合は、最も単純なオプションであるIISでのホスティングを選択してください。

他のヒント

実際には多くのオプションがあります。

バインド

WCFから利用可能なバインディングは、一般的なシナリオ用のプロトコルのセットです。トランスポート、メッセージ、およびセキュリティ情報を指定します。

バインディングを選択するとき、必要な機能を見つける必要があります。 例えば次の方法が必要な場合があります

  • すべての人がサービスを使用できるようにしたくないため、クライアントを認証します。
  • データを暗号化する必要がある場合があります。
  • このサービスは、他のプラットフォームのクライアントと相互運用可能である必要があります。
  • メッセージのオーバーヘッドが問題になりつつあります。

クライアントが常にドットネットからのものであることがわかっている場合は、net tcpバインディングを利用できます。これは、basicHttpbindingよりも高速です。ただし、basicHttpBindingは相互運用可能なプロトコルであり、phpまたはjavaクライアントでも問題なく通信できます。

サービスの独自の要件を定義し、ニーズに合わせて既存のバインディングを探します。既存のバインディングがない場合は、カスタムバインディングと呼ばれる独自のバインディングを作成できます。異なるバインディングの機能を組み合わせることができます。一緒に目的を達成します。

ホスティング

IISはよりスケーラブルです。サービスが長時間実行デーモンプロセス(Windowsサービスまたはコンソールアプリ)でホストする必要のある状態を必要としない場合、サービスの圧縮と暗号化を簡単に有効にできるため、IISが選択されます。

バインディングの詳細

ブラウザ、つまりjavascript内でサービスを呼び出す場合 WebHttpBindingは、ドットネットで定義された優れたものです。 enbableWebScriptを使用して、サービスがJavaScriptのJSONを理解できるようにすることができます。

可用性

1つの特定のバインディングがすべての要件を満たすことができない場合、異なるエンドポイントの異なるバインディングで各サービスを公開できます。例えばhost / soap host / nettcp host / json

「Programming WCF Services」という本を参照することをお勧めします。ジュバル・ローウィ。

彼は、使用するバインディングの決定を支援するために、決定表を順を追って説明します。バインディングに関する彼の記事もここで見つけることができます

http://www.code-magazine.com/article .aspx?quickid = 0605051& page = 3

wrosの本WCF4から抜粋"これらすべての組み込みバインディングは、特定のシナリオで機能する標準に基づいて構築されていますが、間違ったものや効率の悪いものを選択しても機能します。それでは、あなたにとって最適なヒッチをどのように選択しますか?

WCF以外のアプリケーションとやり取りする必要がある場合、最も明白な決定事項です。サービスがWCFクライアントと通信する場合は、「net」で始まるバインドを使用できます。同じサービスに対して、異なるバインディングを使用する複数のエンドポイントを定義できることに注意してください。これにより、WCFクライアントのパフォーマンスの最適化を活用できますが、ASMXサービスとWS- *標準のサポートは引き続き提供されます。これらは、多くのクライアントが活用するさらなるセキュリティおよびその他の機能を提供しますf。

たとえば、WCFからWCFへの通信を確立する場合、バイナリエンコーディングのNetTcpBindingを選択すると、テキストエンコーディングのBasicHttpBindingの4倍または5倍の通信速度が得られます。

これらのWCFが提供するバインディングは、必要なほとんどの場合をカバーする必要があります:ただし、完全にneのバインディングを変更またはcréする必要がある場合、WCFはこれを非常に簡単に行うことができます"

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top