Interoperabilità con WCF: invocare servizi da PHP e Flash

4 pagine in totale: <<Indietro 1 2 3 [4]

 
using System; 
using System.ServiceModel; 
using System.ServiceModel.Activation; 
 
namespace WinFXItalia.Services 
{ 
    public sealed class InlineWsdlServiceHostFactory : ServiceHostFactory 
    { 
        public override ServiceHostBase CreateServiceHost(string constructorString, Uri[] baseAddresses) 
        { 
            return base.CreateServiceHost(constructorString, baseAddresses); 
        } 
 
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses) 
        { 
            return new InlineWsdlServiceHost(serviceType, baseAddresses); 
        } 
    } 
} 

La nuova versione di WSDL

Una volta distribuito per essere "hostato" in Internet Information Services (IIS), un servizio WCF è raggiungibile tramite un URL corrispondente ad un file con estensione SVC (esempio: http://ServerName/MyService.svc). Il file SVC include l'intestazione @ServiceHost che generalmente permette di indicare il nome della classe che implementa il contratto esposto dal servizio e associato all'endpoint. In questo caso nella direttiva occorre specificare anche quale versione di ServiceHostFactory si vuole utilizzare. Indicando l'oggetto factory InlineWsdlServiceHostFactory, il service host creato è di tipo WinFXItalia.Services.InlineWsdlServiceHost; il suo metodo ApplyConfiguration aggiunge il behavior personalizzato di generazione del WSDL.

 
<%@ServiceHost language="C#" Service="WinFXItalia.Services.MyService" Factory="WinFXItalia.Services.InlineWsdlServiceHostFactory"%> 

A questo punto, richiedendo il WSDL, si ottiene una descrizione completa del servizio, priva dei tag <xsd:import>, pienamente compatibile con tecnologie come PHP e Flash.

 
<?xml version="1.0" encoding="utf-8"?> 
<wsdl:definitions name="MyService" targetNamespace="http://www.winfxitalia.com/Services/MyService/V1/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:tns="http://www.winfxitalia.com/Services/MyService/V1/" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex"> 
  <wsdl:types> 
    <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.winfxitalia.com/Services/MyService/V1/"> 
      <xsd:element name="HelloWorld"> 
        <xsd:complexType> 
          <xsd:sequence/> 
        </xsd:complexType> 
      </xsd:element> 
      <xsd:element name="HelloWorldResponse"> 
        <xsd:complexType> 
          <xsd:sequence> 
            <xsd:element minOccurs="0" name="HelloWorldResult" nillable="true" type="xsd:string"/> 
          </xsd:sequence> 
        </xsd:complexType> 
      </xsd:element> 
    </xsd:schema> 
 
    ...omissis... 
     
</wsdl:definitions> 

Conclusioni

L'estendibilità di WCF lo rende una tecnologia davvero appetibile, in grado di adattarsi alle diverse situazioni e di andare oltre i propri limiti legati all'implementazione di base. L'interoperabilità con applicazioni scritte in PHP o ActionScript è garantita proprio da questa caratteristica che permette di mantenere la compatibilità all'indietro, indispensabile per poter utilizzare i servizi WCF al posto dei servizi ASMX, sfruttando peraltro in modo completo il modello di programmazione offerto da Windows Communication Foundation con tutti i vantaggi del caso.

4 pagine in totale: <<Indietro 1 2 3 [4]

Contenuti dell'articolo

Commenti

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Segnala su:  Facebook  Messenger  Twitter        |

TUTORIALS

Silverlight

.NET Framework

Accesso ai dati

Architettura e design software

Windows Azure

TOP TEN ARTICOLI
ARTICOLI VIA E-EMAIL

Iscriviti alla nostra newsletter nuoviarticoli per ricevere via e-mail le notifiche!

Iscrivi subito! »»»

MEDIA
IN EVIDENZA
MISC