2012-01-30 21 views
0

現在、WCFサービスを介してプログラムの一部の機能を公開しています。ただし、WCFサービスは、アプリケーションとまったく同じことを実行する同じタスクを実行するのに約3倍の時間がかかります。WCFサービスがWindowsアプリケーションと比較して遅い

この関数はDLLで利用できます。 WCFソリューションとアプリケーションソリューションを作成して、これらの2つを速度で比較しました。このテストに含まれる他のコード/機能はありません。ここで

は両方で使用されているコード(アプリケーションとWCF)である:

public String time(string file) 
{ 
    DateTime start = DateTime.Now; 
    FunctionCall(Params); 
    return String.Format("Time: {0}", DateTime.Now - start); 
} 

WCFの設定ファイルは、Visual Studioで、デフォルトでは、2010年

生成一つですアプリケーションの実行には約3秒かかり、WCFは約8秒かかります。 WCFサービスでは若干のオーバーヘッドが発生する可能性があるので、Webサービスに変更して同じテストを行いましたが、結果は同じでした。 WCFに対して行われたすべての呼び出しは、同じ3倍の要素を提供します。これは最初の呼び出しではありません。

Windowsアプリケーションと比較して、WCFサービスがdllを呼び出す方法にこのような大きな違いが生じる原因は何ですか?

ありがとうございました。

編集:

サービスは機能はテキストのみのファイルを解析しているIIS 7.5(Windows Server 2008のR2) 上で実行されています。

問題は、WCFが要求をどのように処理するかではなく、関数をどのように呼び出すかで問題になります。

クライアント - WCFコミュニケーション

Client Request--> WCF : Fast (~25ms) 
WCF call --> Function : Slow (~8s) 
WCF Respond --> Client: Fast (~25ms) 

Windowsアプリケーション

Application -->Function : Medium(~3s) 

はなぜそれを呼び出しているWCFのときFunctionCall遅いですか?それは同じdllと同じコードですが、それは同じ速度で実行すべきではありませんか?

+2

あなたの質問は、DLLが何をしているのか、あなたのWCFサービスがどのようにホストされているのかわからなければ答えられません。 – Yahia

+1

'FunctionCall(Params)'とは何ですか? –

+1

最初の手順でwcf診断プログラムを有効にします。 – rerun

答えて

0

wcfサービスに関する情報を追加する必要があります。特にInstanceContextMode - PerSession、PerCallまたはSingleについてです。 PerCallを使用すると、これはあなたが見逃している秒数になります。

関連する問題