16

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

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

私は利用可能な多くの異なるバインディングに混乱しており、Web上の情報は、どれを選択するかについてまばら/散在しているようです。

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

4

4 に答える 4

10

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

再ホスティング; 実際、IIS はクライアント/サーバーのセットアップにとって最も単純です。2 つの特定の強み:

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

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

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

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

于 2008-10-26T09:53:37.803 に答える
8

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

バインディング

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

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

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

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

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

ホスティング

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

バインディングの詳細

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

可用性

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

于 2008-10-26T10:02:29.703 に答える
5

Juval Lowy による本「Programming WCF Services」を参照することをお勧めします。

彼は決定チャートを順を追って説明し、使用するバインディングを決定するのに役立ちます。バインディングに関する彼の記事もここで見つけることができます

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

于 2008-10-28T23:50:41.433 に答える
0

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

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

たとえば、WCF から WCF への通信を確立する場合、バイナリ エンコーディングを使用する NetTcpBinding を選択すると、テキスト エンコーディングを使用する BasicHttpBinding よりも 4 倍または 5 倍高速に通信できます。

これらの WCF 提供のバインディングは、必要なほとんどのケースをカバーするはずですが、完全に新しいバインディングを変更または作成する必要がある場合、WCF ではこれを非常に簡単に行うことができます。"

于 2012-02-22T11:22:22.043 に答える