Merancang dan Menerapkan Layanan

Bagian ini menunjukkan kepada Anda cara menentukan dan menerapkan kontrak WCF. Kontrak layanan menentukan apa yang dikomunikasikan titik akhir ke dunia luar. Pada tingkat yang lebih konkret, ini adalah pernyataan tentang serangkaian pesan spesifik yang diatur ke dalam pola pertukaran pesan dasar (anggota parlemen), seperti permintaan/balasan, satu arah, dan dupleks. Jika kontrak layanan adalah serangkaian pertukaran pesan yang terkait secara logis, operasi layanan adalah pertukaran pesan tunggal. Misalnya, operasi Hello jelas harus menerima satu pesan (sehingga penelepon dapat mengumumkan salam) dan mungkin atau mungkin tidak membalas pesan (tergantung pada kesopanan operasi).

Untuk informasi lebih lanjut tentang kontrak dan konsep inti Windows Communication Foundation (WCF) lainnya, lihat Konsep Dasar WCF. Topik ini berfokus pada pemahaman kontrak layanan. Untuk informasi selengkapnya tentang cara membangun klien yang menggunakan kontrak layanan untuk menyambung ke layanan, lihat Ikhtisar Klien WCF.

Gambaran Umum

Topik ini memberikan orientasi konseptual tingkat tinggi untuk merancang dan menerapkan layanan WCF. Sub-topik memberikan informasi yang lebih rinci tentang spesifikasi desain dan penerapan. Sebelum merancang dan menerapkan aplikasi WCF Anda, disarankan agar Anda:

  • Memahami apa itu kontrak layanan, cara kerjanya, dan cara membuatnya.

  • Memahami bahwa kontrak menyatakan persyaratan minimum yang mungkin tidak didukung oleh konfigurasi runtime bahasa umum atau lingkungan hosting.

Kontrak Layanan

Kontrak layanan menentukan hal-hal berikut:

  • Operasi yang diekspos oleh kontrak.

  • Tanda tangan operasi dalam hal pesan yang dipertukarkan.

  • Jenis data dari pesan-pesan ini.

  • Lokasi operasi.

  • Protokol khusus dan format serialisasi yang digunakan untuk mendukung komunikasi yang sukses dengan layanan.

Misalnya, kontrak pesanan pembelian mungkin memiliki operasi CreateOrder yang menerima input jenis informasi pesanan dan mengembalikan informasi sukses atau gagal, termasuk pengidentifikasi pesanan. Mungkin juga memiliki operasi GetOrderStatus yang menerima pengidentifikasi pesanan dan mengembalikan informasi status pesanan. Kontrak layanan semacam ini akan menentukan:

  1. Bahwa kontrak pesanan pembelian terdiri dari operasi CreateOrder dan GetOrderStatus.

  2. Bahwa operasi telah menentukan pesan input dan pesan output.

  3. Data yang dapat dibawa oleh pesan-pesan ini.

  4. Pernyataan kategoris tentang infrastruktur komunikasi yang diperlukan untuk berhasil memproses pesan. Misalnya, detail ini mencakup apakah dan bentuk keamanan apa yang diperlukan untuk membangun komunikasi yang sukses.

Untuk menyampaikan informasi semacam ini ke aplikasi pada platform lain (termasuk platform non-Microsoft), kontrak layanan XML dinyatakan secara publik dalam format XML standar, seperti Bahasa Deskripsi Layanan Web (WSDL) dan XML Skema (XSD), di antara yang lain. Pengembang untuk banyak platform dapat menggunakan informasi kontrak publik ini untuk membuat aplikasi yang dapat berkomunikasi dengan layanan, baik karena mereka memahami bahasa pemrogram spesifikasi maupun karena bahasa pemrogram tersebut dirancang untuk memungkinkan interoperasi dengan menjelaskan bentuk, format, dan protokol publik yang mendukung layanan. Untuk informasi selengkapnya tentang cara WCF menangani jenis informasi ini, lihat Metadata.

Kontrak dapat diungkapkan dengan banyak cara, dan sementara WSDL dan XSD adalah bahasa pemrogram yang sangat baik untuk menggambarkan layanan dengan cara yang dapat diakses, mereka adalah bahasa pemrogram yang sulit untuk digunakan secara langsung dan hanya deskripsi layanan, bukan penerapan kontrak layanan. Oleh karena itu, aplikasi WCF menggunakan atribut terkelola, antarmuka, dan kelas untuk menentukan struktur layanan dan untuk menerapkannya.

Kontrak yang dihasilkan dan ditentukan dalam jenis terkelola dapat diekspor sebagai metadata—WSDL dan XSD—jika diperlukan oleh klien atau pelaksana layanan lainnya. Hasilnya adalah model pemrograman langsung yang dapat dijelaskan (menggunakan metadata publik) ke aplikasi klien apa pun. Rincian pesan SOAP yang mendasarinya, informasi terkait transportasi dan keamanan, dan sebagainya, dapat diserahkan kepada WCF, yang melakukan konversi yang diperlukan ke dan dari sistem jenis kontrak layanan ke sistem jenis XML secara otomatis.

Untuk informasi selengkapnya tentang merancang kontrak, lihat Merancang Kontrak Layanan. Untuk informasi selengkapnya tentang menerapkan desain, lihat Menerapkan Kontrak Layanan.

Pesan di Depan dan Tengah

Menggunakan antarmuka terkelola, kelas, dan metode untuk memodelkan operasi layanan sangat mudah saat Anda terbiasa dengan tanda tangan metode gaya panggilan prosedur jarak jauh (RPC), di mana meneruskan parameter ke dalam metode dan menerima nilai pengembalian adalah bentuk normal dari meminta fungsionalitas dari objek atau jenis kode lainnya. Misalnya, pemrogram yang menggunakan bahasa pemrogram terkelola seperti Visual Basic dan C ++ COM dapat menerapkan pengetahuan mereka tentang pendekatan gaya RPC (baik menggunakan objek atau antarmuka) untuk pembuatan kontrak layanan WCF tanpa mengalami masalah yang melekat dalam sistem objek terdistribusi gaya RPC. Orientasi layanan memberikan manfaat dari pemrograman berorientasi pesan yang digabungkan secara longgar sambil mempertahankan kemudahan dan keakraban pengalaman pemrograman RPC.

Banyak pemrogram lebih nyaman dengan antarmuka pemrograman aplikasi berorientasi pesan, seperti antrean pesan seperti Microsoft MSMQ, namespace layanan System.Messaging di .NET Framework, atau mengirim XML yang tidak terstruktur dalam permintaan HTTP, untuk beberapa nama. Untuk informasi selengkapnya tentang pemrograman di tingkat pesan, lihat Menggunakan Kontrak Pesan, Pemrograman Tingkat Saluran Layanan, dan Interoperabilitas dengan Aplikasi POX.

Memahami Hierarki Persyaratan

Kontrak layanan mengelompokkan operasi; menentukan pola pertukaran pesan, jenis pesan, dan jenis data yang dibawa pesan tersebut; dan menunjukkan kategori perilaku run-time yang harus dimiliki penerapan untuk mendukung kontrak (misalnya, mungkin mengharuskan pesan dienkripsi dan ditandatangani). Kontrak layanan itu sendiri tidak menentukan dengan tepat bagaimana persyaratan ini dipenuhi, hanya saja mereka harus melakukannya. Jenis enkripsi atau cara di mana pesan ditandatangani sesuai dengan penerapan dan konfigurasi layanan yang sesuai.

Perhatikan cara kontrak memerlukan hal-hal tertentu dari penerapan kontrak layanan dan konfigurasi run-time untuk menambahkan perilaku. Serangkaian persyaratan yang harus dipenuhi untuk mengekspos layanan untuk menggunakan build berdasarkan serangkaian persyaratan sebelumnya. Jika kontrak membuat persyaratan penerapan, penerapan dapat memerlukan lebih banyak konfigurasi dan pengikatan yang memungkinkan layanan berjalan. Akhirnya, aplikasi host juga harus mendukung persyaratan apa pun yang ditambahkan oleh konfigurasi dan pengikatan layanan.

Proses persyaratan aditif ini penting untuk diingat saat merancang, menerapkan, mengonfigurasi, dan menghosting aplikasi layanan Windows Communication Foundation (WCF). Misalnya, kontrak dapat menentukan bahwa kontrak perlu mendukung sesi. Jika demikian, maka Anda harus mengonfigurasi pengikatan untuk mendukung persyaratan kontraktual tersebut, atau penerapan layanan tidak akan berfungsi. Atau jika layanan Anda memerlukan Autentikasi Terintegrasi Windows dan dihosting di Layanan Informasi Internet (IIS), aplikasi Web tempat layanan berada harus mengaktifkan Autentikasi Terintegrasi Windows dan dukungan anonim dinonaktifkan. Untuk informasi selengkapnya tentang fitur dan dampak dari berbagai jenis aplikasi host layanan, lihat Layanan Hosting.

Lihat juga