Bagikan melalui


Konsep Dasar Windows Communication Foundation

Dokumen ini menyediakan tampilan tingkat tinggi dari arsitektur Windows Communication Foundation (WCF). Ini dimaksudkan untuk menjelaskan konsep utama dan bagaimana arsitektur cocok bersama-sama. Untuk tutorial tentang membuat versi paling sederhana dari layanan dan klien WCF, lihat Tutorial Memulai. Untuk mempelajari pemrograman WCF, lihat Pemrograman WCF Dasar.

Dasar-dasar WCF

WCF adalah runtime dan sekumpulan API untuk membuat sistem yang mengirim pesan antara layanan dan klien. Infrastruktur dan API yang sama digunakan untuk membuat aplikasi yang berkomunikasi dengan aplikasi lain pada sistem komputer yang sama, atau pada sistem yang berada di perusahaan lain dan diakses melalui Internet.

Olahpesan dan Titik Akhir

WCF didasarkan pada gagasan komunikasi berbasis pesan, dan apa pun yang dapat dimodelkan sebagai pesan (misalnya, permintaan HTTP atau pesan Message Queuing (juga dikenal sebagai MSMQ)) dapat direpresentasikan dengan cara yang seragam dalam model pemrograman. Ini memungkinkan API terpadu di seluruh mekanisme transportasi yang berbeda.

Model ini membedakan antara klien, yang merupakan aplikasi yang memulai komunikasi, dan layanan, yang merupakan aplikasi yang menunggu klien berkomunikasi dengan mereka dan menanggapi komunikasi tersebut. Satu aplikasi dapat bertindak sebagai klien dan layanan. Misalnya, lihat Layanan Dupleks dan Jaringan Peer-to-Peer.

Pesan dikirim antar-titik akhir. Titik akhir adalah tempat pesan dikirim atau diterima (atau keduanya), dan menentukan semua informasi yang diperlukan untuk pertukaran pesan. Layanan mengekspos satu atau beberapa titik akhir aplikasi (serta nol atau lebih titik akhir infrastruktur), dan klien menghasilkan titik akhir yang kompatibel dengan salah satu titik akhir layanan.

Titik akhir menjelaskan dengan cara berbasis standar di mana pesan harus dikirim, bagaimana pesan harus dikirim, dan seperti apa pesan tersebut. Layanan dapat mengekspos informasi ini sebagai metadata yang dapat diproses klien untuk menghasilkan klien WCF dan tumpukan komunikasi yang sesuai.

Protokol Komunikasi

Salah satu elemen yang diperlukan dari tumpukan komunikasi adalah protokol transportasi. Pesan dapat dikirim melalui intranet dan Internet menggunakan transportasi umum, seperti HTTP dan TCP. Transportasi lain disertakan yang mendukung komunikasi dengan aplikasi dan simpul Message Queuing pada mesh Jaringan Serekan. Lebih banyak mekanisme transportasi dapat ditambahkan menggunakan titik ekstensi bawaan WCF.

Elemen lain yang diperlukan dalam tumpukan komunikasi adalah pengodean yang menentukan bagaimana pesan yang diberikan diformat. WCF menyediakan pengodean berikut:

  • Pengodean teks, pengodean yang dapat dioperasikan.

  • Pengodean Mekanisme Pengoptimalan Transmisi Pesan (MTOM), yang merupakan cara yang dapat dioperasikan untuk mengirim data biner yang tidak terstruktur ke dan dari layanan secara efisien.

  • Pengodean biner untuk transfer yang efisien.

Mekanisme pengodean lainnya (misalnya, pengodean kompresi) dapat ditambahkan menggunakan titik ekstensi bawaan WCF.

Pola Pesan

WCF mendukung beberapa pola olahpesan, termasuk permintaan-balasan, komunikasi satu arah, dan dupleks. Transportasi yang berbeda mendukung pola olahpesan yang berbeda, dan dengan demikian memengaruhi jenis interaksi yang didukung. API dan runtime WCF juga membantu Anda mengirim pesan dengan aman dan andal.

Istilah WCF

Konsep dan istilah lain yang digunakan dalam dokumentasi WCF meliputi hal-hal berikut:

Pesan
Unit data mandiri yang dapat terdiri dari beberapa bagian, termasuk isi dan header.

Layanan
Konstruksi yang mengekspos satu atau beberapa titik akhir, dengan setiap titik akhir mengekspos satu atau beberapa operasi layanan.

Endpoint
Konstruksi tempat pesan dikirim atau diterima (atau keduanya). Ini terdiri dari lokasi (alamat) yang menentukan di mana pesan dapat dikirim, spesifikasi mekanisme komunikasi (pengikatan) yang menjelaskan bagaimana pesan harus dikirim, dan definisi untuk sekumpulan pesan yang dapat dikirim atau diterima (atau keduanya) di lokasi tersebut (kontrak layanan) yang menjelaskan pesan apa yang dapat dikirim.

Layanan WCF diekspos ke dunia sebagai kumpulan titik akhir.

Titik akhir aplikasi
Titik akhir yang diekspos oleh aplikasi dan yang sesuai dengan kontrak layanan yang diimplementasikan oleh aplikasi.

Titik akhir infrastruktur
Titik akhir yang diekspos oleh infrastruktur untuk memfasilitasi fungsionalitas yang diperlukan atau disediakan oleh layanan yang tidak terkait dengan kontrak layanan. Misalnya, layanan mungkin memiliki titik akhir infrastruktur yang menyediakan informasi metadata.

Alamat
Menentukan lokasi tempat pesan diterima. Ini ditentukan sebagai Pengidentifikasi Sumber Daya Seragam (URI). Bagian skema URI menamai mekanisme transportasi yang akan digunakan untuk mencapai alamat, seperti HTTP dan TCP. Bagian hierarkis dari URI berisi lokasi unik yang formatnya bergantung pada mekanisme transportasi.

Alamat titik akhir memungkinkan Anda membuat alamat titik akhir unik untuk setiap titik akhir dalam layanan atau, dalam kondisi tertentu, untuk berbagi alamat di seluruh titik akhir. Contoh berikut menunjukkan alamat menggunakan protokol HTTPS dengan port non-default:

HTTPS://cohowinery:8005/ServiceModelSamples/CalculatorService

Pengikatan
Menentukan bagaimana titik akhir berkomunikasi dengan dunia. Ini dibangun dari sekumpulan komponen yang disebut elemen pengikatan yang "menumpuk" satu di atas yang lain untuk membuat infrastruktur komunikasi. Pengikatan mendefinisikan transportasi (seperti HTTP atau TCP) dan pengodean yang digunakan (seperti teks atau biner). Pengikatan dapat berisi elemen pengikatan yang menentukan detail seperti mekanisme keamanan yang digunakan untuk mengamankan pesan, atau pola pesan yang digunakan oleh titik akhir. Untuk informasi selengkapnya, lihat Mengonfigurasi Layanan.

Elemen pengikatan
Mewakili bagian tertentu dari pengikatan, seperti transportasi, pengodean, implementasi protokol tingkat infrastruktur (seperti WS-ReliableMessaging), atau komponen lain dari tumpukan komunikasi.

Perilaku
Komponen yang mengontrol berbagai aspek run-time layanan, titik akhir, operasi tertentu, atau klien. Perilaku dikelompokkan sesuai dengan cakupan: perilaku umum memengaruhi semua titik akhir secara global, perilaku layanan hanya memengaruhi aspek terkait layanan, perilaku titik akhir hanya memengaruhi properti terkait titik akhir, dan perilaku tingkat operasi memengaruhi operasi tertentu. Misalnya, satu perilaku layanan adalah pembatasan, yang menentukan bagaimana layanan bereaksi ketika pesan yang berlebihan mengancam kemampuan penanganannya. Di sisi lain, perilaku titik akhir hanya mengontrol aspek yang relevan dengan titik akhir, seperti bagaimana dan di mana menemukan kredensial keamanan.

Pengikatan yang disediakan sistem
WCF mencakup sejumlah pengikatan yang disediakan sistem. Ini adalah kumpulan elemen pengikatan yang dioptimalkan untuk skenario tertentu. Misalnya, WSHttpBinding dirancang untuk interoperabilitas dengan layanan yang menerapkan berbagai spesifikasi WS-*. Pengikatan yang telah ditentukan sebelumnya ini menghemat waktu dengan hanya menyajikan opsi yang dapat diterapkan dengan benar ke skenario tertentu. Jika pengikatan yang telah ditentukan sebelumnya tidak memenuhi kebutuhan Anda, Anda dapat membuat pengikatan kustom sendiri.

Konfigurasi versus pengodean
Kontrol aplikasi dapat dilakukan baik melalui pengodean, melalui konfigurasi, atau melalui kombinasi keduanya. Konfigurasi memiliki keuntungan, yaitu mengizinkan seseorang selain pengembang (misalnya, administrator jaringan) untuk mengatur parameter klien dan layanan setelah kode ditulis tanpa harus mengkompilasi ulang. Konfigurasi tidak hanya memungkinkan Anda mengatur nilai seperti alamat titik akhir, tetapi juga memungkinkan kontrol lebih lanjut dengan memungkinkan Anda menambahkan titik akhir, pengikatan, dan perilaku. Pengodean memungkinkan pengembang untuk mempertahankan kontrol ketat atas semua komponen layanan atau klien, dan pengaturan apa pun yang dilakukan melalui konfigurasi dapat diperiksa dan ditimpa oleh kode jika diperlukan.

Operasi layanan
Prosedur yang ditentukan dalam kode layanan yang mengimplementasikan fungsionalitas untuk operasi. Operasi ini diekspos ke klien sebagai metode pada klien WCF. Metode ini dapat mengembalikan nilai, dan dapat mengambil sejumlah argumen opsional, atau tidak mengambil argumen, dan tidak mengembalikan respons. Misalnya, operasi yang berfungsi sebagai "Halo" sederhana dapat digunakan sebagai pemberitahuan kehadiran klien dan untuk memulai serangkaian operasi.

Kontrak layanan
Mengikat beberapa operasi terkait ke dalam satu unit fungsional. Kontrak dapat menentukan pengaturan tingkat layanan, seperti namespace layanan, kontrak panggilan balik yang sesuai, dan pengaturan lainnya. Dalam kebanyakan kasus, kontrak didefinisikan dengan membuat antarmuka dalam bahasa pemrograman pilihan Anda dan menerapkan atribut ServiceContractAttribute ke antarmuka. Kode layanan yang sebenarnya dihasilkan dengan mengimplementasikan antarmuka.

Kontrak operasi
Kontrak operasi menentukan parameter dan jenis pengembalian operasi. Saat membuat antarmuka yang menentukan kontrak layanan, Anda menandakan kontrak operasi dengan menerapkan atribut OperationContractAttribute ke setiap definisi metode yang merupakan bagian dari kontrak. Operasi dapat dimodelkan sebagai mengambil satu pesan dan mengembalikan satu pesan, atau mengambil sekumpulan jenis dan mengembalikan jenis. Dalam kasus terakhir, sistem akan menentukan format untuk pesan yang perlu ditukar untuk operasi tersebut.

Kontrak pesan
Menjelaskan format pesan. Misalnya, menyatakan apakah elemen pesan harus masuk ke header atau isi, tingkat keamanan apa yang harus diterapkan ke elemen pesan apa, dan sebagainya.

Kontrak kesalahan
Dapat dikaitkan dengan operasi layanan untuk menunjukkan kesalahan yang dapat dikembalikan ke pemanggil. Operasi dapat memiliki nol atau lebih kesalahan yang terkait dengannya. Kesalahan ini adalah kesalahan SOAP yang dimodelkan sebagai pengecualian dalam model pemrograman.

Kontrak data
Deskripsi dalam metadata jenis data yang digunakan layanan. Ini memungkinkan orang lain untuk beroperasi dengan layanan. Jenis data dapat digunakan di bagian mana pun dari pesan, misalnya, sebagai parameter atau jenis pengembalian. Jika layanan hanya menggunakan jenis sederhana, tidak perlu menggunakan kontrak data secara eksplisit.

Hosting
Layanan harus dihosting dalam beberapa proses. Host adalah aplikasi yang mengontrol masa pakai layanan. Layanan dapat dihosting sendiri atau dikelola oleh proses hosting yang ada.

Layanan yang dihosting sendiri
Layanan yang berjalan dalam aplikasi proses yang dibuat pengembang. Pengembang mengontrol masa pakainya, mengatur properti layanan, membuka layanan (yang mengaturnya ke mode mendengarkan), dan menutup layanan.

Proses hosting
Aplikasi yang dirancang untuk menghosting layanan. Ini termasuk Layanan Informasi Internet (IIS), Windows Activation Services (WAS), dan Layanan Windows. Dalam skenario yang dihosting ini, host mengontrol masa pakai layanan. Misalnya, dengan menggunakan IIS Anda dapat menyiapkan direktori virtual yang berisi rakitan layanan dan file konfigurasi. Ketika pesan diterima, IIS memulai layanan dan mengontrol masa pakainya.

Instancing
Layanan memiliki model instancing. Ada tiga model instancing: "tunggal", di mana satu objek CLR melayani semua klien; "per panggilan", di mana objek CLR baru dibuat untuk menangani setiap panggilan klien; dan "per sesi", di mana satu set objek CLR dibuat, satu untuk setiap sesi terpisah. Pilihan model instancing bergantung pada persyaratan aplikasi dan pola penggunaan layanan yang diharapkan.

Aplikasi klien
Program yang bertukar pesan dengan satu atau beberapa titik akhir. Aplikasi klien dimulai dengan membuat instans klien WCF dan metode panggilan klien WCF. Penting untuk dicatat bahwa satu aplikasi dapat menjadi klien dan layanan.

Channel
Implementasi konkret dari elemen pengikatan. Pengikatan mewakili konfigurasi, dan saluran adalah implementasi yang terkait dengan konfigurasi tersebut. Oleh karena itu, ada saluran yang terkait dengan setiap elemen pengikatan. Saluran menumpuk di atas satu sama lain untuk menciptakan implementasi konkret dari pengikatan: tumpukan saluran.

Klien WCF
Konstruksi aplikasi klien yang mengekspos operasi layanan sebagai metode (dalam bahasa pemrograman .NET Framework pilihan Anda, seperti Visual Basic atau Visual C#). Aplikasi apa pun dapat menghosting klien WCF, termasuk aplikasi yang menghosting layanan. Oleh karena itu, dimungkinkan untuk membuat layanan yang mencakup klien WCF dari layanan lain.

Klien WCF dapat dibuat secara otomatis dengan menggunakan ServiceModel Metadata Utility Tool (Svcutil.exe) dan mengarahkannya ke layanan yang sedang berjalan yang menerbitkan metadata.

Metadata
Dalam sebuah layanan, menjelaskan karakteristik layanan yang perlu dipahami oleh entitas eksternal untuk berkomunikasi dengan layanan tersebut. Metadata dapat digunakan oleh ServiceModel Metadata Utility Tool (Svcutil.exe) untuk menghasilkan klien WCF dan konfigurasi yang menyertainya yang dapat digunakan aplikasi klien untuk berinteraksi dengan layanan.

Metadata yang diekspos oleh layanan mencakup dokumen skema XML, yang menentukan kontrak data layanan, dan dokumen WSDL, yang menjelaskan metode layanan.

Jika diaktifkan, metadata untuk layanan secara otomatis dihasilkan oleh WCF dengan memeriksa layanan dan titik akhirnya. Untuk menerbitkan metadata dari layanan, Anda harus mengaktifkan perilaku metadata secara eksplisit.

Keamanan
Dalam WCF, termasuk kerahasiaan (enkripsi pesan untuk mencegah penyadapan), integritas (sarana untuk mendeteksi perusakan pesan), autentikasi (sarana untuk validasi server dan klien), dan otorisasi (kontrol akses ke sumber daya). Fungsi-fungsi ini disediakan dengan memanfaatkan mekanisme keamanan yang ada, seperti TLS melalui HTTP (juga dikenal sebagai HTTPS), atau dengan mengimplementasikan satu atau beberapa spesifikasi keamanan WS-*.

Mode keamanan transportasi
Menentukan bahwa kerahasiaan, integritas, dan autentikasi disediakan oleh mekanisme lapisan transportasi (seperti HTTPS). Saat menggunakan transportasi seperti HTTPS, mode ini memiliki keuntungan karena kinerjanya yang efisien, dan dipahami dengan baik karena prevalensinya di Internet. Kerugiannya adalah bahwa jenis keamanan ini diterapkan secara terpisah pada setiap hop di jalur komunikasi, membuat komunikasi rentan terhadap serangan "man in the middle".

Mode keamanan pesan
Menentukan bahwa keamanan disediakan dengan mengimplementasikan satu atau beberapa spesifikasi keamanan, seperti spesifikasi yang disebut Keamanan Layanan Web: Keamanan Pesan SOAP. Setiap pesan berisi mekanisme yang diperlukan untuk memberikan keamanan selama transit, dan untuk memungkinkan penerima mendeteksi perusakan dan untuk mendekripsi pesan. Dalam hal ini, keamanan dienkapsulasi dalam setiap pesan, memberikan keamanan ujung ke ujung di beberapa hop. Karena informasi keamanan menjadi bagian dari pesan, dimungkinkan juga untuk menyertakan beberapa jenis kredensial dengan pesan (ini disebut sebagai klaim). Pendekatan ini juga memiliki keuntungan yaitu memungkinkan pesan untuk melakukan perjalanan dengan aman melalui transportasi apapun, termasuk beberapa transportasi antara asal dan tujuan. Kerugian dari pendekatan ini adalah kompleksitas mekanisme kriptografi yang digunakan, menghasilkan implikasi performa.

Mode transportasi dengan keamanan kredensial pesan
Menentukan penggunaan lapisan transportasi untuk memberikan kerahasiaan, autentikasi, dan integritas pesan, sementara setiap pesan dapat berisi beberapa kredensial (klaim) yang diperlukan oleh penerima pesan.

WS-*
Singkatan dari spesifikasi Web Service (WS) yang terus berkembang, seperti WS-Security, WS-ReliableMessaging, dan sebagainya, yang diimplementasikan dalam WCF.

Lihat juga