TransferMode Enumeráció
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Azt jelzi, hogy egy csatorna streamelt vagy pufferelt módokat használ-e a kérés- és válaszüzenetek átviteléhez.
public enum class TransferMode
public enum TransferMode
type TransferMode =
Public Enum TransferMode
- Öröklődés
Mezők
| Name | Érték | Description |
|---|---|---|
| Buffered | 0 | A kérés- és válaszüzenetek is pufferelve vannak. |
| Streamed | 1 | A kérések és a válaszüzenetek is streamelve vannak. |
| StreamedRequest | 2 | A kérelemüzenet streamelve van, és a válaszüzenet pufferelve van. |
| StreamedResponse | 3 | A kérelemüzenet pufferelve van, és a válaszüzenet streamelve lesz. |
Példák
Az alábbi példa a TcpTransportBindingElement.TransferMode tulajdonságot kódon keresztül állítja be Streamed :
TcpTransportBindingElement transport = new TcpTransportBindingElement();
transport.TransferMode = TransferMode.Streamed;
BinaryMessageEncodingBindingElement encoder = new BinaryMessageEncodingBindingElement();
CustomBinding binding = new CustomBinding(encoder, transport);
Az alábbi példa a TcpTransportBindingElement.TransferMode tulajdonságot konfiguráción keresztül állítja be Streamed :
<customBinding>
<binding name="streamingBinding">
<binaryMessageEncoding />
<tcpTransport transferMode="Streamed" />
</binding>
</customBinding>
Megjegyzések
Windows kommunikációs alaprendszer (WCF) átvitelek két módot támogatnak az üzenetek átvitelére minden irányban:
A pufferelt átvitelek a teljes üzenetet egy memóriapufferben tartják, amíg az átvitel befejeződik.
A streamelt átvitelek csak pufferelik az üzenetfejléceket, és streamként teszik elérhetővé az üzenet törzsét, amelyből kisebb részek olvashatók egyszerre.
Az átviteli mód Streamed értékre állítása lehetővé teszi a kétirányú streamelt kommunikációt. Az átviteli mód beállítása a streamelési kommunikációra StreamedRequest , vagy StreamedResponse csak a megadott irányban engedélyezi a streamelést.
A streamelt átvitelek javíthatják a szolgáltatások méretezhetőségét azáltal, hogy szükségtelenné teszi a nagy memóriapufferek szükségességét. Az átvitt üzenetek méretétől függ, hogy az átviteli mód módosítása ténylegesen javítja-e a skálázhatóságot a gyakorlatban. A méretezhetőség javítása akkor lehet a legnyilvánvalóbb, ha a nagyméretű üzenetek pufferelt átvitel helyett streamelt üzeneteket használnak.
Alapértelmezés szerint a HTTP, a TCP/IP és az elnevezett csőátvitelek pufferelt üzenetátvitelt használnak. A rendszer által biztosított kötések értékeit TransferModeBasicHttpBindingNetTcpBindingNetNamedPipeBinding a rajtuk közzétett átviteli mód tulajdonságaival állíthatja be. A mód például a tulajdonság használatával állítható be az NetTcpBindingNetTcpBinding.TransferMode osztályon. A kötés konfigurációs szakaszában is beállítható.
Olyan kötések esetében, amelyek nem teszik elérhetővé az átviteli mód tulajdonságát, az átviteli mód beállítható az átvitel kötési elemére, és ez az elem hozzáadható egy egyéni kötéshez. Hozzon létre például egy tulajdonságot HttpTransportBindingElement , TransferMode és a tulajdonság használatával állítsa be az átviteli módot egy egyéni kötés létrehozásakor. Az átviteli mód az egyéni kötés konfigurációs szakaszában is beállítható.
A pufferelt vagy streamelt átvitelek használatára vonatkozó döntés a HTTP-átvitelek végpontjának helyi döntése. HTTP-átvitelek esetén az átviteli mód nem propagálja a kapcsolatot, sem a proxykiszolgálókat vagy más közvetítőket. Az átviteli mód beállítása nem jelenik meg a szolgáltatási szerződés leírásában. Miután proxyt hoz létre egy szolgáltatáshoz, szerkesztheti a konfigurációs fájlt a streamelt átvitelekkel használni kívánt szolgáltatások konfigurációs fájljában az átviteli mód beállításához. TCP- és nevesített csőátvitelek esetén az átviteli mód házirendi állításként propagálódik.
Streamed Az átviteli mód használata miatt a WCF-futtatókörnyezet bizonyos korlátozásokat kényszerít ki.
A streamelt átvitelen keresztüli műveletek legfeljebb egy bemeneti és/vagy egy kimeneti paraméterrel szerződéssel rendelkezhetnek a programozási modell rétegében. Ez a paraméter az üzenet teljes törzsének felel meg, és a felület altípusának vagy implementálásának MessageStream kell lennieIXmlSerializable. Egy művelet visszatérési értéke egyenértékű a kimeneti paraméterrel.
Egyes WCF-funkciók, például a Reliable Messaging és a SOAP üzenetszintű biztonsága az üzenetek átvitelhez való pufferelésével függenek. Ezeknek a funkcióknak a használata csökkentheti vagy kiküszöbölheti a streameléssel járó teljesítménybeli előnyöket. Streamelt átvitel biztonságossá tételéhez csak átviteli szintű biztonságot vagy vegyes módú biztonságot használjon, amely egyesíti WS-Security jogcímeket az átviteli biztonsággal.
A SOAP-fejlécek mindig pufferelve vannak, még akkor is, ha az átviteli mód be van állítva
Streamed. Az üzenet fejlécei nem léphetik túl a MaxBufferSize átviteli kvóta méretét, amely a különböző kötéseken és kötéselemeken jelenik meg.
Az átviteli mód BufferedStreamed módosítása a TCP natív csatornaalakzatát és a nevesített csőátviteleket is módosítja. Pufferelt átvitelek esetén a natív csatornaalakzat a .IDuplexSessionChannel Streamelt átvitel esetén a natív csatornák a IRequestChannel és a IReplyChannel. Ennek az a következménye, hogy a munkamenet-alapú szolgáltatási szerződések nem használhatók az átviteli streameléshez.