0

大きなSilverlightアプリで頻繁に呼び出されるサービスがたくさんある状況にあります。いくつかの非常に軽いテストの結果、物事がすぐに這うように遅くなっていることがわかりました。たくさんの通話からのデータがたくさんあるので、サービスからだと思います。

呼び出しの数を減らしたいのですが、ゼロから完全に再設計することを除いて、これは現在部分的にしか可能ではありません。

私のすべてのサービスは、サービス動作でPerCallを使用するように設定されており、これが私の構成です

                <services>
        <service name="MyServices.Service">
            <endpoint address="" binding="basicHttpBinding" bindingConfiguration="LargeBuffer" contract="MyServices.Interface.Service" />
        </service>
    </services>
    <bindings>
        <basicHttpBinding>
            <binding 
      name="LargeBuffer" 
      closeTimeout="00:10:00" 
      openTimeout="00:10:00" 
      receiveTimeout="00:10:00" 
      sendTimeout="00:10:00" 
      maxBufferSize="2147483647" 
      maxReceivedMessageSize="2147483647"
      >
      <security mode="None">
        <transport clientCredentialType="None" />
      </security>
                <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
            </binding>
        </basicHttpBinding>
    </bindings>

これらのサービスの多くは大きなバッファバインディングを必要としませんが、それが私のパフォーマンスに影響を与える可能性がありますか?

編集

通話自体は効率的に実行されていますが、数百のリクエストが届くとすぐに問題が発生します

4

1 に答える 1

1

パフォーマンスが非常に重要な場合、FastInfosetエンコーディングが役立つことがわかりました。非常に優れたnoemaxによる商用実装があります(無料トライアルはありますが無料ではありません)。

http://www.noemax.com/products/wcfx/index.html

また、非常に効率的に適切な圧縮を行うことができます。

免責事項-私はWindowsでのみ使用し、Silverlightでは使用しませんでした。ただし、Silverlightをサポートしていると主張しています。

于 2013-03-02T19:33:40.780 に答える