L'Host
Il servizio non è nulla senza Host. Parafrasando la celebre frase, si può dire che un servizio deve essere pubblicato da una qualunque applicazione, sia essa una WinForm, IIS, una applicazione console o un Servizio NT. Per questione di semplicità si utilizzata un Applicazione Console.
Configurazione
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service name="SMChat.Library.Service" behaviorConfiguration="Metadata"> <host> <baseAddresses> <add baseAddress="net.tcp://localhost:8001/chat"/> </baseAddresses> </host> <endpoint address="Service" binding="netTcpBinding" bindingConfiguration="DuplexBinding" contract="SMChat.Library.IChat" /> <endpoint address="" binding="mexTcpBinding" contract="IMetadataExchange"/> </service> </services> <bindings> <netTcpBinding> <binding name="DuplexBinding" > <security mode="None" /> </binding> </netTcpBinding> </bindings> <behaviors> <serviceBehaviors> <behavior name="Metadata"> <serviceMetadata /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
Il nodo services/service è il cuore del servizio in quanto contiene le sue informazioni riguardo all'interfaccia ed ai metodi di pubblicazione. L'attributo name specifica l'oggetto servizio, mentre behaviorConfiguration contiene il nome del behavior che permette di pubblicare i metadati all'esterno e permettere ai client di generare il proxy. Nella sezione services/service/host/baseAddresses viene indicato l'indirizzo base del servizio. Infine, la sezione services/service/endpoint contiene i peer ai quali il servizio risponde.
L'attributo address indica il suffisso finale del servizio, binding permette di specificare appunto il binding, bindingConfiguration permette di creare una configurazione personalizzata per il binding e contract specifica il contratto che i client devono invocare. Nel caso specifico ci sono due endpoint: il primo per il servizio ed il secondo per pubblicare i metadati. Nella sezione bindings/netTcpBinding/binding vengono impostate le opzioni per personalizzare il binding predefinito e poiché WCF è sicuro per default, viene eliminata la sicurezza dei messaggi, in quanto inutile in una chat. Si possono configurare anche altri aspetti, come l'affidabilità dei messaggi e la forzatura della loro ricezione nello stesso ordine di invio. (ReliableMessaging).
Il codice
Il codice necessario per ospitare un servizio WCF è quanto di più semplice esista al mondo. Basta infatti istanziare un oggetto di tipo ServiceHost passando in input il tipo di servizio in quanto in base al tipo, vengono recuperate dalla classe tutte le informazioni di configurazione.
using (ServiceHost host = new ServiceHost(typeof(SMChat.Library.Service))) { host.Open(); Console.ReadKey(); host.Close(); }
Attenzione: Questo articolo contiene un allegato
Contenuti dell'articolo
- Pagina 1
- Pagina 2
- Pagina 5
- Pagina 6
- Le novità del .NET Framework 3.5 SP1 in Windows Presentation Foundation
- Introduzione a .NET Micro Framework
- Gestire transazioni miste con NTFS in Windows Server 2008
- Windows Presentation Foundation 3.5: 3D interattivo e le altre novità del framework
- Le novità di Communication e Workflow Foundation e la loro cooperazione nel .NET Framework 3.5
- .NET Framework 3.5 e Visual Studio 2008: cosa c'è di nuovo
- Gestione delle eccezioni in Windows Communication Foundation
- Sviluppare workflow sequenziali con WF
- WPF: dal DataBinding ai Template - Terza parte
- WPF: dal DataBinding ai Template - Seconda parte
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.






Difficoltà
Utilità
Stampa
Download


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
ciao Stefano, bell'articolo, molto interessante l'invocazione asincrona dei delegati sottoscritti all'evento.- C'é un motivo per cui non hai usato la ...
Continua »»» | Rispondi »»»