TCP-aktiválás
A TCPActivation minta egy olyan szolgáltatás üzemeltetését mutatja be, amely a Windows Folyamataktiválási szolgáltatások (WAS) használatával aktivál egy olyan szolgáltatást, amely a net.tcp protokollon keresztül kommunikál. Ez a minta az első lépéseken alapul.
Feljegyzés
A minta telepítési eljárása és összeállítási utasításai a témakör végén találhatók.
A minta egy ügyfélkonzolprogramból (.exe) és egy, a WAS által aktivált feldolgozói folyamatban üzemeltetett szolgáltatáskódtárból (.dll) áll. Az ügyféltevékenység látható a konzolablakban.
A szolgáltatás megvalósít egy szerződést, amely egy kérés-válasz kommunikációs mintát határoz meg. A szerződést az ICalculator
interfész határozza meg, amely matematikai műveleteket (Hozzáadás, Kivonás, Szorzás és Osztás) tesz elérhetővé az alábbi mintakódban látható módon:
[ServiceContract(Namespace="http://Microsoft.ServiceModel.Samples")]
public interface ICalculator
{
[OperationContract]
double Add(double n1, double n2);
[OperationContract]
double Subtract(double n1, double n2);
[OperationContract]
double Multiply(double n1, double n2);
[OperationContract]
double Divide(double n1, double n2);
}
A szolgáltatás implementációja kiszámítja és visszaadja a megfelelő eredményt:
// Service class that implements the service contract.
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
return n1 + n2;
}
public double Subtract(double n1, double n2)
{
return n1 - n2;
}
public double Multiply(double n1, double n2)
{
return n1 * n2;
}
public double Divide(double n1, double n2)
{
return n1 / n2;
}
}
A minta a net.tcp kötés egy változatát használja, amely engedélyezi a TCP-portmegosztást, és a biztonság ki van kapcsolva. Ha biztonságos TCP-kötést szeretne használni, módosítsa a kiszolgáló biztonsági módját a kívánt beállításra, és futtassa újra a Svcutil.exe az ügyfélen egy frissítési ügyfélkonfigurációs fájl létrehozásához.
Az alábbi minta a szolgáltatás konfigurációját mutatja be:
<system.serviceModel>
<services>
<service name="Microsoft.ServiceModel.Samples.CalculatorService"
behaviorConfiguration="CalculatorServiceBehavior">
<!-- This endpoint is exposed at the base address provided by host: net.tcp://localhost/servicemodelsamples/service.svc -->
<endpoint binding="netTcpBinding" bindingConfiguration="PortSharingBinding"
contract="Microsoft.ServiceModel.Samples.ICalculator" />
<!-- the mex endpoint is exposed at net.tcp://localhost/servicemodelsamples/service.svc/mex -->
<endpoint address="mex"
binding="mexTcpBinding"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<netTcpBinding>
<binding name="PortSharingBinding" portSharingEnabled="true">
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->
<behaviors>
<serviceBehaviors>
<behavior name="CalculatorServiceBehavior">
<serviceMetadata />
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
Az ügyfél végpontja az alábbi mintakódban látható módon van konfigurálva:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="NetTcpBinding_ICalculator">
<security mode="None"/>
</binding>
</netTcpBinding>
</bindings>
<client>
<endpoint address="net.tcp://localhost/servicemodelsamples/service.svc"
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_ICalculator"
contract="Microsoft.ServiceModel.Samples.ICalculator" name="NetTcpBinding_ICalculator" />
</client>
</system.serviceModel>
A minta futtatásakor a műveleti kérelmek és a válaszok megjelennek az ügyfélkonzol ablakában. Nyomja le az ENTER billentyűt az ügyfélablakban az ügyfél leállításához.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
A minta beállítása, összeállítása és futtatása
Győződjön meg arról, hogy az IIS 7.0 telepítve van. A WAS aktiválásához IIS 7.0 szükséges.
Győződjön meg arról, hogy elvégezte a Windows Communication Foundation-minták egyszeri beállítási eljárását.
Emellett telepítenie kell a WCF nem HTTP-aktiválási összetevőit:
A Start menüben válassza a Vezérlőpult.
Válassza a Programok és szolgáltatások lehetőséget.
Kattintson a Windows-összetevők be- és kikapcsolása gombra.
Bontsa ki a Microsoft .NET-keretrendszer 3.0 csomópontot, és ellenőrizze a Windows Communication Foundation nem HTTP aktiválási funkcióját.
Konfigurálja a WAS-t a TCP-aktiválás támogatásához.
A következő két lépés a mintakönyvtárban található AddNetTcpSiteBinding.cmd nevű kötegfájlban van implementálva.
A net.tcp aktiválás támogatásához az alapértelmezett webhelyet először egy net.tcp-porthoz kell kötni. Ez az Internet Information Services 7.0 (IIS) felügyeleti eszközkészlettel telepített Appcmd.exe használatával végezhető el. Rendszergazdai szintű parancssorból futtassa a következő parancsot:
%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" -+bindings.[protocol='net.tcp',bindingInformation='808:*']
Tipp.
Ez a parancs egyetlen sornyi szöveg. Ez a parancs egy net.tcp-helykötést ad hozzá az alapértelmezett webhelyhez, amely a 808-ás TCP-portot figyeli, bármilyen gazdagépnévvel.
Bár a webhelyen belüli összes alkalmazás közös net.tcp-kötéssel rendelkezik, minden alkalmazás egyenként engedélyezheti a net.tcp-támogatást. Ha engedélyezni szeretné a net.tcp protokollt a /servicemodelsamples alkalmazáshoz, futtassa a következő parancsot egy rendszergazdai szintű parancssorból:
%windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/servicemodelsamples" /enabledProtocols:http,net.tcp
Feljegyzés
Ez a parancs egyetlen sornyi szöveg. Ez a parancs lehetővé teszi, hogy a /servicemodelsamples alkalmazás mindkét
http://localhost/servicemodelsamples
ésnet.tcp://localhost/servicemodelsamples
.
A megoldás C# vagy Visual Basic .NET kiadásának létrehozásához kövesse a Windows Communication Foundation-minták készítéséhez szükséges utasításokat.
Ha a mintát egy- vagy számítógépközi konfigurációban szeretné futtatni, kövesse a Windows Communication Foundation-minták futtatásával kapcsolatos utasításokat.
Távolítsa el a mintához hozzáadott net.tcp-helykötést.
Az alábbi két lépést a mintakönyvtárban található RemoveNetTcpSiteBinding.cmd nevű kötegfájlban implementáljuk.
Távolítsa el a net.tcp-t az engedélyezett protokollok listájából a következő parancs rendszergazdai szintű parancssorból való futtatásával:
%windir%\system32\inetsrv\appcmd.exe set app "Default Web Site/servicemodelsamples" /enabledProtocols:http
Feljegyzés
Ezt a parancsot egyetlen szövegsorként kell megadni.
Távolítsa el a net.tcp-hely kötését a következő parancs rendszergazdai szintű parancssorból való futtatásával:
%windir%\system32\inetsrv\appcmd.exe set site "Default Web Site" --bindings.[protocol='net.tcp',bindingInformation='808:*']
Feljegyzés
Ezt a parancsot egyetlen szövegsorként kell begépelni.