Arsitektur Windows Communication Foundation Architecture atau WCF
Grafik berikut menggambarkan lapisan utama arsitektur Windows Communication Foundation (WCF).
Arsitektur WCF
Kontrak dan Deskripsi
Kontrak menentukan berbagai aspek sistem pesan. Kontrak data menjelaskan setiap parameter yang membentuk setiap pesan yang dapat dibuat atau dikonsumsi layanan. Parameter pesan ditentukan oleh dokumen bahasa definisi Skema XML, memungkinkan sistem yang memahami XML untuk memproses dokumen. Kontrak pesan menentukan bagian pesan tertentu menggunakan protokol SOAP, dan memungkinkan kontrol yang lebih halus atas bagian pesan, ketika interoperabilitas menuntut ketepatan tersebut. Kontrak layanan menentukan tanda tangan metode aktual layanan, dan didistribusikan sebagai antarmuka di salah satu bahasa pemrogram yang didukung seperti Visual Basic atau Visual C#.
Kebijakan dan pengikatan menetapkan persyaratan yang diperlukan untuk berkomunikasi dengan layanan. Misalnya, pengikatan harus (setidaknya) menentukan transportasi yang digunakan (misalnya HTTP atau TCP), dan pengodean. Kebijakan mencakup persyaratan keamanan dan lainnya yang harus dipenuhi untuk berkomunikasi dengan layanan.
Runtime Layanan
Lapisan runtime layanan berisi perilaku yang hanya terjadi selama operasi aktual layanan, yaitu perilaku runtime layanan. Pembatasan mengontrol jumlah pesan yang diproses, yang dapat bervariasi jika permintaan untuk layanan bertambah hingga batas prasetel. Perilaku kesalahan menentukan hal yang terjadi ketika terjadi kesalahan internal pada layanan, misalnya dengan mengontrol informasi yang dikomunikasikan kepada klien. (Terlalu banyak informasi dapat menguntungkan pengguna jahat dalam memasang serangan.) Perilaku metadata mengatur bagaimana dan apakah metadata tersedia untuk dunia luar. Perilaku instans menentukan jumlah instans layanan yang dapat dijalankan (misalnya, database tunggal menentukan hanya satu instans untuk memproses semua pesan). Perilaku transaksi memungkinkan pemutaran kembali operasi yang ditransaksikan jika terjadi kegagalan. Perilaku pengiriman merupakan kontrol atas cara pesan diproses oleh infrastruktur WCF.
Ekstensibilitas memungkinkan kustomisasi proses runtime. Misalnya, pemeriksaan merupakan fasilitas untuk memeriksa bagian pesan dan pemfilteran parameter memungkinkan tindakan prasetel terjadi berdasarkan tindakan filter pada header pesan.
Olahpesan
Lapisan olahpesan terdiri dari saluran. Saluran adalah komponen yang memproses pesan dalam beberapa cara, misalnya dengan mengautentikasi pesan. Satu set saluran juga disebut tumpukan saluran. Saluran beroperasi pada pesan dan header pesan. Hal ini berbeda dari lapisan runtime layanan yang utamanya berkaitan dengan pemrosesan konten isi pesan.
Ada dua jenis saluran: saluran transportasi dan saluran protokol.
Saluran transportasi membaca dan menulis pesan dari jaringan (atau beberapa titik komunikasi lainnya dengan dunia luar). Beberapa transportasi menggunakan penyandi untuk mengubah mengonversi pesan (yang direpresentasikan sebagai Infosets XML) ke dan dari representasi aliran byte yang digunakan oleh jaringan. Contoh transportasi adalah HTTP, pipa yang dinamai, TCP, dan MSMQ. Contoh pengodean adalah XML dan biner yang dioptimalkan.
Saluran protokol menerapkan protokol pemrosesan pesan, sering kali dengan membaca atau menulis header tambahan ke pesan. Contoh protokol tersebut termasuk WS-Security dan WS-Reliability.
Lapisan olahpesan menggambarkan kemungkinan format dan pola pertukaran data. WS-Security adalah implementasi dari spesifikasi WS-Security yang memungkinkan keamanan di lapisan pesan. Saluran Olahpesan WS-Reliable memungkinkan jaminan pengiriman pesan. Penyandi menyajikan berbagai pengodean yang dapat digunakan agar sesuai dengan kebutuhan pesan. Saluran HTTP menentukan bahwa Protokol Transportasi HyperText digunakan untuk pengiriman pesan. Saluran TCP juga menentukan protokol TCP. Saluran Alur Transaksi mengelola pola pesan yang ditransaksikan. Saluran Pipa Bernama memungkinkan komunikasi antarproses. Saluran MSMQ memungkinkan interoperasi dengan aplikasi MSMQ.
Hosting dan Aktivasi
Dalam bentuk akhirnya, layanan adalah sebuah program. Seperti program lain, layanan harus dijalankan dalam executable. Ini dikenal sebagai layanan yang dihost sendiri.
Layanan juga dapat dihosting, atau dijalankan dalam executable yang dikelola oleh agen eksternal, seperti IIS atau Windows Activation Service (WAS). WAS memungkinkan aplikasi WCF diaktifkan secara otomatis saat disebarkan di komputer yang menjalankan WAS. Layanan juga dapat dijalankan secara manual sebagai executable (file .exe). Layanan juga dapat dijalankan secara otomatis sebagai layanan Windows. Komponen COM+ juga dapat dihosting sebagai layanan WCF.