サーバーの IIS 7.5 でホストされている WCF サービスがあります。サービスで Entity Framework 5.0 を使用しました。
サービス参照を追加し、サイトにクライアントを作成して、ローカル システムからそのサービスを呼び出すと、応答を取得するのに約 40 秒かかります。ローカルにある同じサービスを呼び出してみましたが、ここでは 3 ~ 4 秒しかかかりません。
サーバー上のサービスへの参照をローカル システム上のサイトに追加すると、Web 構成に追加されたバインディングとエンドポイントは次のようになります。
<binding name="WSHttpBinding_IMyWCFService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:50:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="2147483647"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="2147483647"
maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00"
enabled="false" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="Windows" negotiateServiceCredential="true" />
</security>
</binding>
<endpoint address="https://<url>/MyWCFService.svc/soap"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IMyWCFService"
contract="MerchantService.IMyWCFService" name="WSHttpBinding_IMyWCFService" />
最初はEntityフレームワークの問題だと思いました。しかし、その後、エンティティ フレームワーク プロファイラーを使用してメソッドの実行時間を確認しました。1秒もかかりません。
また、サービスを呼び出すときに、追加するヘッダーを追加する必要があります。
それで、その40秒の時間がかかっているところ。また、起動が遅くなったり、最初だけ時間がかかったりすることもありません。いつもこれだけ時間がかかります。
ネットワーク速度がこの遅延の原因になる可能性があります。はいの場合、どの程度までですか?
サービスはリスト List を返します。リストを返すべきではないということは問題でしょうか。代替案は何ですか?
また、Entityフレームワークは、リクエストが来るたびにDBへの接続を確立し、データベースへの接続に時間がかかっているかどうかを確認します。それは可能ですか?
助けてください。ありがとう