2011. október 6., csütörtök

Az IIS 7.0 és a net.tcp protokoll esküvője

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:
  • 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)
Features/Add/
  • .NET Framework Features/ alatta mindegyik, még a WCF Activation alatti két alpont is!!!
  • Windows Process Activation Service/ alatta mindegyik
Ha a .net 4.0 hamarabb volt a gépen, mint az IIS (amit a fentiekben telepítettünk), akkor kell kicsit varázsolni, hogy a .NET 4.0-es webalkalmazások működjenek: admin command line-ből adjuk ki: %windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -i
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:
  • Server manager-ben: Features/.NET framework features/WCF Activation/Non-http activation fel van telepítve
  • Services-ben: net.tpc Listener Adapter fut-e?
Ezután próbálkozhatunk a beállításokkal.
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