Megosztás a következőn keresztül:


Terheléselosztás

A Windows Communication Foundation (WCF) alkalmazások kapacitásának növelésének egyik módja, ha vertikálisan felskálázza őket egy elosztott terhelésű kiszolgálófarmba való üzembe helyezéssel. A WCF-alkalmazások terheléselosztása szabványos terheléselosztási technikákkal végezhető el, beleértve a szoftveres terheléselosztókat, például a Windows hálózati terheléselosztást, valamint a hardveralapú terheléselosztási berendezéseket.

A következő szakaszok a különböző rendszer által biztosított kötések használatával létrehozott WCF-alkalmazások terheléselosztásának szempontjait ismertetik.

Terheléselosztás az alapszintű HTTP-kötéssel

A terheléselosztás szempontjából a HTTP-hálózati forgalom más gyakori típusaitól (statikus HTML-tartalom, ASP.NET lapok vagy ASMX Web Services) eltérő WCF-alkalmazások BasicHttpBinding nem különböznek. A kötést használó WCF-csatornák eredendően állapot nélküliek, és a csatorna bezárásakor megszakítják a kapcsolatokat. Így a BasicHttpBinding meglévő HTTP-terheléselosztási technikák jól működnek.

Alapértelmezés szerint a BasicHttpBinding rendszer egy kapcsolati HTTP-fejlécet küld egy Keep-Alive értékkel rendelkező üzenetekben, amely lehetővé teszi, hogy az ügyfelek állandó kapcsolatokat létesíthessenek az őket támogató szolgáltatásokkal. Ez a konfiguráció megnövelt átviteli sebességet biztosít, mivel a korábban létrehozott kapcsolatok újra felhasználhatók a következő üzenetek ugyanazon kiszolgálóra való küldéséhez. A kapcsolat újrafelhasználása azonban azt eredményezheti, hogy az ügyfelek erősen kötődnek egy adott kiszolgálóhoz a terheléselosztási farmon belül, ami csökkenti a ciklikus időszeleteléses terheléselosztás hatékonyságát. Ha ez a viselkedés nem kívánatos, a HTTP Keep-Alive letiltható a kiszolgálón egy KeepAliveEnabled vagy felhasználó által definiált CustomBindingBindingtulajdonság használatával. Az alábbi példa bemutatja, hogyan teheti ezt meg konfigurációval.

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
  
 <system.serviceModel>  
  <services>  
   <service
     name="Microsoft.ServiceModel.Samples.CalculatorService"  
     behaviorConfiguration="CalculatorServiceBehavior">  
     <host>  
      <baseAddresses>  
       <add baseAddress="http://localhost:8000/servicemodelsamples/service"/>  
      </baseAddresses>  
     </host>  
    <!-- configure http endpoint, use base address provided by host  
         And the customBinding -->  
     <endpoint address=""  
           binding="customBinding"  
           bindingConfiguration="HttpBinding"
           contract="Microsoft.ServiceModel.Samples.ICalculator" />  
   </service>  
  </services>  
  
  <bindings>  
    <customBinding>  
  
    <!-- Configure a CustomBinding that disables keepAliveEnabled-->  
      <binding name="HttpBinding" keepAliveEnabled="False"/>  
  
    </customBinding>  
  </bindings>  
 </system.serviceModel>  
</configuration>  

A .NET-keretrendszer 4-ben bevezetett egyszerűsített konfigurációval ugyanez a viselkedés az alábbi egyszerűsített konfigurációval valósítható meg.

<?xml version="1.0" encoding="utf-8" ?>  
<configuration>  
 <system.serviceModel>  
    <protocolMapping>  
      <add scheme="http" binding="customBinding" />  
    </protocolMapping>  
    <bindings>  
      <customBinding>  
  
      <!-- Configure a CustomBinding that disables keepAliveEnabled-->  
        <binding keepAliveEnabled="False"/>  
  
      </customBinding>  
    </bindings>  
 </system.serviceModel>  
</configuration>  

Az alapértelmezett végpontokkal, kötésekkel és viselkedésekkel kapcsolatos további információkért lásd a WCF-szolgáltatások egyszerűsített konfigurációját és egyszerűsített konfigurációját.

Terheléselosztás a WSHttp-kötéssel és a WSDualHttp-kötéssel

WSHttpBinding A http-terheléselosztási technikákkal a terheléselosztás és a WSDualHttpBinding terheléselosztás is kiegyensúlyozható, feltéve, hogy az alapértelmezett kötéskonfiguráció számos módosítást végez.

  • Kapcsolja ki a biztonsági környezet létrehozását, vagy használjon állapotalapú biztonsági munkameneteket. A biztonsági környezet létrehozása kikapcsolható, ha a EstablishSecurityContext tulajdonságot a WSHttpBinding következőre falseállítja. Ha ön használ WSDualHttpBinding vagy biztonsági munkamenetekre van szükség, a biztonságos munkamenetekben leírtaknak megfelelően használhat állapotalapú biztonsági munkameneteket. Az állapotalapú biztonsági munkamenetek lehetővé teszik a szolgáltatás állapot nélküli állapotának megőrzését, mivel a rendszer minden kéréssel a védelmi biztonsági jogkivonat részeként továbbítja a biztonsági munkamenet összes állapotát. Az állapotalapú biztonsági munkamenet engedélyezéséhez egy CustomBinding vagy felhasználó által definiált Bindingmunkamenetet kell használnia, mivel a szükséges konfigurációs beállítások nem érhetők el a rendszer által biztosított WSHttpBinding és WSDualHttpBinding.

  • Ha kikapcsolja a biztonsági környezet létrehozását, a Szolgáltatás hitelesítő adatainak egyeztetését is ki kell kapcsolnia. A kikapcsolásához állítsa be a NegotiateServiceCredential tulajdonságot a WSHttpBinding következőre false: . A Szolgáltatás hitelesítő adatainak egyeztetésének letiltásához előfordulhat, hogy explicit módon meg kell adnia a végponti identitást az ügyfélen.

  • Ne használjon megbízható munkameneteket. Ez a funkció alapértelmezés szerint ki van kapcsolva.

A Net.TCP-kötés terheléselosztása

A NetTcpBinding terheléselosztás IP-rétegbeli terheléselosztási technikákkal kiegyensúlyozott lehet. A tcp-kapcsolatokat azonban alapértelmezés szerint a NetTcpBinding kapcsolat késésének csökkentése érdekében készletezi. Ez egy optimalizálás, amely zavarja a terheléselosztás alapvető mechanizmusát. A bérlet időkorlátjának optimalizálásához NetTcpBinding az elsődleges konfigurációs érték a Csatlakozás ionkészlet Gépház része. Csatlakozás készletezés hatására az ügyfélkapcsolatok a farm adott kiszolgálóihoz lesznek társítva. A kapcsolatok élettartamának növekedésével (a bérlet időtúllépési beállítása által szabályozott tényező) a farm különböző kiszolgálói közötti terheléselosztás kiegyensúlyozatlanná válik. Ennek eredményeként az átlagos hívási idő nő. A terheléselosztásos forgatókönyvek használatakor NetTcpBinding érdemes lehet csökkenteni a kötés által használt alapértelmezett bérletidőkorlátot. A 30 másodperces bérletidőkorlát ésszerű kiindulópont a terheléselosztásos forgatókönyvekhez, bár az optimális érték alkalmazásfüggő. A csatornabérlet időtúllépéséről és az egyéb szállítási kvótákról további információt a szállítási kvóták című témakörben talál.

A terheléselosztásos forgatókönyvekben a legjobb teljesítmény érdekében fontolja meg a (vagyTransportWithMessageCredentialTransport) használatát NetTcpSecurity .

Lásd még