A lentieket (én még néhány másikat is) a facebook-ra kezdtem el felvinni, de inkább ide illik, ezért most ünnepélyesen átmásolom őket. A történet arról szól, hogyan telepítsünk fel egy IIS-t úgy, hogy futtasson net.tcp alapú WCF szolgáltatásokat is.
IIS telepítése
Start/Administrative Tools/Server manager: Roles/Add Roles/Web Server (IIS)
Roles/Web Server (IIS)/Add Role Services:
Ha még nincs fent a .NET 4.0 akkor most érdemes feltelepíteni.
- Application development/ASP.NET
- Management Tools/IIS Management Console (Az IIS server manager, később még sokat fogunk benne ügyködni)
- Security/Windows authentication (csak ha szeretnénk távolról deploy-olni a szerverre)
- Common HTTP features/Static Content (enélkül semmiféle statikus tartalom nem jelenik meg)
- .NET Framework Features/ alatta mindegyik, még a WCF Activation alatti két alpont is!!!
- Windows Process Activation Service/ alatta mindegyik
Ha még nincs fent a .NET 4.0 akkor most érdemes feltelepíteni.
A net.tcp engedélyezése az IIS alatt
A tesztek szerint a net.tcp alapú webszolgáltatások nagyjából kétszer gyorsabbak tudnak lenni a http alapú társaikhoz képest. Az életre keltésük viszont némi erőfeszítést igényel IIS alatt.
Mielőtt nekiesünk, győződjünk meg néhány dologról:
Az IIS manager-ben nyomjunk egy jobb klikket a Default Web Site-on (vagy ahová a net.tcp-s alkalmazásunkat fel szeretnénk tenni), Edit Bindings..., válasszuk ki a net.tcp-t, és Edit.
Válasszuk ki a net.tcp-t, és adjunk meg neki egy portot. Ha silverlight 4.0 alkalmazást szeretnénk rákötni, akkor a 4502-4534 terület használható. ha ez nem akadály, akkor tegyünk hozzá portokat ízlés szerint, én a 4520-at fogom használni példaként. Ennek beállításához a binding information-nál adjuk meg: 4520:*, close
Újabb jobb klikk a Default Web Site-en, Manage Web Site/Advanced Settings. Itt az enabled protocols-hoz kell hozzávennünk a net.tcp-t. Ehhez adjuk meg a http után vesszővel elválasztva, kisbetűvel: net.tcp.
A net.tcp protokoll engedélyezését végezzük el a szolgáltatásokat nyújtó webalkalmazáon is, és készen is vagyunk az IIS oldalon.
web.config beállítások
A webalkalmazásunk oldalán is van néhány dolog amit nem árt észben tartani:
Mielőtt nekiesünk, győződjünk meg néhány dologról:
- Server manager-ben: Features/.NET framework features/WCF Activation/Non-http activation fel van telepítve
- Services-ben: net.tpc Listener Adapter fut-e?
Az IIS manager-ben nyomjunk egy jobb klikket a Default Web Site-on (vagy ahová a net.tcp-s alkalmazásunkat fel szeretnénk tenni), Edit Bindings..., válasszuk ki a net.tcp-t, és Edit.
Válasszuk ki a net.tcp-t, és adjunk meg neki egy portot. Ha silverlight 4.0 alkalmazást szeretnénk rákötni, akkor a 4502-4534 terület használható. ha ez nem akadály, akkor tegyünk hozzá portokat ízlés szerint, én a 4520-at fogom használni példaként. Ennek beállításához a binding information-nál adjuk meg: 4520:*, close
Újabb jobb klikk a Default Web Site-en, Manage Web Site/Advanced Settings. Itt az enabled protocols-hoz kell hozzávennünk a net.tcp-t. Ehhez adjuk meg a http után vesszővel elválasztva, kisbetűvel: net.tcp.
A net.tcp protokoll engedélyezését végezzük el a szolgáltatásokat nyújtó webalkalmazáon is, és készen is vagyunk az IIS oldalon.
web.config beállítások
A webalkalmazásunk oldalán is van néhány dolog amit nem árt észben tartani:
- Ha IIS-re deploy-olunk, nem kell a <BaseAddresses> felsorolásban felvennünk a címet, mert az IIS fikarcnyit sem törődik vele. Ami azt illeti, még akár félrevezető is lehet a kollégáknak. Én inkább kihagynám
- Ha Silverlight-ból fogjuk hívni a net.tcp szolgáltatásunkat, ki kell kapcsolnunk a biztonságot, mivel az nincs a Silverlight oldalán megoldva. Fontoljuk meg, komoly biztonsági kockázatot jelenthet! Valahogy így kell kivitelezni:
<system.serviceModel>
<bindings>
<netTcpBinding>
<binding name="Unsecured">
<security mode="None" />
</binding>
</netTcpBinding>
</bindings>
<services>
<service name="myService">
<endpoint address=""
binding="netTcpBinding"
bindingConfiguration="Unsecured"
name="myServiceEndPoint"
contract="IMyService" />
</service>
</services>
</system.serviceModel>
Nincsenek megjegyzések:
Megjegyzés küldése