Windows Communication Foundation


Windows Communication Foundation (WCF) adalah cara baru dalam membuat aplikasi berbasis distribusi data. Apa dan bagaimana WCF? Dua tahun lalu Microsoft meluncurkan suatu library atau framework yang dikenal Windows Communication Foundation atau disingkat dengan WCF. Library ini memungkinkan kita membantu kita dalam membangun aplikasi berbasis distribusi data. WCF ini sebenarnya merupakan enkapsulasi dari socket sehingga para developer tidak perlu fokus ke level socket dalam membuat aplikasi distribusi data, tetapi lebih focus pada format data yang merupakan suatu kontrak yang mengikat ketika ingin melakukan komunikasi. Pada saat peluncuran library WCF, Microsoft sudah meluncurkan development tool, yaitu Visual Studio 2005 yang targetnya untuk .NET Framework 2.0. Sedang kan, library WCF tersebut berjalan di atas .NET Framework 3.0 atau di atasnya sehingga untuk membuat aplikasi WCF dengan menggunakan Visual Studio 2005, maka kita memerlukan WCF Extension yang diinstal, di mana Visual Studio 2005 diinstal atau menggunakan Visual Studio 2008 yang tahun kemarin diluncurkan.


Unified Programming Model

WCF tidak hanya hadir untuk menyelesaikan permasalahan dasar pada sistem distribusi, tetapi juga memperbaiki dalam proses pengembangan perangkat lunak. WCF menawarkan model programming yang memungkinkan untuk integrasi beberapa model pemrograman. Tujuan integrasi model programming tidak lain hanya untuk meningkatkan kualitas dan mengurangi lamanya proses pengembangan perangkat lunak.

Model pemrograman yang ditawarkan pada WCF seperti yang terlihat pada Gambar 1. Setidaknya ada lima model pemrograman yang dapat kita gunakan untuk berkomunikasi dengan aplikasi WCF. Kelima model pemrograman ini, antara lain:

  • Web Service (WS)/WS Enhancement (WSE)

Web Service (WS) seperti kita ketahui merupakan salah satu cara untuk mendistribusi data dalam bentuk service dan model WS ini diimplementasi dengan pendekatan Service Orientation Architecture (SOA). Sedangkan, WS Enhancement (WSE) adalah salah satu jawaban untuk menyelesaikan permasalahan pada WS terutama pada data transfer yang berupa plain text sehingga WSE memberikan alternatif lain yang memungkinknan data transfer dapat berupa binary. Selain itu, WSE juga menawarkan sistem sekuriti yang lebih baik. WS dan WSE dengan berbagai fitur yang mengesankan menjadikan ini salah satu solusi yang ditawarkan oleh Microsoft dan WCF sebagai pengembangan baru dari WS secara inline dapat berkomunikasi dengan WS maupun WSE melalui interop.

  • Attribute-Based Programming

Pemrograman berbasis Attribute adalah fitur yang ditawarkan oleh .NET Framework guna membuat aplikasi dengan mudah yaitu cukup dengan memasang attribute pada objek yang didefinisikan. Enterprise service adalah bentuk implementasi dari pemrograman attribute-based. Contoh enterprise service adalah COM+. WCF dapat berkomunikasi dengan COM+ melalui attribute-based.

  • REST/HTTP Programming

WCF tidak hanya berkomunikasi dengan platform, tetapi juga dapat berkomunikasi pada protokol jaringan seperti HTTP. Protokol ini digunakan oleh WCF untuk distribusi data.

  • Message-Oriented Programming

Salah satu bentuk message-oriented adalah MSMQ (Microsoft Message Queuing) yang dapat digunakan untuk distribusi data dan juga fitur antrian. WCF dan MSMQ dapat berkolaborasi guna menghasilkan aplikasi yang lebih baik.


Gambar 1. Model Unified Programming Pada WCF.

  • .NET Remoting

.NET Remoting adalah platform komunikasi yang secara implementasinya hanya dapat digunakan pada lingkungan aplikasi berbasis .NET. WCF bisa dikatakan secara implicit merupakan pengganti dari teknologi .NET Remoting dengan fitur yang jauh lebih lengkap. Walau WCF dapat menggantikan .NET Remoting, tetapi WCF sendiri dapat langsung berkomunikasi dengan .NET Remoting.

Arsitektur WCF

Arsitektur umum dari WCF digambarkan seperti pada Gambar 2. Kalau kita perhatikan ada empat layer yang dibentuk ketika membangun aplikasi WCF, antara lain:

Gambar 2. Arsitektur umum WCF.

  • Contract

Contract atau dalam bahasa Indonesia berarti kontrak yang diartikan dalam kehidupan sehari-hari seperti kontrak atau perjanjian, yang mana kita memberikan tanda tangan ke dalam kontak tersebut. WCF contract juga mempunyai pengertian yang sama. Di dalam WCF contract berisi servis apa yang disediakan dan tipe dari servis tersebut. Bentuk WFC contract terdiri atas Data, Message, Service, dan Policy/Binding. Policy/Binding memungkinkan kita untuk memaksa agar WCF service dapat berjalan pada kondisi yang diinginkan, misalkan binding harus menggunakan transport HTTP dan sebuah encoding tertentu. Kita dapat memasukkan security policy pada WCF.

  • Service Runtime

Layer ini bertugas untuk mengontrol servis dari WCF yang lagi berjalan. Antara WCF service satu dengan WCF service lainnya akan berbeda kelakuannya tergantung pada tipe WCF service yang dibuat. Layer Service Runtime ini melakukan monitoring terhadap servis, antara lain:

  • Throttling Behavior.

  • Error Behavior.

  • Metadata Behavior.

  • Instance Behavior.

  • Message Inspection.

  • Transaction Behavior.

  • Dispatch Behavior.

  • Concurrency Behavior.

  • Parameter Filtering.

  • Messaging

Layer ini berisi mengenai channel. Sedangkan, channel adalah komponen atau library yang memproses message dalam banyak cara contohnya melakukan proses autentikasi message. Kumpulan dari beberapa channel disebut dengan channel stack. Perbedaan dengan layer Service Runtime terdapat pada proses pengolahan isi message body. Hubungan antara message channel diperlihatkan seperti pada Gambar 3. Ada dua tipe channel yang disediakan oleh WCF, yaitu:

  • Transport channels. Channel ini membaca dan menulis message pada jaringan. Pada kasus tertentu, transport ini menggunakan encoder dalam memproses message dari dan ke byte stream yang merupakan representative dari data jaringan. Contoh tranport channels, yaitu HTTP, named pipes, TCP, dan MSMQ

  • Protocol channels. Channel ini merupakan implementasi proses pengolahan message yang membaca atau menulis pada penambahan data header dari message. Contoh protocol channels, yaitu WS-Security dan WS-Reliability.

Gambar 3. Diagram message terhadap channel WCF.

  • Activation dan Hosting

Layer ini menyediakan beberapa opsi pada WCF service pada saat servis ini dijalankan dan host yang digunakan. WCF service dapat dihosting dalam beberapa cara, seperti:

  • Windows Activation Service.

  • Executable file (*.EXE).

  • Windows Services.

  • COM+.

Address, Binding, dan Contract

Dalam membangun aplikasi WCF setidaknya ada tiga hal yang perlu diperhatikan:

  • Address.

  • Binding.

  • Contract.

Hubungan ketiganya dapat dilihat pada Gambar 4. Kalau kita perhatikan, setiap endpoint akan mempunyai Address, Binding, dan Contract. Sedangkan, setiap WCF Service akan mempunyai endpoint sebagai gerbang untuk berkomunikasi.

Gambar 4. Address, Binding, dan Contract.

Address, adalah network address (IP Address) yang menunjukkan di mana servis itu berada contohnya adalah 192.168.0.4, 192.168.2.10. Kita juga bisa menggantikan IP Address dengan hostname selama kita bisa mendapatkan orisinal IP Address dari hostname tersebut.

Binding, merupakan cara bagaimana client dapat berkomunikasi dengan endpoint termasuk transport protocol, encoding, dan juga sekuriti jika diterapkan. Macam-macam binding dan transport yang digunakan dapat dilihat pada Gambar 5. Contract, menunjukkan operasi apa yang tersedia untuk client.

Gambar 5. Tabel fitur WCF untuk binding dan transport.

Contoh sebuah contract diimplementasikan dalam code seperti terlihat pada Gambar 6.

Gambar 6. Contoh implementasi kode untuk sebuah contract WCF.

Reliability

Salah satu fitur unggulan dari WCF adalah realiability dalam hal pengiriman dan penerimaan paket message. Pada WCF proses pengaturan dan pengecekan paket masuk dan keluar dilakukan setiap saat guna menjamin bahwa message hanya dikirim dan diterima sekali sesuai dengan paket dikirim. WCF ini berjalan di atas protocol TCP pada dengan pendekatan message berupa SOAP. Selain itu, WCF juga fleksibel dalam hal proses disconnected komunikasi ataupun proses penanganan pada kegagalan transport SOAP. Secara default, fitur reliability ini sudah diaktifkan kecuali untuk:

  • WS Binding.

  • TCP Binding.

Jadi untuk dua binding di atas, kita harus melakukan enabled untuk fitur reliability, sedangkan WS dual binding selalu enabled untuk fitur ini. Untuk melakukan enabled reliability, cukup dilakukan file konfigurasi seperti pada Gambar 7.

Gambar 7. Contoh konfi gurasi fitur reliability WCF.

Pada binding tertentu, WCF tidak support untuk fitur reliability, seperti:

  • Basic Binding.

  • Peer TCP Binding.

Khusus untuk WCF yang integrasi dengan MSMQ binding, fitur reliability ini tidak diperlukan karena memang MSMQ sudah tersedia fitur reliability sehingga kita cukup mengikuti fitur reliability pada MSMQ. Lebih lengkapnya fitur reliability terhadap binding dapat dilihat pada Gambar 8.

Gambar 8. Tabel fitur reliability WCF terhadap binding.

Membangun Aplikasi WCF

Untuk membuat aplikasi WCF diperlukan platform .NET Framework 3.0 atau 3.5. Selain platform, kita juga memperlukan IDE untuk development. Walaupun kita dapat menggunakan Notepad untuk membangun WCF tetapi sebaiknya kita menggunakan Visual Studio. Versi Visual Studio yang dapat dipakai:

  • Visual Studio 2005 dengan WCF Extention.

  • Visual Studio 2008.

Pada Visual Studio 2008 dengan target .NET Framework 3.5, kita dapat langsung membuat aplikasi WCF melalui template project yang disediakan seperti yang terlihat pada Gambar 9.

Gambar 9. Membuat project baru WCF pada Visual Studio 2008.

Ada empat template project WCF yang dapat kita gunakan, antara lain:

  • Sequential Workfl ow Service Library.

  • State Machine Workfl ow Service Library.

  • Syndication Service Library.

  • WCF Service Library.

Template project Sequential Workflow Service Library dan State Machine Workflow Service Library digunakan apabila kita menginginkan integrasi antara WCF dan WWF (Windows Workflow Foundations). Langkah-langkah pembuatan WCF secara umum sebagai berikut:

  • Menentukan service contract. Tujuan di sini adalah mendefinisikan kontrak servis yang nantinya akan dipublikasikan dan dipakai oleh client karena kontrak ini akan menentukan sifat dari servis tersebut. Dalam menentukan service contract, hal yang perlu dipertimbangkan, yaitu:

  • Tentukan business process yang akan dipublikasikan dalam service contract.

  • Seberapa banyak objek yang digunakan dalam service contract karena ini akan berimplikasi pada bandwidth yang digunakan.

  • Tentukan bentuk service contract dalam bentuk class atau interface.

  • Implementasi service contract. Setelah ditentukan service contract, kita langsung mengimplementasikan sesuai dengan bentuknya (class atau interface). Dalam implementasi, kita juga menggunakan IDE Visual Studio 2005 with WCF Extension dan Visual Studio 2008.

  • Configure WCF service dengan spesifik endpoint. Tujuan di sini adalah menentukan endpoint seperti address, binding, dan contract supaya client dapat memanfaatkan WCF ini.

  • Menentukan Host WCF service. Penentuan Host WCF service pada umumnya tergantung pada availability dari WCF service. Jika diinginkan high availability, maka host dengan IIS dan Windows Service akan jauh lebih menguntungkan.

  • Membangun aplikasi client. Tentunkan jenis aplikasi client, apakah berbentuk desktop, web, mobile, atau smart client. Semua jenis aplikasi client ini akan tergantung pada kebutuhan client yang beroperasi.

Contoh hasil implementasi sederhana untuk aplikasi WCF bisa dilihat pada Gambar 10.

Gambar 10. Contoh implementasi aplikasi sederhana WCF.

Model Transaction

Pada kondisi di mana transaksi yang besar apalagi antara transaksi satu dengan transaksi lainnya saling bergantung, maka kebutuhan akan Transaction sangat tinggi. WCF yang didesain untuk kebutuhan level Enterprise juga dilengkapi dengan fitur Transaction. WCF Transaction support untuk protokol OLETX dan WS-Atomic Transaction (WS-AT). Fitur System.Transaction dari .NET Framework yang diperuntukan untuk transaksi dapat juga dimasukkan ke dalam WCF. Sedangkan, WCF binding yang dapat di-support untuk WCF Transaction, antara lain:

  • TCP.

  • Named Pipes.

  • WS.

  • WS Federation.

  • WS Dual.

Untuk lebih lengkapnya, fi tur WCF Transaction dapat dilihat pada Gambar 11.

Gambar 11. Tabel fitur transaction WCF.

Sistem Keamanan WCF

Tidak hanya fitur reliability saja yang membuat WCF menjadi pilihan untuk solusi distribusi data, tetapi sistem keamanan yang disediakan juga sangatlah bagus. Pada fitur reliability, kita memasukkan sekuriti pada data transport. Ada tiga scenario yang dapat kita terapkan sekuriti pada WCF, seperti:

  • Sistem keamanan transfer yang diserahkan ke operating system, yaitu Windows.

  • Sistem keamanan transfer dengan memasukkan username dan protokol SSL (contoh HTTPS).

  • Penerapan sistem sertifikat.

Sedangkan, mode sekuriti yang disediakan oleh WCF dan dapat kita pergunakan, antara lain:

None. Tidak ada sekuriti pada WCF.

  • Transport. Menerapkan sekuriti pada transport contohnya HTTPS untuk keperluan integrity, confidentiality, dan mutual authentication.

  • Message. Menerapakan sekuriti pada SOAP-Message (WS Security) untuk keperluan integrity, confidentiality, dan mutual authentication.

  • Mixed Mode. Menerapkan sekuriti pada transport untuk keperluan integrity, confi dentiality, dan server authentication. Selain sekuriti transport juga diterapkan sekuriti message untuk client authentication.

  • Both. Menerapkan proteksi dan autentikasi untuk keduanya. Ini hanya ada pada MSMQ binding.

Di sisi client, kita juga dapat menerapkan sistem keamanan pada setiap aplikasi WCF client ketika melakukan koneksi ke WCF server yaitu dengan menerapkan identity atau credential.

Penerapan credential pada WCF dilakukan dibagian transport dan message. Berikut ini beberapa opsi credential untuk transport:

  • None. Client tidak perlu credential apapun.

  • Basic. Penerapan basic authentication yang berdasarkan RFC2617 tentang HTTP Authentication: Basic and Digest Authentication.

  • Digest. Penerapan digest authentication yang berdasarkan RFC2617 tentang HTTP Authentication: Basic and Digest Authentication.

  • NTLM. Penerapakan Windows authentication dengan negosiasi SSPI pada domain Windows. Hasil negosiasi SSPI digunakan oleh protokol Kerberos dan NT LanMan (NTLM).

  • Windows. Penerapan Windows authentication dengan SSPI pada domain Windows. SSPI diambil dari protokol Kerberos ataupun NTLM sebagai authentication service.

  • Certificate. Penerapan client authentication dengan sebuah sertifikat contohnya X.509.

Secara lengkap fitur keamanan yang disediakan oleh WCF berdasarkan binding seperti Gambar 12.

Gambar 12. Tabel fitur sistem keamanan WCF terhadap binding.


sumber : klik




Windows Communication Foundation Windows Communication Foundation Reviewed by [ADMIN] on Sunday, April 04, 2010 Rating: 5

2 comments:

Statistik Blog

Powered by Blogger.