NetHttpBinding
Nell'esempio NetHttpBinding viene illustrato come implementare un'associazione che raggruppa in stack HttpTransportBindingElement o HttpsTransportBindingElement su BinaryMessageEncodingBindingElement. Le associazioni definite dal sistema basate su HTTP fornite con Windows Communication Foundation (WCF), ad esempio BasicHttpBinding o WsHttpBinding, sovrappongono il livello HTTP su TextMessageEncodingBindingElement principalmente per consentire l'invio e la ricezione dei messaggi come testo/XML per garantire l'interoperabilità. Le associazioni definite dal sistema basate su TCP e NamedPipe fornite con Windows Communication Foundation (WCF), ad esempio NetTcpBinding o NetNamedPipeBinding, scrivono e utilizzano messaggi in formato binario. Tale formato, sebbene non sia interoperativo, è più efficiente e garantisce prestazioni ottimali.
Nota: |
---|
La procedura di installazione e le istruzioni di compilazione per questo esempio si trovano alla fine dell'argomento. |
Nota: |
---|
È possibile che gli esempi siano già installati nel computer. Verificare la directory seguente (impostazione predefinita) prima di continuare.
<UnitàInstallazione>:\WF_WCF_Samples
Se questa directory non esiste, andare alla pagina relativa agli esempi di Windows Communication Foundation (WCF) e Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti gli esempi di Windows Communication Foundation (WCF) e WF. Questo esempio si trova nella directory seguente.
<UnitàInstallazione>:\WF_WCF_Samples\WCF\Extensibility\Binding\NetHttpBinding
|
Nell'esempio viene illustrato come è possibile utilizzare l'architettura di WCF per combinare gli elementi di associazione desiderati nello stack di canali per configurare le associazioni nel modo desiderato. I passaggi per creare un'associazione personalizzata sono i seguenti.
Scegliere gli elementi di associazione da raggruppare in stack per creare l'associazione.
Accertarsi di conoscere l'ordine in cui gli elementi di associazione devono essere raggruppati in stack per funzionare correttamente. Ad esempio, si desidera aggiungere il trasporto nella parte inferiore dello stack.
Creare la classe Binding che eredita da Binding. In questo caso specifico, NetHttpBinding implementa anche l'interfaccia ISecurityCapabilities perché consente all'utente di questa associazione di esaminare il ProtectionLevel e di stabilire se l'associazione supporta l'autenticazione di client e server.
L'associazione espone altre proprietà che devono essere riportate all'utente per consentire la configurazione degli elementi costituenti dell'associazione. Ad esempio, si riporta la proprietà BypassProxyOnLocal allo scopo di configurare la stessa proprietà nell'elemento TransportBindingElement HTTP o HTTPS sottostante.
Nel metodo CreateBindingElements, viene illustrato l'ordine nel quale devono essere raggruppati in stack gli elementi di associazione. Ad esempio, viene aggiunto prima il codificatore e quindi il trasporto perché il trasporto deve essere nella parte inferiore dello stack dell'associazione.
Infine, viene implementato il metodo ApplyConfiguration per consentire il popolamento di NetHttpBinding mediante la configurazione. In effetti, sono necessarie molte altre classi per consentire la configurazione dell'associazione da un file di configurazione. Per creare queste classi, è possibile utilizzare lo strumento ConfigurationCodeGenerator. Lo strumento ConfigurationCodeGenerator è disponibile anche come esempio di WCF.
Servizio di esempio NetHttpBinding
Il servizio di esempio che utilizza NetHttpBinding si trova nella sottodirectory del servizio. L'associazione utilizzata per configurare l'endpoint è NetHttpBinding. Il servizio di esempio viene reso indipendente utilizzando un metodo Main, ma può anche essere ospitato all'interno di Internet Information Services (IIS).
Client di esempio NetHttpBinding
Il client configura anche la relativa associazione su NetHttpBinding per la connessione al servizio. Viene illustrato che il client può configurare l'associazione nel codice o nella configurazione. La configurazione di NetHttpBinding tramite la configurazione è possibile grazie alle classi aggiunte per esporre l'associazione alla configurazione. Come accennato in precedenza, lo strumento ConfigurationCodeGenerator può consentire la generazione di queste classi.
Per impostare e compilare l'esempio
Installare ASP.NET 4.0 utilizzando il comando seguente.
%windir%\Microsoft.NET\Framework\v4.0.XXXXX\aspnet_regiis.exe /i /enable
Verificare di avere eseguito Procedura di installazione singola per gli esempi di Windows Communication Foundation.
Per compilare la soluzione, seguire le istruzioni in Generazione degli esempi Windows Communication Foundation.
Verificare che il percorso includa la cartella in cui è situato Makecert.exe.
Nel computer in cui verrà eseguito il server, eseguire Setup.bat dalla cartella di installazione dell'esempio per creare il certificato server e la certificazione richiesta dal server.
Nello stesso computer del server, configurare il certificato server con HTTP.SYS in base alle istruzioni fornite nella documentazione relativa a Configurazione di HTTP e HTTPS.
Per eseguire l'esempio nello stesso computer
Avviare Service.exe da service\bin. L'attività del servizio viene visualizzata nella finestra della console del servizio.
Avviare Client.exe da \client\bin. L'attività del client viene visualizzata nella finestra dell'applicazione console.
Eseguire Cleanup.bat per rimuovere i certificati una volta completato l'esempio.
Per eseguire l'esempio tra più computer
Avviare Service.exe da service\bin. L'attività del servizio viene visualizzata nella finestra della console del servizio.
Poiché il server è indipendente, è necessario specificare un'identità nel file App.config del client se si esegue il cliente e il server come utenti di dominio:
<client> <endpoint name="EchoServer" address= https://localhost:8000/TestService/BinaryEncoderOverHTTP binding= "netHttpBinding" bindingConfiguration="netHttpBinding" contract= "Microsoft.ServiceModel.Samples.Client.IEchoService" > <identity> <userPrincipalName value="user_name@service_domain"/> </identity> </endpoint> </client>
Avviare Client.exe da \client\bin: e passare l'URL HTTPS visualizzato nella finestra del servizio come parametro della riga di comando. L'attività del client viene visualizzata nella finestra dell'applicazione console.
Eseguire Cleanup.bat per rimuovere i certificati una volta completato l'esempio.