Bagikan melalui


Membuat saluran menggunakan adaptor SQL

Dalam model saluran WCF, Anda memanggil operasi pada database SQL Server dan menerima hasilnya dengan bertukar pesan SOAP dengan Adaptor Microsoft BizTalk untuk SQL Server melalui saluran WCF.

  • Anda memanggil operasi keluar dengan menggunakan IRequestChannel atau IOutputChannel untuk mengirim pesan ke adaptor.

  • Anda menerima pesan untuk operasi masuk melalui IInputChannel untuk operasi Polling, TypedPolling, atau Pemberitahuan.

    Prosedur dalam topik ini menyediakan informasi tentang cara membuat dan mengonfigurasi bentuk saluran yang digunakan untuk operasi masuk dan keluar.

Membuat Saluran Keluar (Klien)

Anda dapat menggunakan IRequestChannel atau IOutputChannel untuk memanggil operasi pada database SQL Server. Dalam kedua kasus, Anda terlebih dahulu membuat System.ServiceModel.ChannelFactory menggunakan antarmuka yang sesuai. Anda kemudian menggunakan pabrik untuk membuat saluran. Setelah membuat saluran, Anda dapat menggunakannya untuk memanggil operasi pada adaptor.

Untuk membuat dan membuka saluran keluar

  1. Buat dan inisialisasi instans ChannelFactory untuk bentuk saluran yang diinginkan dengan menggunakan titik akhir dan pengikatan. Titik akhir menentukan URI koneksi SQL Server dan pengikatannya adalah instans sqlBinding.

  2. Berikan kredensial SQL Server untuk pabrik saluran dengan menggunakan properti Kredensial .

  3. Buka pabrik saluran.

  4. Dapatkan instans saluran dengan memanggil metode CreateChannel di fabrikasi saluran.

  5. Buka saluran.

    Anda dapat menentukan alamat pengikatan dan titik akhir dalam kode Anda atau dari konfigurasi.

Menentukan Pengikatan dan Alamat Titik Akhir dalam Kode

Contoh kode berikut menunjukkan cara membuat IRequestChannel dengan menentukan alamat pengikatan dan titik akhir dalam kode. Kode untuk membuat IOutputChannel sama kecuali Anda harus menentukan antarmuka IOutputChannel untuk ChannelFactory dan jenis saluran.

// 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();  

Menentukan Pengikatan dan Alamat Titik Akhir dalam Konfigurasi

Contoh kode berikut menunjukkan cara membuat pabrik saluran dari titik akhir klien yang ditentukan dalam konfigurasi.

// 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();  

Pengaturan Konfigurasi

Kode berikut menunjukkan pengaturan konfigurasi yang digunakan untuk contoh sebelumnya. Kontrak untuk titik akhir klien harus "System.ServiceModel.Channels.IRequestChannel" atau "System.ServiceModel.Channels.IOutputChannel" tergantung pada jenis bentuk saluran yang ingin Anda buat.

<?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>  

Membuat Saluran Masuk (Saluran Pelayanan)

Anda mengonfigurasi adaptor SQL untuk melakukan polling tabel dan tampilan database SQL Server dengan mengatur properti pengikatan pada instans sqlBinding. Anda kemudian menggunakan pengikatan ini untuk membangun pendengar saluran tempat Anda bisa mendapatkan saluran IInputChannel untuk menerima operasi Polling, TypedPolling, atau Pemberitahuan dari adaptor.

Untuk membuat dan membuka IInputChannel untuk menerima operasi masuk

  1. Buat instans SQLBinding.

  2. Atur properti pengikatan yang diperlukan untuk operasi masuk. Misalnya, untuk operasi Polling , minimal Anda harus mengatur properti pengikatan InboundOperationType, PolledDataAvailableStatement, dan PollingStatement untuk mengonfigurasi adaptor SQL untuk melakukan polling database SQL Server.

  3. Buat pendengar saluran dengan memanggil metode BuildChannelListener<IInputChannel> pada SQLBinding. Anda menentukan URI koneksi SQL Server sebagai salah satu parameter untuk metode ini.

  4. Buka pendengar.

  5. Dapatkan saluran IInputChannel dengan memanggil metode AcceptChannel di listener.

  6. Buka saluran.

    Kode berikut menunjukkan cara membuat pendengar saluran dan mendapatkan IInputChannel untuk menerima pesan perubahan data dari adaptor.

Penting

Adaptor SQL hanya mendukung penerimaan satu arah. Jadi, Anda harus menggunakan IInputChannel untuk menerima pesan untuk operasi masuk dari 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();  

Lihat Juga

Mengembangkan aplikasi menggunakan model Saluran WCF