Création de services pouvant interagir avec le profil Basic Profile 1.1 de WS-I
Pour configurer un point de terminaison de service WCF afin qu'il puisse interagir avec les clients du service Web ASP.NET :
Utilisez le type System.ServiceModel.BasicHttpBinding comme type de liaison pour votre point de terminaison de service.
N'utilisez pas les fonctionnalités de rappel et de contrat de session, ni les comportements de transaction sur votre point de terminaison de service
Vous pouvez éventuellement activer la prise en charge du protocole HTTPS et de l'authentification du client au niveau du transport sur la liaison.
Les fonctionnalités suivantes de la classe BasicHttpBinding requièrent des fonctionnalités qui dépassent le profil Basic Profile 1.1 de WS-I :
Encodage des messages MTOM (Message Transmission Optimisation Mechanism) contrôlé par la propriété System.ServiceModel.BasicHttpBinding.MessageEncoding. Conservez la valeur par défaut de cette propriété, à savoir System.ServiceModel.WSMessageEncoding.Text pour ne pas utiliser MTOM.
La sécurité du message contrôlée par la valeur System.ServiceModel.BasicHttpBinding.Security fournit une prise en charge de WS-Security conforme à WS-I Basic Security Profile 1.0. Conservez la valeur par défaut de cette propriété, à savoir System.ServiceModel.SecurityMode.Transport pour ne pas utiliser WS-Security.
Pour mettre les métadonnées d'un service WCF à la disposition d'ASP.NET, utilisez les outils de génération de client du service Web : Web Services Description Language Tool (Wsdl.exe), Web Services Discovery Tool (Disco.exe) et la fonctionnalité Add Web Reference dans Visual Studio; vous devez activer la publication de métadonnées. Pour plus d'informations, consultez Publication de points de terminaison de métadonnées.
Exemple
Description
L'exemple de code ci-dessous montre comment ajouter un point de terminaison WCF qui est compatible avec les clients du service Web ASP.NET dans du code, ainsi que dans des fichiers de configuration.
Code
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.ServiceModel
Imports System.ServiceModel.Description
<ServiceContract()> _
Public Interface IEcho
<OperationContract()> _
Function Echo(ByVal s As String) As String
End Interface
Public Class MyService
Implements IEcho
Public Function Echo(ByVal s As String) As String Implements IEcho.Echo
Return s
End Function
End Class
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim baseAddress = "https://localhost:8080/wcfselfhost/"
Dim host As New ServiceHost(GetType(MyService), _
New Uri(baseAddress))
' Add a service endpoint using the created binding
With host
.AddServiceEndpoint(GetType(IEcho), _
New BasicHttpBinding(), _
"echo1")
.Open()
Console.WriteLine("Service listening on {0} . . .", _
baseAddress)
Console.ReadLine()
.Close()
End With
End Sub
End Class
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Description;
[ServiceContract]
public interface IEcho
{
[OperationContract]
string Echo(string s);
}
public class MyService : IEcho
{
public string Echo(string s)
{
return s;
}
}
class Program
{
static void Main(string[] args)
{
string baseAddress = "https://localhost:8080/wcfselfhost/";
ServiceHost host = new ServiceHost(typeof(MyService), new Uri(baseAddress));
// Create a BasicHttpBinding instance
BasicHttpBinding binding = new BasicHttpBinding();
// Add a service endpoint using the created binding
host.AddServiceEndpoint(typeof(IEcho), binding, "echo1");
host.Open();
Console.WriteLine("Service listening on {0} . . .", baseAddress);
Console.ReadLine();
host.Close();
}
}
<configuration>
<system.serviceModel>
<services>
<service name="MyService" behaviorConfiguration="HttpGetMetadata">
<endpoint address="echo2" contract="IEcho" binding="basicHttpBinding" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="HttpGetMetadata">
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>