Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Dans le modèle de canal WCF, vous appelez des opérations sur la base de données SQL Server et recevez les résultats en échangeant des messages SOAP avec l’adaptateur Microsoft BizTalk pour SQL Server sur un canal WCF.
Vous appelez des opérations sortantes à l’aide d’un IRequestChannel ou d’un IOutputChannel pour envoyer des messages à l’adaptateur.
Vous recevez des messages pour les opérations entrantes en utilisant un IInputChannel pour des opérations de Interrogation, TypedPolling ou de Notification.
Les procédures de cette rubrique fournissent des informations sur la création et la configuration de formes de canal utilisées pour les opérations entrantes et sortantes.
Création de canaux sortants pour clients
Vous pouvez utiliser un IRequestChannel ou un IOutputChannel pour appeler des opérations sur la base de données SQL Server. Dans les deux cas, vous créez d’abord un System.ServiceModel.ChannelFactory à l’aide de l’interface appropriée. Vous utilisez ensuite l'usine pour créer le canal. Une fois que vous avez créé le canal, vous pouvez l’utiliser pour appeler des opérations sur l’adaptateur.
Pour créer et ouvrir un canal sortant
Créez et initialisez une instance de ChannelFactory pour la forme de canal souhaitée à l’aide d’un point de terminaison et d’une liaison. Le point de terminaison spécifie un URI de connexion SQL Server et la liaison est une instance de sqlBinding.
Fournissez des informations d’identification SQL Server en utilisant la propriété Credentials pour l'usine de canaux.
Ouvrez l'usine de canaux.
Obtenez une instance du canal en appelant la méthode CreateChannel sur la fabrique de canaux.
Ouvrez le canal.
Vous pouvez spécifier la liaison et l’adresse de point de terminaison dans votre code ou à partir de la configuration.
Spécifier la liaison et l'adresse de point de terminaison dans le code
L’exemple de code suivant montre comment créer un IRequestChannel en spécifiant la liaison et l’adresse de point de terminaison dans le code. Le code permettant de créer un IOutputChannel est le même, sauf que vous devez spécifier une interface IOutputChannel pour le ChannelFactory et le type de canal.
// Create binding -- set binding properties before you open the factory.
SqlAdapterBinding sdbBinding = new SqlAdapterBinding();
// Create address.
EndpointAddress sdbAddress = new EndpointAddress("mssql://<sql_server_name>//<database_name>?");
// Create channel factory from binding and address.
ChannelFactory<IRequestChannel> factory =
new ChannelFactory<IRequestChannel>(sdbBinding, sdbAddress);
// Specify credentials.
factory.Credentials.UserName.UserName = "myuser";
factory.Credentials.UserName.Password = "mypassword";
// Open factory
factory.Open();
// Get channel and open it.
IRequestChannel channel = factory.CreateChannel();
channel.Open();
Spécification de la liaison et de l’adresse de point de terminaison dans la configuration
L’exemple de code suivant montre comment créer une fabrique de canaux à partir d’un point de terminaison client spécifié dans la configuration.
// Create channel factory from configuration.
ChannelFactory<IRequestChannel> factory =
new ChannelFactory<IRequestChannel>("MyRequestChannel");
// Specify credentials.
factory.Credentials.UserName.UserName = "myuser";
factory.Credentials.UserName.Password = "mypassword";
// Open the factory.
factory.Open();
// Get a channel and open it.
IRequestChannel channel = factory.CreateChannel();
channel.Open();
Paramètres de configuration
Le code suivant montre les paramètres de configuration utilisés pour l’exemple précédent. Le contrat du point de terminaison client doit être « System.ServiceModel.Channels.IRequestChannel » ou « System.ServiceModel.Channels.IOutputChannel » en fonction du type de forme de canal que vous souhaitez créer.
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.serviceModel>
<bindings>
<sqlBinding>
<binding name="SqlAdapterBinding" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:10:00" sendTimeout="00:01:00" maxConnectionPoolSize="100"
encrypt="false" useAmbientTransaction="true" batchSize="20"
polledDataAvailableStatement="" pollingStatement="" pollingIntervalInSeconds="30"
pollWhileDataFound="false" notificationStatement="" notifyOnListenerStart="true"
enableBizTalkCompatibilityMode="true" chunkSize="4194304"
inboundOperationType="Polling" useDatabaseNameInXsdNamespace="false"
allowIdentityInsert="false" enablePerformanceCounters="false"
xmlStoredProcedureRootNodeName="" xmlStoredProcedureRootNodeNamespace="" />
</sqlBinding>
</bindings>
<client>
<endpoint address="mssql://mysqlserver//mydatabase?" binding="sqlBinding"
bindingConfiguration="SqlAdapterBinding" contract="System.ServiceModel.Channels.IRequestChannel"
name="MyRequestChannel" />
</client>
</system.serviceModel>
</configuration>
Création de canaux entrants (service clients)
Vous configurez l’adaptateur SQL pour interroger les tables et vues de base de données SQL Server en définissant des propriétés de liaison sur une instance de sqlBinding. Vous utilisez ensuite cette liaison pour générer un écouteur de canal à partir duquel vous pouvez obtenir un canal IInputChannel pour recevoir l’opération Interrogation, TypedPolling ou Notification de l’adaptateur.
Pour créer et ouvrir un IInputChannel pour recevoir des opérations entrantes
Créez une instance de SQLBinding.
Définissez les propriétés de liaison requises pour l’opération entrante. Par exemple, pour une opération d’interrogation , au minimum, vous devez définir les propriétés de liaison InboundOperationType, PolledDataAvailableStatement et PollingStatement pour configurer l’adaptateur SQL pour interroger la base de données SQL Server.
Créez un écouteur de canal en appelant la méthode BuildChannelListener<IInputChannel> sur SQLBinding. Vous spécifiez l’URI de connexion SQL Server comme l’un des paramètres de cette méthode.
Ouvrez l’écouteur.
Obtenez un canal IInputChannel en appelant la méthode AcceptChannel sur l’écouteur.
Ouvrez le canal.
Le code suivant montre comment créer un écouteur de canal et obtenir un IInputChannel pour recevoir des messages de données modifiées de l’adaptateur.
Important
L’adaptateur SQL prend uniquement en charge la réception unidirectionnel. Par conséquent, vous devez utiliser IInputChannel pour recevoir des messages pour les opérations entrantes à partir de SQL Server.
// Create a binding: specify the InboundOperationType, the PolledDataAvailableStatement, and
// the PollingStatement binding properties.
SqlAdapterBinding binding = new SqlAdapterBinding();
binding.InboundOperationType = InboundOperation.Polling;
binding.PolledDataAvailableStatement = "SELECT COUNT (*) FROM EMPLOYEE";
binding.PollingStatement = "SELECT * FROM Employee;EXEC MOVE_EMP_DATA;EXEC ADD_EMP_DETAILS John, Tester, 100000";
// Create a binding parameter collection and set the credentials
ClientCredentials credentials = new ClientCredentials();
credentials.UserName.UserName = "myuser";
credentials.UserName.Password = "mypassword";
BindingParameterCollection bindingParams = new BindingParameterCollection();
bindingParams.Add(credentials);
// Get a listener from the binding and open it.
Uri connectionUri = new Uri("mssql://mysqlserver//mydatabase?");
IChannelListener<IInputChannel> listener = binding.BuildChannelListener<IInputChannel>(connectionUri, bindingParams);
listener.Open();
// Get a channel from the listener and open it.
IInputChannel channel = listener.AcceptChannel();
channel.Open();