Procedura dettagliata: Pubblicazione di servizi WCF con l'adapter WCF-BasicHttp
Introduzione
Questa procedura dettagliata pubblica un servizio Windows Communication Foundation (WCF) come orchestrazione BizTalk usando la Pubblicazione guidata servizio WCF BizTalk e l'adapter WCF-BasicHttp. Un'orchestrazione BizTalk viene visualizzata in un client esterno, ad esempio un altro servizio Web o un'applicazione WCF, come servizio WCF esponendo un endpoint WCF tramite l'adapter WCF-BasicHttp. L'adapter WCF-BasicHttp è costituito da un adapter di trasmissione e da uno di ricezione. In questo esempio si userà solo il lato ricezione di questa scheda per ricevere richieste di servizio WCF tramite il protocollo HTTP o HTTPS dalle applicazioni client WCF.
L'adattatore WCF-BasicHttp usa l'associazione BasicHttpBinding per fornire un'implementazione dello stack di trasporto/protocollo compatibile con la versione iniziale dei servizi Web da usare come ponte tra le funzionalità BizTalk Server e WCF. Consente la comunicazione tra i servizi Web basati su ASMX legacy e i client conformi al Profilo base WS-I 1.1, mediante il trasporto HTTP o HTTPS con la codifica del testo. Se si utilizza l'adapter WCF-BasicHttp, non sarà possibile sfruttare le funzionalità di comunicazione Web avanzate supportate dai protocolli WS-*. Se si desidera sfruttare tali funzionalità, utilizzare l'adapter WCF-WSHttp.
Questa procedura dettagliata illustra come creare un percorso di ricezione WCF-BasicHttp per pubblicare un'orchestrazione come servizio WCF. Si configurerà Internet Information Services (IIS) per fornire l'hosting isolato del servizio WCF. Un'applicazione client chiama l'orchestrazione WCF pubblicata come esempio di come un client esterno potrebbe chiamare il servizio WCF pubblicato su Internet per usare la relativa funzionalità.
Al termine della procedura dettagliata sarà chiaro come completare le attività seguenti:
Da Visual Studio usare il comando Distribuisci per distribuire il servizio WCF sotto forma di orchestrazione BizTalk all'interno di un assembly BizTalk in un'istanza locale di BizTalk Server. La distribuzione da Visual Studio consente di creare un'applicazione BizTalk che viene popolata con gli assembly contenenti risorse quali orchestrazioni, pipeline, schemi e mappe da utilizzare nella soluzione BizTalk.
Dopo la distribuzione, l'orchestrazione BizTalk è disponibile per la configurazione e il controllo tramite la console di amministrazione di BizTalk Server. In questa procedura dettagliata verrà configurato il percorso di ricezione WCF-BasicHttp in modo da accettare i messaggi in ingresso inviati al servizio WCF creato dalla Pubblicazione guidata servizio WCF BizTalk. Il percorso di ricezione è ospitato dall'host isolato BizTalk in IIS e funge da servizio WCF per accedere alle richieste in ingresso.
Nota
In questa procedura dettagliata si userà la Pubblicazione guidata WCF BizTalk e/o la Pubblicazione guidata servizio Web BizTalk per pubblicare orchestrazioni e schemi BizTalk come servizi WCF con gli adapter WCF. Per pubblicare orchestrazioni e schemi come servizi Web con l'adapter SOAP, utilizzare la Pubblicazione guidata WCF BizTalk e/o la Pubblicazione guidata servizi Web BizTalk.
Prerequisiti
Per eseguire la procedura illustrata in questo esempio, verificare che nell'ambiente siano installati i prerequisiti seguenti:
Sia il computer che compila gli assembly ed esegue il processo di distribuzione e il computer che esegue l'esempio richiedono Microsoft Windows Server 2008 SP2 e/o Windows Server 2008 R2, Microsoft .NET Framework 4 e Microsoft BizTalk Server.
Nel computer utilizzato per compilare gli assembly ed eseguire il processo di distribuzione è richiesto Microsoft Visual Studio.
Il computer che esegue l'esempio richiede gli adapter WCF e gli strumenti di amministrazione WCF. Queste sono le opzioni da installare durante l'installazione di Microsoft BizTalk Server.
Nei computer usati per eseguire attività amministrative, è necessario eseguire come account utente membro del gruppo BizTalk Server Administrators per configurare le impostazioni dell'applicazione BizTalk Server all'interno della console di amministrazione di BizTalk Server. Questo account utente deve inoltre essere membro del gruppo Administrators locale per poter eseguire la distribuzione delle applicazioni, la gestione delle istanze dell'host e altre attività che potrebbero rivelarsi necessarie.
In qualsiasi computer che richiede la funzionalità WCF, completare la procedura di installazione unica per gli esempi WCF in Procedura di installazione occasionale per gli esempi di Windows Communication Foundation.
Nel computer che esegue l'esempio e importa un'associazione o un file di .msi in BizTalk Server, verificare che l'host non sia un host attendibile o che l'importazione avrà esito negativo.
È necessario scaricare il codice della procedura dettagliata ed estrarlo nel computer. Questa procedura dettagliata fa parte dell'intero pacchetto della procedura dettagliata dell'adapter WCF. È possibile scaricare il fileWCFAdapterWalkthroughs.exe dal BizTalk Server Developer Center all'indirizzo https://go.microsoft.com/fwlink/?LinkId=194140.
Per distribuire la soluzione BizTalk di esempio, BizTalkApp
Eseguire il file diWCFBasicHttpReceiveAdapter.exe autoestraendo ed estrarre i file nella cartella C:\WCFBasicHttpReceiveAdapter .
In Microsoft Visual Studio aprire il file C:\WCFBasicHttpReceiveAdapter\WCFBasicHttpReceiveAdapter.sln .
L'assembly Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp contiene un'orchestrazione BizTalk Server, una mappa e due schemi. Deve essere installato nella GAC e dovrà essere presente un file di chiave con nome sicuro. Fare clic con il pulsante destro del mouse sul progetto BizTalkApp e quindi scegliere Proprietà. Nella pagina Proprietà fare clic su Firma e selezionare Firma l'assembly. Fare clic sulla freccia giù nell'elenco a discesa Scegliere un file di chiave con nome sicuro , fare clic su <Nuovo> e immettere
keyfile.snk
nella casella di testo Nome file chiave . Deselezionare Proteggi il file di chiave con una password e quindi fare clic su OK.In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto BizTalkApp e quindi scegliere Ricompila.
Nota
Non tentare una soluzione di compilazione o di compilare l'applicazione WCFClient a questo punto. WCFClient non è pronto per essere compilato a questo punto nell'esempio.
Espandere BizTalkApp e quindi aprire DeliveryProcess.odx da esaminare. L'orchestrazione accetta una richiesta WCF su HTTP usando l'adattatore WCF-BasicHttp. Modifica la richiesta usando una mappa di trasformazione e invia nuovamente la risposta usando lo stesso adattatore WCF.
Questa orchestrazione dispone di una porta richiesta-risposta logica che verrà pubblicata con l'adapter WCF-BasicHttp. Verrà associata a una porta fisica in un passaggio successivo.
Fare clic con il pulsante destro del mouse sul nodo superiore di DeliveryProcess.odx nella finestra di progettazione e quindi scegliere Proprietà. Assicurarsi che la proprietà Type Modifier del tipo di porta sia Public.
In Esplora soluzioni fare clic con il pulsante destro del mouse su BizTalkApp, quindi scegliere Proprietà.
Se il database di gestione BizTalk non è ospitato localmente, modificare la proprietà Server se si utilizza un server di database diverso. Fare clic sulla scheda Distribuzione e quindi modificare la proprietà Server in modo che punti al server di database.
Assicurarsi che la proprietà Nome applicazione sia impostata su WCFBasicHttpReceiveAdapter. ovvero sul nome dell'applicazione BizTalk in cui verrà distribuita la soluzione BizTalk.
In Esplora soluzioni fare clic con il pulsante destro del mouse su BizTalkApp e quindi scegliere Distribuisci. Se la distribuzione non è locale, potrebbe essere necessario configurare SQL Server in modo da consentire le connessioni remote. Per altre informazioni, vedere Procedura: Abilitare connessioni remote in SQL Server.
Per pubblicare l'orchestrazione di esempio utilizzando la Pubblicazione guidata servizio WCF BizTalk
In questo passaggio si eseguirà l'assembly di orchestrazione appena distribuito e lo si pubblicherà come servizio WCF. A tale scopo, fare clic su Start, scegliere Tutti i programmi, MicrosoftBizTalk Server, quindi fare clic su Pubblicazione guidata servizio WCF BizTalk.
Nella pagina Pubblicazione guidata servizio WCF BizTalk fare clic su Avanti.
Nella pagina Tipo di servizio WCF eseguire le azioni seguenti per specificare il tipo di servizio WCF da pubblicare e gli endpoint BizTalk per la ricezione di messaggi WCF, quindi fare clic su Avanti:
Selezionare l'opzione Endpoint servizio , che indica che verrà pubblicato un servizio WCF da un'orchestrazione in un assembly. Selezionare WCF-BasicHttp dall'elenco a discesa Nome adattatore (tipo di trasporto).
Selezionare la casella di controllo Abilita endpoint metadati per rendere ospitato il percorso di ricezione WCF ospitato da IIS pubblica i metadati del servizio WCF. Selezionando questa casella di controllo, l'attributo httpGetEnabled dell'elemento <serviceMetadata> viene impostato
true
su in Web.Config. Questi metadati vengono recuperati quando viene richiesta una richiesta HTTP/GET. Successivamente si userà lo strumento SvcUtil.exe per ottenere questi dati per generare una classe proxy per il codice client da usare per chiamare il servizio WCF.Selezionare l'opzione Crea percorsi di ricezione BizTalk nell'applicazione seguente per creare le porte di ricezione e i percorsi corrispondenti a ogni file con estensione svc generato per l'adapter WCF-BasicHttp. Scegliere il nome dell'applicazione BizTalk , WCFBasicHttpReceiveAdapter, in cui verranno generate le porte di ricezione e i percorsi, quindi fare clic su Avanti.
La procedura guidata crea un file di associazione Binding.XML per rappresentare gli indirizzi di ricezione associati. Questo file si trova nella directory Web e successivamente può essere importato manualmente tramite la console di amministrazione di BizTalk Server.
Nota
Se non si seleziona un'applicazione BizTalk distribuita, verrà selezionata l'applicazione predefinita.
Nella pagina Crea servizio WCF selezionare Pubblica orchestrazioni BizTalk come servizio WCF e quindi fare clic su Avanti. Verrà pubblicata l'orchestrazione specificata nel passaggio successivo come servizio WCF.
Selezionare l'assembly contenente l'orchestrazione da pubblicare. Nella casella di testo BizTalk Assembly (*.dll) della pagina Assembly BizTalk fare clic su Sfoglia per passare alla cartella C:\WCFBasicHttpReceiveAdapter\BizTalkApp\bin\Development, fare doppio clic sulla cartella Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp contenente l'orchestrazione di esempio da pubblicare, fare clic su Apri e quindi fare clic su Avanti.
Nella pagina Orchestrazioni e porte verificare che il nodo Port: DeliveryRequestPort sia selezionato nella pagina e quindi fare clic su Avanti. Se si seleziona questo nodo, vengono selezionati anche i corrispondenti nodi di livello superiore. La porta verrà pubblicata con un indirizzo di ricezione richiesta-risposta che ospita l'adapter WCF-BasicHttp.
Nella pagina Proprietà servizio WCF , nella casella di testo Spazio dei nomi di destinazione del servizio WCF digitare un URI da usare per il servizio WCF pubblicato e quindi fare clic su Avanti. Per questa procedura dettagliata, lasciare l'URI predefinito "
<http://tempuri.org/>
" nella casella di testo Spazio dei nomi di destinazione del servizio WCF.Nella pagina Posizione del servizio WCF eseguire le azioni seguenti per specificare il percorso dei servizi WCF da creare e quindi fare clic su Avanti:
Nella casella di testo Percorso digitare il nome della directory Web in cui viene eseguito il servizio WCF oppure fare clic su Sfoglia e selezionare la directory Web. Per questa procedura dettagliata, poiché il nome dell'assembly corrisponde alla directory virtuale, lasciare il percorso predefinito (
http://localhost/Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp
) nella casella di testo Percorso .Selezionare l'opzione Consenti l'accesso anonimo al servizio WCF e quindi fare clic su Avanti. Questa opzione consente l'accesso anonimo alla directory virtuale creata. Poiché in questa procedura dettagliata viene utilizzata la modalità Sicurezza trasporto senza autenticazione, è necessario selezionare questa opzione per consentire l'autenticazione anonima per l'applicazione Web che verrà creata mediante questa procedura guidata.
Nella pagina Riepilogo servizio WCF fare clic su Crea per creare il servizio WCF. Con questo passaggio viene creata una porta di ricezione per l'orchestrazione specificata disponibile tramite la directory Web specificata.
Nella pagina Completamento pubblicazione guidata servizio WCF BizTalk fare clic su Fine.
Per abilitare l'applicazione BizTalk di esempio
Fare clic su Start, scegliere Tutti i programmi, scegliere MicrosoftBizTalk Server e quindi fare clic su BizTalk Server Amministrazione.
Nella console di amministrazione di BizTalk Server espandere Applicazioni, espandere WCFBasicHttpReceiveAdapter, espandere Orchestrazioni, fare clic con il pulsante destro del mouse sull'orchestrazione DeliveryProcess, scegliere Proprietà e quindi configurare le informazioni di associazione come indicato di seguito:
Nella finestra di dialogo Proprietà orchestrazione fare clic su Associazioni e quindi impostare Host su BizTalkServerApplication.
Nella finestra di dialogo Proprietà orchestrazione selezionare una porta di ricezione per DeliveryRequestPort da associare. Per questa procedura dettagliata, selezionare la porta di ricezione creata dalla Pubblicazione guidata servizio WCF BizTalk nella procedura precedente e quindi fare clic su OK.
Nella console di amministrazione BizTalk Server fare clic con il pulsante destro del mouse su WCFBasicHttpReceiveAdapter, scegliere Start e quindi fare clic su Avvia nella finestra di dialogo Avvia applicazione.
Per configurare l'applicazione Web che ospita il servizio WCF pubblicato
Fare clic su Start, scegliere Strumenti di amministrazione e quindi fare clic su Internet Information Services (IIS) 7.0 Manager.
In Gestione IIS espandere Siti, espandere Sito Web predefinito e quindi espandere l'applicazione Web Microsoft.Samples.BizTalk.WCFBasicHttpReceiveAdapter.BizTalkApp creata dalla Pubblicazione guidata del servizio WCF BizTalk .
Creare un pool di applicazioni in cui verrà eseguito questo servizio. Fare clic con il pulsante destro del mouse su Pool di applicazioni, scegliere Aggiungi pool di applicazioni, immettere un nome per il pool di applicazioni e quindi fare clic su OK.
Espandere Pool di applicazioni, fare clic con il pulsante destro del mouse sul pool di applicazioni appena creato e quindi selezionare Impostazioni avanzate. Nella sezione Modello di elaborazione immettere l'account che ha accesso ai database BizTalk Server nel campo Identity.
In Gestione IIS fare clic su Visualizzazione contenuto. Nel riquadro destro fare clic con il pulsante destro del mouse sul file con estensione svc del servizio WCF WCF creato e quindi scegliere Sfoglia. Verrà aperto Internet Explorer per visualizzare una pagina che indica che è stato creato correttamente un servizio WCF in esecuzione. La pagina include inoltre un indirizzo WSDL completo che è possibile copiare e utilizzare con lo strumento relativo ai metadati del servizio (svcutil.exe) per recuperare il codice proxy e un file di configurazione che è possibile utilizzare per creare un'applicazione client per il servizio.
Copiare negli Appunti la riga di comando SvcUtil.exe con l'indirizzo WSDL completo nella pagina visualizzata in Internet Explorer nel passaggio precedente.
Per creare la classe proxy per l'applicazione client WCF di esempio WCFClient
Creare una classe proxy in modo che l'applicazione di esempio client WCF possa chiamare nel servizio WCF. Sebbene non necessario, è consigliabile creare un proxy, dal momento che la scrittura manuale del codice è molto complessa. Aprire un prompt dei comandi di Visual Studio e passare alla cartella C:\WCFBasicHttpReceiveAdapter\WCFClient in cui verrà inserito il file di configurazione della classe proxy e dell'applicazione.
Incollare la riga di comandosvcutil.exe con l'indirizzo WSDL completo copiato nella procedura precedente e quindi premere INVIO per creare la classe proxy e il file di configurazione dell'applicazione. Questa riga di comando crea BizTalkServiceInstance.cs per la classe proxy e output.config per il file di configurazione dell'applicazione.
In Visual Studio, in Esplora soluzioni fare clic con il pulsante destro del mouse su WCFClient, scegliere Aggiungi e quindi fare clic su Elemento esistente.
Nella finestra di dialogo Aggiungi elemento esistente passare alla cartella WCFClient , selezionare Tutti i file (*.*) nell'elenco a discesa File di tipo , selezionare bizTalkServiceInstance.cs e output.config file e quindi fare clic su Aggiungi.
Per il progetto WCFClient espandere Riferimenti e quindi assicurarsi che il progetto WCFClient disponga di System.ServiceModel come uno dei relativi riferimenti.
Espandere il progetto WCFClient , fare clic con il pulsante destro del mouse suoutput.config, scegliere Rinomina e quindi digitare App.config per il nuovo nome.
Fare doppio clic su Program.cs per esaminare come chiamare il servizio WCF pubblicato usando la classe proxy generata da Svcutil.exe. Le chiamate per creare un'istanza e richiamare un servizio WCF sembrano essere chiamate locali nella semplicità di codifica usando la classe Microsoft_Samples_BizTalk_WCFBasicHttpReceiveAdapter_BizTalkApp_DeliveryProcess_DeliveryRequestPortClient . Non è necessario alcun codice aggiuntivo per eseguire una chiamata a un servizio WCF remoto.
In Visual Studio, nel menu Debug fare clic su Avvia senza debug per eseguire WCFClient. Il codice client crea un messaggio DeliveryItem e effettua una chiamata al servizio WCF, passando l'indirizzo, ProductID e Amount.
DeliveryItem deliveryRequestItem = new DeliveryItem(); deliveryRequestItem.Address = "One Microsoft Way"; deliveryRequestItem.ProductID = "00A120c"; deliveryRequestItem.Amount = "300"; DeliveryRequestPortClient deliveryProcessClient = new DeliveryRequestPortClient("BasicHttpBinding_ITwoWayAsync"); DeliveryItem1 deliveryConfirmation = deliveryProcessClient.Submit(deliveryRequestItem);
Se il client riceve correttamente il messaggio di risposta dal servizio WCF pubblicato, visualizza il numero di conferma del recapito (una concatenazione del ProductID e indirizzo) nel messaggio di risposta.
Submit operation called with deliveryRequestItem
Numero di conferma del recapito inviato di nuovo: 00A120c300One Microsoft Way
Premere un tasto qualsiasi per continuare. . .