Kontrak
Bagian ini menunjukkan kepada Anda cara menentukan dan mengimplementasikan kontrak Windows Communication Foundation (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 WCF lainnya, lihat Konsep Dasar Windows Communication Foundation. 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. Untuk informasi selengkapnya tentang saluran klien, arsitektur klien, dan masalah klien lainnya, lihat Klien.
Gambaran Umum
Topik ini memberikan orientasi konseptual tingkat tinggi untuk merancang dan mengimplementasikan layanan WCF. Subtopik memberikan informasi yang lebih terperinci tentang spesifikasi perancangan dan implementasi. 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 run-time atau lingkungan hosting.
Kontrak Layanan
Kontrak layanan adalah pernyataan yang memberikan informasi tentang:
Pengelompokan operasi dalam layanan.
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:
Bahwa kontrak pesanan pembelian terdiri dari operasi
CreateOrder
danGetOrderStatus
.Bahwa operasi telah menentukan pesan input dan pesan output.
Data yang dapat dibawa oleh pesan-pesan ini.
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), antara 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 diekspresikan dengan banyak cara, namun, dan sementara WSDL dan XSD adalah bahasa yang sangat baik untuk menggambarkan layanan dengan cara yang dapat diakses, mereka adalah bahasa yang sulit untuk digunakan secara langsung—dalam hal apa pun, mereka hanyalah deskripsi layanan, bukan implementasi kontrak layanan. Oleh karena itu, aplikasi WCF menggunakan atribut, antarmuka, dan kelas terkelola baik untuk mendefinisikan struktur dan untuk mengimplementasikan layanan.
Kontrak yang dihasilkan yang ditentukan dalam jenis terkelola dapat dikonversi (juga disebut diekspor) sebagai metadata—WSDL dan XSD—bila diperlukan oleh klien atau pelaksana layanan lainnya, terutama pada platform lain. Hasilnya adalah model pemrograman langsung yang dapat dijelaskan menggunakan metadata publik ke aplikasi klien apa pun. Perincian pesan SOAP yang mendasarinya, seperti transportasi dan informasi terkait keamanan, dapat diserahkan ke WCF, yang secara otomatis melakukan konversi yang diperlukan ke dan dari sistem jenis kontrak layanan ke sistem tipe XML.
Untuk informasi selengkapnya tentang merancang kontrak, lihat Merancang Kontrak Layanan. Untuk informasi selengkapnya tentang menerapkan desain, lihat Menerapkan Kontrak Layanan.
Selain itu, WCF juga menyediakan kemampuan untuk mengembangkan kontrak layanan sepenuhnya pada tingkat pesan. Untuk informasi selengkapnya tentang mengembangkan kontrak layanan di tingkat pesan, lihat Menggunakan Kontrak Pesan. Untuk informasi selengkapnya tentang mengembangkan layanan di XML non-SOAP, lihat Interoperabilitas dengan Aplikasi POX.
Memahami Hierarki Persyaratan
Kontrak layanan mengelompokkan operasi; menentukan MEP, tipe pesan, dan tipe data yang dibawa oleh pesan tersebut; dan menunjukkan kategori perilaku run-time yang harus dimiliki implementasi untuk mendukung kontrak (misalnya, mungkin mengharuskan pesan dienkripsi dan ditandatangani). Kontrak layanan itu sendiri, bagaimanapun, tidak merinci secara tepat bagaimana persyaratan ini dipenuhi, hanya saja persyaratan itu harus dipenuhi. Jenis enkripsi apa atau bagaimana pesan ditandatangani tergantung pada implementasi 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 tambahan ini penting untuk diingat saat merancang, mengimplementasikan, mengonfigurasi, dan menghosting aplikasi layanan Windows Communication Foundation (WCF) Anda. 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 Windows Terintegrasi dan di-host di Layanan Informasi Internet (IIS), aplikasi Web tempat layanan berada harus mengaktifkan autentikasi Windows Terintegrasi dan dukungan anonim dimatikan. Untuk informasi selengkapnya tentang fitur dan dampak berbagai jenis aplikasi host layanan, lihat Hosting.