Panoramica del modello di canale WCF con l'adapter SQL
Per richiamare le operazioni nell'adapter Microsoft BizTalk per SQL Server, il codice funge da client WCF e invia operazioni in uscita all'adapter. Nel modello di canale WCF il codice richiama le operazioni sull'adapter inviando un messaggio di richiesta su un canale.
Per ricevere messaggi modificati sui dati basati sul polling usando l'adattatore, il codice funge da servizio WCF e riceve l'operazione polling in ingresso, TypedPolling o Notifica dall'adapter. In altre parole, il codice riceve un messaggio di richiesta per queste operazioni dalla scheda su un canale.
Gli argomenti di questa sezione forniscono una panoramica dell'uso dell'adapter SQL con il modello di canale WCF.
Panoramica del modello di canale WCF
I client e i servizi comunicano scambiando messaggi SOAP. Il modello di canale WCF è un'astrazione di basso livello di questo scambio di messaggi. Fornisce interfacce e tipi che consentono di inviare e ricevere messaggi usando uno stack di protocolli a livelli denominato stack di canali. Ogni livello dello stack è costituito da un canale e ogni canale viene creato da un'associazione WCF. Al livello più basso è il canale di trasporto. Il canale di trasporto implementa il meccanismo di trasporto sottostante tra un servizio e un client e presenta ogni messaggio ai livelli superiori (e infine l'applicazione che usa) come System.ServiceModel.Message. La classe WCF Message è un'astrazione di un messaggio SOAP. WCF offre diverse interfacce di canale, denominate forme di canale, che modellano i modelli di scambio di messaggi SOAP di base, ad esempio request-reply o one-way. Un'associazione di trasporto WCF fornisce un'implementazione di una o più forme di canale che possono essere usate da livelli superiori per inviare e ricevere messaggi. Per altre informazioni sul modello di canale WCF, vedere Panoramica del modello di canale.
L'adapter SQL è un'associazione di trasporto personalizzata WCF che espone un database SQL Server come servizio WCF.
Forme di canale supportate per l'adattatore SQL Server
L'adapter implementa le forme del canale WCF seguenti:
IRequestChannel (System.ServiceModel.Channels.IRequestChannel). L'interfaccia IRequestChannel implementa il lato client di uno scambio di messaggi di risposta richiesta. È possibile usare un IRequestChannel per eseguire operazioni per cui si vuole usare una risposta, ad esempio per eseguire una query SELECT in una tabella.
IOutputChannel (System.ServiceModel.Channels.IOutputChannel). Questa forma implementa il lato client di uno scambio di messaggi unidirezionale. È possibile usare un IOutputChannel per richiamare un'operazione per cui non è necessario utilizzare una risposta, ad esempio per chiamare una routine senza parametri restituiti.
Importante
Tutte le chiamate sottostanti dall'adattatore al client SQL Server sono sincrone. Ciò include chiamate al client SQL Server che sono il risultato delle operazioni richiamate su un IOutputChannel. Quando si usa un IOutputChannel, l'adapter ignora la risposta ricevuta dal client di SQL Server.
IInputChannel (System.ServiceModel.Channels.IInputChannel). Questa forma implementa il lato servizio di uno scambio di messaggi unidirezionale. Si usa un IInputChannel per ricevere messaggi per le operazioni in ingresso, ad esempio polling o notifica, dall'adapter.
Analogamente a qualsiasi associazione WCF, l'adapter SQL usa un modello di factory per fornire canali al codice dell'applicazione. Per creare istanze di, usare un oggetto Microsoft.Adapters.SQLBinding :
System.ServiceModel.ChannelFactory<IRequestChannel per fornire canali IRequestChannel> che è possibile usare per richiamare operazioni di richiesta-risposta nella scheda.
System.ServiceModel.ChannelFactory<IOutputChannel per fornire canali IOutputChannel> che è possibile usare per richiamare operazioni unidirezionali sulla scheda.
System.ServiceModel.IChannelListener<IInputChannel per fornire canali IInputChannel> che è possibile usare per ricevere messaggi per le operazioni in ingresso, ad esempio Polling o Notifica, dall'adapter.
Creazione di messaggi per l'adattatore di database SQL Server nel modello di canale WCF
In WCF la classe System.ServiceModel.Channel.Message fornisce una rappresentazione in memoria di un messaggio SOAP. Si crea un'istanza di Message richiamando il metodo static Message.Create .
Esistono due parti importanti per il messaggio SOAP che è necessario specificare quando si crea un'istanza di messaggio da inviare all'adapter SQL.
L'azione del messaggio è una stringa che fa parte dell'intestazione del messaggio SOAP. L'azione del messaggio identifica l'operazione che deve essere richiamata nel database. Di seguito viene illustrata l'azione del messaggio specificata per richiamare l'operazione Select nella tabella Employee:
TableOp/Select/dbo/Employee
.Il corpo del messaggio contiene i dati dei parametri per l'operazione. Il corpo del messaggio è costituito da XML ben formato che corrisponde allo schema del messaggio previsto dall'adapter SQL per l'operazione richiesta. Il corpo del messaggio seguente specifica un'operazione Select nella tabella Employee (SELECT * FROM Employee WHERE Employee_ID=10001).
<Select xmlns="http://schemas.microsoft.com/Sql/2008/05/TableOp/dbo/Employee"> <Columns>*</Columns> <Query>where Employee_ID=10001</Query> </Select>
Per informazioni sugli schemi e le azioni dei messaggi dell'adattatore SQL per le operazioni, vedere Messaggi e schemi di messaggi per l'adapter BizTalk per SQL Server.
Questo metodo Create viene sovraccaricato e offre molte opzioni diverse per fornire il corpo del messaggio. Il codice seguente illustra come creare un'istanza di messaggio usando un xmlReader per fornire il corpo del messaggio. In questo codice il corpo del messaggio viene letto da un file.
XmlReader readerIn = XmlReader.Create("SelectInput.xml");
Message messageIn = Message.CreateMessage(MessageVersion.Default,
"TableOp/Select/dbo/Employee",
readerIn);
Importante
È necessario fornire un'azione di messaggio nell'istanza del messaggio. Questa operazione viene in genere eseguita quando viene creata l'istanza del messaggio .