Bagikan melalui


Kriteria Temukan Kustom

Sampel CustomFindCriteria menunjukkan cara membuat kecocokan cakupan kustom menggunakan logika dan cara mengimplementasikan layanan penemuan kustom. Klien menggunakan fungsionalitas pencocokan cakupan kustom untuk memperbaiki dan membangun lebih lanjut di atas fungsionalitas temukan WCF Discovery yang disediakan sistem. Skenario yang dicakup sampel ini adalah sebagai berikut:

  1. Klien sedang mencari layanan kalkulator.

  2. Untuk memperbaiki pencariannya, klien harus menggunakan aturan pencocokan cakupan kustom.

  3. Menurut aturan ini, layanan merespons kembali ke klien jika titik akhirnya cocok dengan salah satu cakupan yang ditentukan oleh klien.

Menunjukkan

  • Membuat layanan penemuan kustom.

  • Menerapkan kecocokan cakupan kustom berdasarkan algoritma.

Diskusi

Klien mencari kriteria pencocokan jenis "OR". Layanan merespons kembali jika cakupan pada titik akhirnya cocok dengan salah satu cakupan yang disediakan oleh klien. Dalam hal ini, klien mencari layanan kalkulator yang memiliki salah satu cakupan dalam daftar berikut:

  1. net.tcp://Microsoft.Samples.Discovery/RedmondLocation

  2. net.tcp://Microsoft.Samples.Discovery/SeattleLocation

  3. net.tcp://Microsoft.Samples.Discovery/PortlandLocation

Untuk mencapai hal ini, klien mengarahkan layanan untuk menggunakan aturan pencocokan cakupan kustom dengan meneruskan kecocokan cakupan kustom oleh URI. Untuk memfasilitasi pencocokan cakupan kustom, layanan harus menggunakan layanan penemuan kustom yang memahami aturan pencocokan cakupan kustom dan mengimplementasikan logika pencocokan terkait.

Dalam proyek klien, buka file Program.cs. Perhatikan bahwa bidang ScopeMatchBy objek FindCriteria diatur ke URI tertentu. Pengidentifikasi ini dikirim ke layanan. Jika layanan tidak memahami aturan ini, layanan akan mengabaikan permintaan temukan klien.

Membuka proyek layanan. Tiga file digunakan untuk mengimplementasikan Layanan Penemuan Kustom:

  1. AsyncResult.cs: Hal in adalah implementasi dari AsyncResult yang diperlukan oleh metode Penemuan.

  2. CustomDiscoveryService.cs: File ini mengimplementasikan layanan penemuan kustom. Implementasi memperluas kelas DiscoveryService dan mengambil alih metode yang diperlukan. Perhatikan implementasi metode OnBeginFind. Metode memeriksa untuk melihat apakah cakupan kustom cocok dengan aturan ditentukan oleh klien. Ini adalah URI kustom yang sama dengan yang ditentukan klien sebelumnya. Jika aturan kustom ditentukan, jalur kode yang mengimplementasikan logika kecocokan "OR" diikuti.

    Logika kustom ini melewati semua cakupan pada setiap titik akhir yang dimiliki layanan. Jika salah satu cakupan titik akhir cocok dengan salah satu cakupan yang disediakan oleh klien, layanan penemuan menambahkan titik akhir tersebut ke respons yang dikirim kembali ke klien.

  3. CustomDiscoveryExtension.cs: Langkah terakhir dalam menerapkan layanan penemuan adalah menghubungkan implementasi layanan penemuan kustom ini ke host layanan. Kelas pembantu yang digunakan di sini adalah kelas CustomDiscoveryExtension. Kelas ini memperluas kelas DiscoveryServiceExtension. Pengguna harus mengambil alih metode GetDiscoveryService. Dalam hal ini, metode mengembalikan instans layanan penemuan kustom yang dibuat sebelumnya. PublishedEndpoints adalah ReadOnlyCollection<T> yang berisi semua titik akhir aplikasi yang ditambahkan ke ServiceHost. Layanan penemuan kustom menggunakan ini untuk mengisi daftar internalnya. Pengguna juga dapat menambahkan metadata titik akhir lainnya.

Terakhir, buka Program.cs. Perhatikan bahwa ServiceDiscoveryBehavior dan CustomDiscoveryExtension ditambahkan ke host. Setelah ini selesai dan host memiliki titik akhir untuk menerima pesan penemuan, aplikasi dapat menggunakan layanan penemuan kustom.

Amati bahwa klien dapat menemukan layanan tanpa mengetahui alamatnya.

Untuk menyiapkan, membangun, dan menjalankan sampel

  1. Membuka solusi yang berisi proyek.

  2. Bangun proyek.

  3. Menjalankan aplikasi layanan.

  4. Jalankan aplikasi klien.