Heim  >  Artikel  >  Backend-Entwicklung  >  Richtige Einstellungen zur Implementierung von WCF zur Übertragung großer Datenmengen

Richtige Einstellungen zur Implementierung von WCF zur Übertragung großer Datenmengen

巴扎黑
巴扎黑Original
2016-12-20 09:20:191817Durchsuche

WCF kann uns bei der Übermittlung von Daten helfen. Aber ist schon einmal jemand auf die Notwendigkeit einer Datenübertragung mit großer Kapazität gestoßen? Solange die richtigen Einstellungen vorgenommen werden, kann WCF große Datenmengen übertragen.

Bei der Übertragung großer Datenmengen (>65535B) vom Client zum WCF-Server wurde festgestellt, dass das Programm direkt von BeginInvoke of Reference zu EndInvoke sprang, ohne die eigentliche Logik des Dienstes auf dem Server einzugeben Es besteht der Verdacht, dass es sich um eine Datenüberschreitung handelt.

Das Problem ist, dass die Daten, die ich tatsächlich gesendet habe, nur vom WCF-Server empfangen wurden. Es gibt keinen großen Unterschied in der Menge der eingehenden und ausgehenden Daten.

Dann habe ich festgestellt, dass der Client und der Server tatsächlich unterschiedliche Konfigurationen verwenden. Für den Client gibt es eine solche Einstellung im Abschnitt „system.serviceModel“ in der Datei „ServiceReferences.ClientConfig“, die automatisch generiert wird, wenn „ServiceReference“ hinzugefügt wird, um die WCF-Übertragung zu implementieren Big Data:

< binding>
< basicHttpBinding> ; /basicHttpBinding>
< /bindings> /Service/WcfService.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_WcfService"
contract="WcfServiceReference.WcfService"
name="BasicHttpBinding_WcfService" />< /client>
Die maximale Anzahl an Cache-Bytes und die maximale Anzahl akzeptierter Bytes werden im Binding angegeben, was der Größe von 2G entspricht! Sofern nicht gleich eine ganze TV-Serie ausgestrahlt wird, reicht es in der Regel aus.

Auf der Serverseite ist in der Datei Web.config der Abschnitt „Bindings“ leer und der Dienst gibt das Attribut „bindingConfiguration“ nicht an, sodass die Standardgröße 65535 verwendet wird.

Das Problem ist gefunden und es ist einfacher, das Problem der WCF-Übertragung großer Datenmengen zu lösen:

Fügen Sie im Abschnitt „Bindungen“ eine neue Bindungseinstellung hinzu und geben Sie die maximal akzeptierten Daten an:

< bindings>
< binding name="LargeDataTransferServicesBinding"
messageEncoding="Text" transferMode="Streamed" "00:10:00" /> 🎜>name="Server.Service.WcfService"> >contract="Server.Service.WcfService"
< endpoint address="mex" binding=
"mexHttpBinding" context="IMetadataExchange" /> >Auf diese Weise können Sie genügend Daten vom Client Big Data senden.

P.S.:

.net kann standardmäßig nur 4 Millionen Dateien übertragen. Auch wenn die Konfiguration an beiden Enden von Wcf festgelegt ist, kann das Limit von .net immer noch nicht überschritten werden Wenn Sie große Dateien übertragen möchten, müssen Sie auch

< httpRuntimemaxRequestLength="102400" /> hinzufügen. Die Einheit hier ist KB im Abschnitt System.Web, damit Sie 100 Millionen Dateien übertragen können. Dadurch wird das Problem der WCF-Übertragungsprobleme mit Datenproblemen vollständig gelöst. Natürlich ist es bei einer so großen Datei am besten, sie in Segmenten zu übertragen.

.net kann standardmäßig nur 4 Millionen Dateien übertragen. Obwohl die Konfiguration an beiden Enden von Wcf festgelegt ist, kann das Limit von .net immer noch nicht überschritten werden. Wenn Sie also große Dateien übertragen möchten, müssen Sie dies tun um es im Abschnitt System.Web festzulegen. Hinzufügen von

< httpRuntimemaxRequestLength="102400" /> Die Einheit hier ist KB, sodass 100 Millionen Dateien übertragen werden können, was das Problem von WCF vollständig löst Übertragung großer Datenmengen. Natürlich ist es bei einer so großen Datei am besten, sie in Segmenten zu übertragen.

Es wird empfohlen, keine zu großen Datenmengen zu übertragen, da dies zu einer Überlastung Ihres Netzwerks führen kann.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:.net-NamespaceNächster Artikel:.net-Namespace