WCF merupakan akronim dari Windows Communication Foundation, salah satu teknologi baru dari Microsoft yang memungkinkan aplikasi dalam lingkungan terdistribusi berkomuniksi satu sama lain. WCF adalah model pemrograman lengkap untuk membangun aplikasi berorientasi layanan. Teknologi ini memungkinkan pengembang untuk membangun solusi aman, handal, dan mendukung transaksi, yang dapat terintegrasi lintas platform serta mampu beroperasi dengan investasi yang ada (Mike Liu, 2008).

WCF merupakan cara termudah membuat dan mengkonsumsi service pada platform microsoft maupun .NET. Dengan menggunakan WCF, pengembang dapat fokus pada aplikasi mereka daripada fokus ke protokol komunikasi, karena WCF meng-enkapsulasi terhadap teknologi dan pekerjaan teknis, sehingga pengembang bisa lebih produktif (Steve Resnick, 2008).

WCF mendukung berbagai teknologi seperti : Web service, Binary .NET to .NET communication, Distributed Transaction, Queued Messaging, RESTful Communication, serta mendukung WS-* Spesification.

 

Gambar 1 :  WCF Arsitektur

Karena WCF mendukung komunikasi melalui Web Service maka WCF akan dapat saling beroperasi dengan aplikasi platform lain yang mendukung SOAP. Selain itu WCF juga mendukung spesifikasi WS-* sehingga menyediakan kehandalan, keamanan, dan transaksi ketika berkomunikasi dengan platform lain yang juga mendukung spesifikasi WS-* (David Chappel, 2007). WCF tidak mengharuskan untuk menggunakan protokol HTTP, tetapi juga bisa menggunakan TCP. Pertukaran message pun bisa menggunakan selain SOAP, tetapi bisa juga menggunakan XML sederhana ataupun JSON.

Berikut ini adalah beberapa komponen dasar dari WCF

a. Service

Sebuah service adalah unit fungsionalitas yang diekspos ke public (Juval Löwy, 2007). Sebuah service memiliki sekumpulan endpoint yang digunakan untuk berkomunikasi dengan client.

 

Gambar 2 Service endpoint

Sebuah service juga memiliki service description yang memberitahukan ke publik bagaimana service tersebut dapat diakses, dan apa saja fungsionalitas yang tersedia pada service tersebut. Deskripsi paling umum yang biasa digunakan adalah WSDL, tapi kita juga dapat menggunakan cara lain misal menggunakan XSD Schema, WS-Policy, dan WS-MEX (WS-Metadata Exchange) (Scott Klein, 2007). Ketika kita melihat service lebih dalam lagi, di dalamnya akan terdapat komponen komponen seperti Binding, Service contract, dan kode program dari service.

b. Endpoint

Sebuah endpoint merupakan komponen dari service yang berkomunikasi dengan client dan menyediakan operasi operasi dari service. Sebuah service memiliki paling sedikit satu endpoint. Setiap endpoint memiliki address / alamat nya sendiri yang berbeda dengan endpoint yang lain (Scott Klein, 2007).

c. Address

WCF adress adalah lokasi / alamat spesifik dari service atau endpoint, tempat dimana message akan dikirim. Semua WCF service di-deploy pada address spesifik, dan mendengarkan request yang masuk pada address tersebut. WCF address memberikan dua informasi penting, yaitu: lokasi dari service dan protokol transport / skema transport yang digunakan untuk berkomunikasi dengan service. WCF address umumnya dituliskan dalam format URI / Unified Resource Identifier (Mike Liu, 2008).

Berikut ini format penulisan WCF Address :

[transport]://[machine or domain][:optional port] 

WCF mendukung protokol atau transport schema berikut ini (Juval Löwy, 2007):

  • · HTTP

WCF dapat menggunakan http untuk transportnya. Apabila diperlukan dapat dikonfigurasi untuk menggunakan https yang lebih aman.

Contoh penulisan http://localhost:8001

  • · TCP

Untuk transport yang menggunakan alamat TCP, dapat dituliskan net.tcp pada URI address. Umumnya jika menggunakan TCP, juga diberikan nomer port, tetapi jika port tidak disebutkan maka digunakan port 808.

Contoh penulisan net.tcp://localhost:8002/MyService

  • · Peer Network

WCF service juga dapat menggunakan PeerToPeer (P2P) untuk skema transportnya. Tidak semua skenario harus berupa server-client, akan tetapi bisa juga peer-to-peer.

Contoh penulisan net.p2p://SimpleChatService

  • · IPC (Inter-Process Communication over named pipes)

Daripada menggunakan transport TCP ataupun HTTP yang lebih ditujukan untuk komunkasi melalui jaringan, service dapat menggunakan IPC / Named Pipe sebagai mekanisme transport. Named Pipe merupakan mekanisme standar pada Windows untuk komunikasi antar proses di dalam suatu mesin. Pada WCF, service yang dikonfigurasi menggunakan Named Pipe hanya dapat menerima request dari mesin yang sama. Konsekuensinya, untuk penulisan address harus menyebutkan nama local machine dari komputer tersebut atau dengan menuliskan localhost sebagai nama mesin.

Contoh penulisan net.pipe://localhost/MyPipe

  • · MSMQ

Untuk skenario yang memerlukan mekanisme antrian dapat menggunakan skema transport Microsoft Management Queue (MSMQ).

Contoh penulisan net.msmq://localhost/private/MyService

d. Contract

WCF contract adalah sekumpulan spesifikasi yang mendefinisikan interface dari WCF service (Mike Liu, 2008). Sebuah service WCF berkomunikasi dengan aplikasi lain berdasarkan contract tersebut. Ada beberapa tipe contract yang digunakan

  • Service Contract : Service contract merupakan interface dari WCF Service. Pada dasarnya kontrak ini mendefinisikan apa saja yang dapat dilakukan oleh service, termasuk nama service, namespace dari service, dan beberapa settingan lainnya. Di dalam interface dapat didefinisikan method atau operasi dari service. Suatu service WCF paling sedikit memiliki satu service contract.
  • Operation Contract : Operation contract dideklarasikan di dalam service contract. Kontrak ini mendefinisikan parameter dan tipe pengembalian dari suatu operasi. Suatu operasi dapat mengambil tipe data primitif seperti integer sebagai parameter, namun bisa juga mengambil tipe data yang kompleks misalnya class. Suatu operation contract juga dapat untuk mendefinisikan setting level operasi, seperti: fault contract dari operasi, arah dari operasi (one-way, two-way, both-way), serta aliran transaksi dari operasi.
  • Data Contract : Data contract adalah tipe data dari WCF service. Seluruh tipe data yang digunakan oleh WCF service harus dideskripsikan di dalam metadata sehingga aplikasi lain dapat beroperasi dengan service. Sebuah data contract dapat digunakan oleh operation contract sebagai parameter atau return type, atau bisa juga digunakan oleh message contract untuk mendefinisikan elemen. Untuk tipe data primitif tidak perlu didefinisikan data contract.
  • Message Contract : Jika data contract digunakan untuk mendefinisikan tipe data dari service, maka message contract lebih digunakan untuk mendefinisikan format message dari SOAP. Message contract mendefinisikan elemen dari message serta settingan dan keamanan yang dapat diberlakukan pada level message.
  • Fault Contract : Pada operation contract dari WCF service dapat dideklarasikan fault contract, jika terjadi suatu error dan error tersebut dapat dikembalikan kepada aplikasi pemanggil, maka aplikasi pemanggil akan diperingatkan dengan error tersebut. Tipe error ini disebut sebagai fault contract. Fault contract adalah opsional, artinya suatu operation contract dapat tidak diasosiasikan dengan fault contract atau diasosiasikan dengan banyak fault contract.

e. Binding

Binding adalah konfigurasi yang mendefinisikan bagaimana suatu endpoint dari service berkomunikasi dengan dunia luar. Setiap endpoint harus memiliki sebuah binding. Binding pada dasarnya sekumpulan properti yang mendefinisikan bagaimana pola transport, message, dan kemanan (Scott Klein, 2007). Binding dapat diatur secara programatik dalam kode, maupun melalui file konfigurasi. WCF telah mendefinisikan sekumpulan binding yang bisa langsung digunakan, antara lain: basicHttpBinding, wsHttpBinding, wsDualHttpBinding, netTcpBinding, dan lain-lain. Dari binding yang tersedia tersebut, kita dapat menggunakan yang sesuai dengan kebutuhan kita.

f. Behavior

Behavior mengontrol karakteristik runtime dari service atau endpoint (Scott Klein, 2007). Perbedaan antara behavior dengan binding adalah, behavior digunakan untuk mengkonfigurasi eksekusi lokal, sedangkan binding mengkonfigurasi pada level komunikasi. Ada banyak jenis dari behavior, tapi behavior tersebut dapat dikelompokkan dalam tiga tipe utama, yaitu: Service Behavior, Endpoint Behavior, dan Operation Behavior (Steve Resnick, 2008). Sebagai contoh, pada kelompok service behavior terdapat konfigurasi yang mengatur tenggang waktu timeout dari transaksi, mengatur jumlah maksimum sesi yang terjadi bersamaan, mengatur jumlah maksimum pemanggilan operasi yang terjadi bersamaan, mengatur apakah diijinkan mempublikasi metadata dari service, dan lain-lain. Behavior dapat diatur secara programatik dalam kode, maupun melalui file konfigurasi.

g. Hosting

Suatu WCF service haruslah diwadahi (di-hosting-kan) dalam suatu lingkungan agar supaya service tersebut dapat ditemukan dan digunakan oleh aplikasi lainnya. WCF Host adalah aplikasi yang mengontrol masa hidup dari service (Mike Liu, 2008). Ada beberapa cara melakukan hosting service WCF

  • Self Hosting : Suatu service WCF dapat di-hosting pada dirinya sendiri, sehingga service berjalan sebagai suatu aplikasi tersendiri dan mengontrol masa hidupnya sendiri. Ini merupakan teknik termudah, akan tetapi beberapa fitur menjadi terbatas.
  • Windows Service Hosting : Windows service adalah proses yang dikelola oleh sistem operasi Windows dan secara otomatis proses tersebut berjalan ketika Windows berjalan. WCF service juga dapat di-hosting-kan sebagai Windows service di suatu mesin / komputer.
  • IIS Hosting : Cara ini dengan meng-hosting-kan WCF service ke IIS. IIS merupakan web server buatan Microsoft untuk platform Windows. Kelebihan cara ini adalah dapat memanfaatkan kemudahan fitur pengelolaan yang ada pada IIS untuk mengelola WCF service. Kelemahan cara ini adalah WCF service hanya dapat memanfaatkan protokol HTTP saja.
  • Windows Activation Services hosting : Windows Process Activation Service (WAS) adalah mekanisme aktivasi proses untuk Windows Server 2008, Windows 7, dan Windows vista. WAS memiliki kelebihan yang sama seperti pada IIS Hosting, akan tetapi WAS memungkinkan digunakannya skema transport selain HTTP untuk WCF Service.

Referensi:

Chappel, David. 2007. Introducing Windows Communication Foundation. Microsoft. http://download.microsoft.com/download/f/3/2/f32ff4c6-174f-4a2f-a58f-ed28437d7b1e/Introducing_WCF_in_NET_Framework_35_v1.doc  dikunjungi 2010-10-05 18:29:36

Gailey, Jeannine Hall. 2004. Understanding Web Services Specifications and the WSE. Microsoft Press.

Klein, Scott. 2007. Professional WCF Programming: .NET Development with the Windows Communication Foundation. Wiley Publishing.

Liu, Mike. 2008. WCF Multi-tier Services Development with LINQ. Packt Publishing.

Löwy, Juval. 2007. Programming WCF Services. O’Reilly Media Inc.

Resnick, S., Crane, R., and Bowen, C. 2008. Essential Windows Communication Foundation.  Addison-Wesley.

Tidwell, D., Snell, J., and Kulchenko, P. 2001. Programming Web Services with SOAP. O’Reilly Media Inc.

World Wide Web Consortium (W3C). 2004. Web Services Architecture. W3C Working Group Note 11 February 2004. http://www.w3.org/TR/ws-arch/ dikunjungi 03/06/2011 11:39:03.



One response to “Apa itu Windows Communication Foundation”

Leave a Reply

Your email address will not be published. Required fields are marked *

Search

Welcome

Bayu Pratama R N is a lonely programmer who is very enthusiastic about .NET. He just try to live a life of a programmer life and write a blog post when he is so sick about love.

Gallery