Configurare il net.tcp binding in un servizio wcf

Wcf si basa sui modello ABC (Address, Binding, Contract) questo modello è estremamente flessibile e ci permette ad esempio di cambiare il binding, cioè il modo in cui i servizi  comunicano, senza modificare come sono fatti.

Esistono diversi tipi di bindig, il NetTcpBinding utilizza il protocollo di trasporto Tcp, i pacchetti sono compressi in binario a differenza del basicHttp o del wsHttp che sono in soap. Vediamo quindi come configurare un servizio che sfrutti il NetTcpBinding e come ospitarlo in IIS 7.5.

Per prima cosa vediamo come configurare il servizio wcf

<system.serviceModel>
  <services>
    <service name="MyService" behaviorConfiguration="MyServiceBehavior">
      <endpoint address="" binding="netTcpBinding" bindingConfiguration="MyTcpConfiguration" contract="IMyService"/>
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
    </service>
  </services>
  
  <bindings>
    <netTcpBinding>
      <binding name="MyTcpConfiguration">
        <security mode="None"/>
      </binding>
    </netTcpBinding>
  </bindings>
  
  <behaviors>
    <serviceBehaviors>
      <behavior name="MyServiceBehavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

IIS 7 permette di ospitare servizi che utilizzino il protocollo Tcp tramite Windows Process Activation Services.

Per prima cosa verifichiamo che sia installato nelle Feature il Non-HTTP Activation
image

Sul sito che conterrà il nostro servizio aggiungiamo un nuovo binding, come tipologia net.tcp e come binding information la porta ad esempio 809:*
image

All’interno della Application negli Advanced Settings aggiungiamo il novo protocollo supportato.
image

Per consumare il web service adiamo a specificare l’indirizzo del endpoint così

<endpoint address="net.tcp://server:809/MyService.svc"
    binding="netTcpBinding" 
    bindingConfiguration="MyBindingConfiguration"
    contract="IDocumentService" 
    name="MyService" />
Tag di Technorati: ,,

IIS Express e transferMode="Streamed"

IIS Express è un nuovo web server creato a partire da IIS 7.x ideale negli scenari di sviluppo. Si integra ottimamente in visual studio e va in qualche modo a sostituire ASP.NET Development Server (Cassini).

I vantaggi di questo nuovo web server sono innumerevoli:
- Leggero e semplice da installare (il pacchetto di installazione pesa meno di 4Mb)
- Non richiede un account amministrativo per funzionare
- Include tutte le funzionalità di IIS compreso SSL, URL Rewrite, Media Support, e i moduli aggiuntivi di IIS
- Supporta il modello di estendibilità di IIS e le configurazioni del web server nel web.config
- Può essere installato side by side con IIS e con ASP.NET Development Server
- Funziona sotto XP e si hanno le stesse funzionalità di IIS 7.x

Può essere scaricato del seguente indirizzo http://www.microsoft.com/downloads/en/details.aspx?FamilyID=abc59783-89de-4adc-b770-0a720bb21deb

Per iniziare ad utilizzarlo vi rimando a questo post dove viene introdotto
http://weblogs.asp.net/scottgu/archive/2010/06/28/introducing-iis-express.aspx

Questo altro post parla della integrazione di IIS Express con il Sp1 di Vs
http://weblogs.asp.net/scottgu/archive/2011/01/03/vs-2010-sp1-beta-and-iis-developer-express.aspx

Ritorniamo a noi una delle funzionalità che ora si possono utilizzare con IIS Express è la modalità di trasferimento Streamed, infatti Cassini supportava solamente il tranferMode Buffered per i servizi Wcf.

Streamed è consigliato negli scenari dove spostiamo grosse quantità di dati ad esempio file e quindi questa funzionalità ci aiuta durante la fase di sviluppo e di debug senza dover cambiare la configurazione.

Tag di Technorati: ,
«aprile»
domlunmarmergiovensab
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567