Bagikan melalui


Sampel Konfigurasi

Sampel konfigurasi menunjukkan penggunaan file konfigurasi untuk membuat layanan dapat ditemukan.

Konfigurasi Layanan

File konfigurasi dalam sampel ini menunjukkan dua fitur:

  • Membuat layanan dapat ditemukan melalui UdpDiscoveryEndpoint standar.

  • Menyesuaikan informasi terkait penemuan untuk titik akhir aplikasi layanan dan menyesuaikan beberapa pengaturan terkait penemuan pada titik akhir standar.

Untuk mengaktifkan penemuan, beberapa perubahan harus dilakukan dalam file konfigurasi aplikasi untuk layanan:

  • Titik akhir penemuan harus ditambahkan ke elemen <service>. Ini adalah titik akhir standar UdpDiscoveryEndpoint. Ini adalah titik akhir sistem yang dikaitkan runtime bahasa umum dengan layanan penemuan. Layanan penemuan mendengarkan pesan di titik akhir ini.

  • Perilaku <serviceDiscovery> ditambahkan ke bagian <serviceBehaviors>. Ini memungkinkan layanan ditemukan pada durasi dan menggunakan titik akhir penemuan yang disebutkan sebelumnya untuk mendengarkan penemuan pesan Probe dan Resolve. Dengan dua penambahan ini, layanan dapat ditemukan di titik akhir penemuan yang ditentukan.

Cuplikan konfigurasi berikut menunjukkan layanan dengan titik akhir aplikasi dan titik akhir penemuan yang ditentukan:

<services>
        <service name="Microsoft.Samples.Discovery.CalculatorService"
                 behaviorConfiguration="calculatorServiceBehavior">
          <endpoint address=""
                    binding="wsHttpBinding"
                    contract="Microsoft.Samples.Discovery.ICalculatorService"
                    behaviorConfiguration="endpointBehaviorConfiguration" />
          <endpoint name="udpDiscovery"
                    kind="udpDiscoveryEndpoint"
                endpointConfiguration="adhocDiscoveryEndpointConfiguration"/>        </service>
      </services>

Untuk memanfaatkan pengumuman, Anda harus menambahkan titik akhir pengumuman. Untuk melakukannya, ubah file konfigurasi seperti yang ditunjukkan pada kode berikut.

<serviceDiscovery>
            <announcementEndpoints>
              <endpoint kind="udpAnnouncementEndpoint"/>
            </announcementEndpoints>
          </serviceDiscovery>

Menambahkan titik akhir pengumuman ke perilaku layanan penemuan membuat klien pengumuman default untuk layanan. Ini menjamin bahwa layanan akan mengirim pengumuman online dan offline ketika layanan dibuka dan ditutup secara berturut-turut.

File konfigurasi ini hanya melampaui langkah-langkah sederhana dengan memodifikasi perilaku tambahan. Dimungkinkan untuk mengontrol informasi terkait penemuan dengan menggunakan titik akhir tertentu. Artinya, pengguna dapat mengontrol apakah titik akhir dapat ditemukan dan pengguna juga dapat menandai titik akhir tersebut dengan Scopes dan metadata XML kustom. Untuk melakukan ini, pengguna harus menambahkan properti behaviorConfiguration ke titik akhir aplikasi. Dalam hal ini, properti berikut ditambahkan ke titik akhir aplikasi.

behaviorConfiguration="endpointBehaviorConfiguration"

Sekarang, melalui elemen konfigurasi perilaku, Anda dapat mengontrol atribut terkait penemuan. Dalam hal ini, dua cakupan ditambahkan ke titik akhir aplikasi.

<endpointBehaviors>
          <behavior name="endpointBehaviorConfiguration">
            <endpointDiscovery>
              <scopes>
                <add scope="http://www.example.com/calculator"/>
                <add scope="ldap:///ou=engineering,o=examplecom,c=us"/>
              </scopes>
            </endpointDiscovery>

          </behavior>
        </endpointBehaviors>

Untuk informasi selengkapnya tentang cakupan, lihat Discovery Find and FindCriteria.

Anda juga dapat mengontrol detail spesifik titik akhir penemuan. Ini dilakukan melalui StandardEndpointsSection. Dalam sampel ini, versi protokol yang digunakan dimodifikasi serta menambahkan atribut maxResponseDelay seperti yang ditunjukkan dalam contoh kode berikut.

<standardEndpoints>
   <udpDiscoveryEndpoint>
      <standardEndpoint name="adhocDiscoveryEndpointConfiguration" discoveryVersion="WSDiscovery11" maxResponseDelay="00:00:00.600" />
   </udpDiscoveryEndpoint>
</standardEndpoints>

Berikut ini adalah file konfigurasi lengkap yang digunakan dalam contoh ini:

<configuration>
    <system.serviceModel>

      <services>
        <service name="Microsoft.Samples.Discovery.CalculatorService"
                 behaviorConfiguration="calculatorServiceBehavior">
          <endpoint address=""
                    binding="wsHttpBinding"
                    contract="Microsoft.Samples.Discovery.ICalculatorService"
                    behaviorConfiguration="endpointBehaviorConfiguration" />
         <!-- Define the discovery endpoint -->
<endpoint name="udpDiscovery" kind="udpDiscoveryEndpoint" endpointConfiguration="adhocDiscoveryEndpointConfiguration"/>        </service>
      </services>

      <behaviors>

        <serviceBehaviors>
          <behavior name="calculatorServiceBehavior">

            <!-- Add an announcement endpoint -->
            <serviceDiscovery>
              <announcementEndpoints>
                <endpoint kind="udpAnnouncementEndpoint"/>
              </announcementEndpoints>
            </serviceDiscovery>
          </behavior>
        </serviceBehaviors>

        <endpointBehaviors>
          <behavior name="endpointBehaviorConfiguration">
            <!-- Add scopes used to identify the service -->
            <endpointDiscovery>
              <scopes>
                <add scope="http://www.example.com/calculator"/>
                <add scope="ldap:///ou=engineering,o=examplecom,c=us"/>
              </scopes>
            </endpointDiscovery>

          </behavior>
        </endpointBehaviors>

      </behaviors>

      <standardEndpoints>
        <udpDiscoveryEndpoint>
         <!-- Configure the UDP discovery endpoint -->
          <standardEndpoint name="adhocDiscoveryEndpointConfiguration" discoveryVersion="WSDiscovery11" maxResponseDelay="00:00:00.600" />
        </udpDiscoveryEndpoint>
      </standardEndpoints>

    </system.serviceModel>
</configuration>

Konfigurasi Klien

Dalam file konfigurasi aplikasi untuk klien, standardEndpoint jenis dynamicEndpoint digunakan untuk menggunakan penemuan seperti yang ditunjukkan dalam cuplikan konfigurasi berikut.

<client>
   <!--  Create an endpoint, make kind="dynamicEndpoint" and use the endpointConfiguration to change settings of DynamicEndpoint -->
   <endpoint name="calculatorEndpoint"
             binding="wsHttpBinding"
             contract="ICalculatorService"
             kind ="dynamicEndpoint"
             endpointConfiguration="dynamicEndpointConfiguration">
   </endpoint>
</client>

Saat klien menggunakan dynamicEndpoint, runtime bahasa umum melakukan penemuan secara otomatis. Berbagai pengaturan digunakan selama penemuan, seperti yang didefinisikan di bagian discoveryClientSettings, yang menentukan jenis titik akhir penemuan yang akan digunakan:

<endpoint kind="udpDiscoveryEndpoint" endpointConfiguration="adhocDiscoveryEndpointConfiguration" />

Kriteria temuan yang digunakan untuk mencari layanan:

<!-- Add Scopes, ScopeMatchBy, Extensions and termination criteria in FindCriteria -->
<findCriteria scopeMatchBy="http://schemas.microsoft.com/ws/2008/06/discovery/rfc" duration="00:00:10" maxResults="1">
   <scopes>
      <add scope="http://www.microsoft.com/building42/floor1"/>
   </scopes>
   <!-- These extensions are sent from the client to the service as part of the probe message -->
   <extensions>
      <CustomMetadata>This is custom metadata that is sent to the service along with the client's find request.</CustomMetadata>
   </extensions>
</findCriteria>

Sampel ini memperluas fitur ini dan memodifikasi FindCriteria yang digunakan oleh klien, serta beberapa properti updDiscoveryEndpoint standar yang digunakan untuk penemuan. FindCriteria dimodifikasi untuk menggunakan cakupan dan algoritma scopeMatchBy tertentu, serta kriteria penghentian kustom. Selain itu, sampel juga menunjukkan bagaimana klien dapat mengirim elemen XML menggunakan pesan Probe. Terakhir, beberapa perubahan dilakukan pada UdpDiscoveryEndpoint, seperti versi protokol yang digunakan dan pengaturan khusus UDP seperti yang ditunjukkan dalam file konfigurasi berikut.

<udpDiscoveryEndpoint>
        <!-- Specify the discovery protocol version and UDP transport settings. -->
        <standardEndpoint name="adhocDiscoveryEndpointConfiguration" discoveryVersion="WSDiscovery11">
          <transportSettings duplicateMessageHistoryLength="2048"
                             maxPendingMessageCount="5"
                             maxReceivedMessageSize="8192"
                             maxBufferPoolSize="262144"/>
        </standardEndpoint>
      </udpDiscoveryEndpoint>

Berikut ini adalah konfigurasi klien lengkap yang digunakan dalam sampel.

<configuration>
  <system.serviceModel>

    <client>
      <!--  Create an endpoint, make kind="dynamicEndpoint" and use the endpointConfiguration to change settings of DynamicEndpoint -->
      <endpoint name="calculatorEndpoint"
                binding="wsHttpBinding"
                contract="ICalculatorService"
                kind ="dynamicEndpoint"
                endpointConfiguration="dynamicEndpointConfiguration">
      </endpoint>
    </client>

    <standardEndpoints>

      <dynamicEndpoint>
        <standardEndpoint name="dynamicEndpointConfiguration">
          <discoveryClientSettings>
            <!-- Controls where the discovery happens. In this case, Probe message is sent over UdpDiscoveryEndpoint. -->
            <endpoint kind="udpDiscoveryEndpoint" endpointConfiguration="adhocDiscoveryEndpointConfiguration" />

            <!-- Add Scopes, ScopeMatchBy, Extensions and termination criteria in FindCriteria -->
            <findCriteria scopeMatchBy="http://schemas.microsoft.com/ws/2008/06/discovery/rfc" duration="00:00:10" maxResults="1">
              <scopes>
                <add scope="http://www.microsoft.com/building42/floor1"/>
              </scopes>
              <!-- These extensions are sent from the client to the service as part of the probe message -->
              <extensions>
                <CustomMetadata>This is custom metadata that is sent to the service along with the client's find request.</CustomMetadata>
              </extensions>
            </findCriteria>
          </discoveryClientSettings>
        </standardEndpoint>
      </dynamicEndpoint>

      <udpDiscoveryEndpoint>
        <!-- Specify the discovery protocol version and UDP transport settings. -->
        <standardEndpoint name="adhocDiscoveryEndpointConfiguration" discoveryVersion="WSDiscovery11">
          <transportSettings duplicateMessageHistoryLength="2048"
                             maxPendingMessageCount="5"
                             maxReceivedMessageSize="8192"
                             maxBufferPoolSize="262144"/>
        </standardEndpoint>
      </udpDiscoveryEndpoint>

    </standardEndpoints>

  </system.serviceModel>
</configuration>

Untuk menggunakan sampel ini

  1. Sampel ini menggunakan titik akhir HTTP dan untuk menjalankan sampel ini, ACL URL yang tepat harus ditambahkan. Untuk informasi selengkapnya, lihat Mengonfigurasi HTTP dan HTTPS. Menjalankan perintah berikut pada hak istimewa yang ditingkatkan harus menambahkan ACL yang sesuai. Anda mungkin ingin mengganti Domain dan Nama Pengguna Anda untuk argumen berikut jika perintah tidak berfungsi apa adanya. netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%

  2. Bangun solusinya.

  3. Jalankan layanan yang dapat dieksekusi dari direktori build.

  4. Jalankan komputer klien yang dapat dieksekusi. Perhatikan bahwa klien dapat menemukan layanan.