2012-01-15 2 views
2

は、wcf dllにクライアントとサーバークラスをwrapしています。名前付きパイプコールバックに10秒かかりますか?

私のサーバーがコールバックを使用する場合、それが起こっている

何..それを得るために、私のクライアントのために10秒以上かかりますか?

は、最も単純なNetNamedPipeBindingエンドポイントしか持っていません。

多くのコードがありますので、ここに貼り付けるべきものがわかりません。

このような長い時間を引き起こす原因は何か。

EDIT: のみ最初のコールバックは10秒かかります。..

この後は、それが高速で動作します。

なぜですか?

+0

コンパイル後の最初のコールバックまたは再コンパイルせずに毎回の最初のコールバックは10秒かかりますか? – Regfor

+0

実行時に@regfor最初のコールバック。 – Nahum

+1

10秒間の測定方法(つまり、いつから)を正確に説明し、その間にクライアントとサービスが何をしているのかを説明してください。 –

答えて

0

何も助けません。私は偽のコール・デコレータを追加しました。システムが起動しているときに最初のコールを送信します。

0

サービスをどのようにホスティングしていますか?最初の呼び出しでは、起動に時間がかかるサービスを作成する必要があります。

デバッグ時に私はStudioのビルトインサービスホストを使用します。これは、それ自体を並べ替えるのに数秒かかることがよくあります。私はそれが10秒の心を取ることを見たことはないと思う。

2

同様の問題がありました。これは、私の場合には役立った:

NetNamedPipeSecurity security = new NetNamedPipeSecurity() { Mode = NetNamedPipeSecurityMode.None }; 

パスこのセキュリティオブジェクトバインディングの作成時に:

new NetNamedPipeBinding() { Security = security } 

をオリジナルのアイデアがhereからです。スレッドはTCPバインディングに関するものでしたが、最後に提示された解決策は私の場合でも名前付きパイプに役立つように見えました。

さらに簡単に行うことです。

new NetNamedPipeBinding(NetNamedPipeSecurityMode.None) 
1

誤って、最初のWCF要求のパフォーマンスを大幅に向上させる設定が見つかりました。時間は10秒以上から2秒以下になりました。サーバとクライアントの両方でストリーミングするためのTransferModeプロパティを結合

セット:

var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None); 
binding.TransferMode = TransferMode.Streamed; 

が続いAddServiceEndpointサーバ側へとのChannelFactoryコンストラクタクライアント側に結合を渡します。

関連する問題