私は .NET、C#、および WCF の初心者であり、大量のオブジェクト (オブジェクトの配列) のアップロードとダウンロードを可能にするメソッドを公開するサービスを作成しようとしています。WCF での大規模なファイル転送に関する多くの投稿を見てきましたが、大量のシリアル化可能なオブジェクトのアップロードとダウンロードだけに焦点を当てたものを見つけることができないようです。
WCF
許可されたバイト数やタイムアウト制限などについて web.config ファイルを「ハック」することができましたが、そのような送信を可能にするために、速度とメモリ使用量を改善するために実際に構成するより良い方法があるかどうか疑問に思っています。テスト結果に基づいて web.settings を構成したため (タイムアウト/バイト制限を超えた場合、非常に大きな数値で制限を増やすなど)、構成がまったく意味を成しているとは思えません。
次に、 binding などの実装オプションをいくつか見てきTransferMode = Streaming or MTOM
ましたが、それらが私のシナリオに適用されるかどうかはまったくわかりません。誰かが私を正しい方向に向けることができますか?
申し訳ありませんが、質問を十分に構成できていない可能性がありますが、アイデアをいただければ幸いです。
以下は私のweb.config設定です:
<system.web>
<httpRuntime maxRequestLength="409600000" executionTimeout="360000"/>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHTTP" closeTimeout="00:01:00" receiveTimeout="01:00:00"
sendTimeout="01:00:00" maxBufferSize="655360000" maxReceivedMessageSize="655360000"
messageEncoding="Text" />
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="ServiceBehavior" name="WebService.WebService">
<endpoint address="" behaviorConfiguration="BasicEndPoint" binding="basicHttpBinding"
bindingConfiguration="BasicHTTP" name="BasicHTTP" contract="WebService.IWebService" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="BasicEndPoint">
<dataContractSerializer maxItemsInObjectGraph="65536000" />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="204800000" />
</requestFiltering>
</security>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>