Archive for » November 26th, 2009«
Introducing SOA
Hari ini, bisinis memerlukan untuk menjadi cepat (agile) dan adaptasi dengan cepat. SOA adalah design principle yang dapat membantu mengalamatkan keperluan bisnis.
SOA adalah koleksi dari service yang di definisikan dengan baik, dimana masing-masing individual service dapat di nodifikasi secara independent (secara bebas) dari service lainnya untuk membantu merespon setiap perkembangan kondisi pasar bisnis.
Tidak seperti tradisional point-to point architecture, implementasi SOA membandingkan satu atau lebih aplikasi yang loosely coupled(tidak saling terikat) dan interoperable (yang dapat digunakan bersama dalam waktu yang sama)
Beberapa batasan untuk message yang didesign menggunakan SOA:
-
Descriptive
Message perlu dideskripsikan sebagai pengganti perspektive -
Limited Structure
Untuk beberapa provider lain, untuk mengerti request mereka perlu mengerti format, structure, dan data types yang digunakan. Ini juga menganjurkan kita untuk menggunakan simple types, dimana merupakan platform netral. -
Extensibility
Message perlu bisa dilakukan perluasan(perubahan). Hanya ini yang menyediakan kemudahan yang membuat implementasi SOA menjadi cepat, dan lebih murah dibandingkan implementasi Object Oriented. -
Discoverability
Consumer dan provider message memerlukan message untuk bisa ditelusuri(dicari), sehingga mereka mengetahui apa yang dihasilkan dari sana dan bagaimana mengkonsumsi service yang ada.
Kerugian mengintegrasikan Banyak aplikasi pada perbedaan jaringan :
-
Transport
Jaringan tidak dapat diprediksi dan dapat menjadi lambat -
Data Format
Mempertanyakan 2 aplikasi yang run pada 2 platform yang berbeda dan menggunakan programming languages yang berbeda -
Change
Kita mengetahui aplikasi perlu untuk berubah untuk menjaga akan setiap perkembangan
Kebutuhan bisnis. Ini berarti solusi integrasi perlu memastikannya untuk menjaga perubahan ini dan meminimalkan ketergantungan antar system.
Keuntungan menggunakan Message :
Message dapat menjadi “penerjemah yang universal” diantara macam-macam platform dan languages, mengizinkan masing-masing platform untuk bekerja dengan respective native type data.
Message biasa mengizinkan untuk “fire-and-forget”(yang langsung ditutup setelah dipakai) style of communication
Message diturunkan menggunakan style “store-and-forward” untuk pengiriman, dimana mengizinkan message-message untuk dapat dipercaya daripada RPC.
Message dapat diperlakukan sebagai mediator(penengah) ketika menggunakan Pola mediator dimana aplikasi yang tidak terhubung perlu berkomunikasi dengan system message dan tidak untuk semua aplikasi lainnya.
Berkaitan dengan Komunikasi Asynchronous, ini berarti satu aplikasi tidak dapat menghalangi aplikasi lainnya untuk selesai.
Message dapat menggantikan kebutuhan untuk serialization dan de-serialization yang yang diakibatkan ketika 1 aplikasi memanggil aplikasi lainnya. Proses serializing sebuah object untuk ditransfer kejaringan disebut marshaling. Sedangkan proses de-serializing disebut unmarshaling.
Tidak seperti RPC, message dapat mentransfer “complete security context” untuk konsumen menggunakan kombinasi dari header dan tokens. Ini meningkatakn kemampuan untuk menyediakan butir-butir kecil control yang lebih terkait dengan authentication dan authorization.
Message adalah “cornerstones” dari SOA.
Message membuat kamu dapat membuat system yang tidak saling bergantung (loosely system) yang dapat menjangkau banyak operating system.
SOA menyadari message tidak hanya fasilitas untuk keperluan bisnis tetapi dapat menyediakan “context” tentang message (security context, informasi routing dari message,dimana kita memerlukan garansi pengiriman message)
Introducing Windows Communication Foundation
Kita perlu menjawab beberapa pertanyaan untuk memastikan desain service
jelas:
- Service apa yang Anda butuhkan?
- Service apa saja yang tersedia untuk kita konsumsi?
- Service apa akan beroperasi bersama-sama?
- Service pengganti apa saja yang tersedia?
- Dependensi apa yang ada diantara service dan service versi lainnya?
Service providers adalah komponen yang execute beberapa business logic, didasarkan pada input dan output yang telah ditetapkan sebelumnya dan mengakses fungsi ini melalui SOA.
Consumer di sisi lainnya, adalah seperangkat component yang tertarik menggunakan satu atau lebih service yang ditawarkan provider.
Repository berisi deskripsi dari service,dimana provider mendaftarkan service mereka dan konsumen mencari service yang disediakan.
Service orientation adalah sebuah business-driven “modeling strategy” yang mendefinisikan kemampuan bisnis (bisnis functionality), dalam hal loosely coupled autonomous business systems (services), yang mempertukarakn informasi berdasarkan pesan.
Dalam WCF, Service didasarkan pada 4 prinsip dasar :
-
Prinsip 1 : Batasannya(boundaries) Jelas
Crossing boundaries adalah operation yang mahal dapat mengangkat macam-macam element : data marshaling, security, physical location, dll.Beberapa prinsip design yang perlu diingat :
-
Know Your Bondaries
Di definisikan dengan baik dan dipublishkan public interface adalah focus utama dari service dan semua interaksi yang terjadi menggunakannya. - Service Should be Easy to consume
Para Developer mudah untuk mengkonsumsinya (service tsb), selain itu service interface sebaiknya memungkinkan untuk dari waktu ke waktu tanpa merusak keberadaan consumer dari service - Avoid Remote Procedure Call (RPC) interfaces
Sebaiknya gunakan pesan yang expisit - Keep the service surface area small
Menyediakan sedikit public interfaces yang menerima message yang didefinisikan dengan baik dan yang meresponse juga dengan sebuah message yang didefinisikan dengan baik. Karena tingkat pertumbuhan public interfaces, menjadi semakin sulit untuk mengkonsumsi dan maintain Service. - Don’t expose implementation details
Detail harus disimpan internal, jika tidak, akan mengarah pada tight coupling antara consumer dan service.
-
Know Your Bondaries
-
Prinsip 2 : Service adalah Autonomous
Service adalah mandiri dan bertindak independent dalam segala aspect, seperti deploying, versioning, dll.
Layanan perlu diisolasi dan dipisahkan untuk mencapai tujuan mereka Autonomous(berdiri sendiri)Beberapa prinsip design yang perlu diingat :
- Service versioning dan service deployment adalah berdiri sendiri dari system dimana mereka di deploy.
- Kontrok untuk 1x publish, sebaiknya tidak berubah
- Mengadopsi pendekatan pessimistic dan Service isolate dari kegagalan.
-
Prinsip 3 : Services Share Schema dan Contract, BUKAN Class
Interaksi service harus menggunakan policies, schemas, and behaviors, bukan CLASS yang disediakan secara tradisional sebagian besar fungsi ini.
Service Contract sebaiknya berisi : message formats ( defined using an XML schema ), beberapa WS-Policy requirements, beberapa BPEL yang mungkin diperlukan.
Tantangan terbesar yang Anda hadapi adalah stabilitas service, setelah service dipublish.
akan sulit untuk mengubahnya dikemudian hari , tanpa mempengaruhi salah satu konsumen.Beberapa prinsip design yang perlu diingat :
- Service contracts constituting data, WSDL, dan policy tidak berubah dan tetap stabil.
- Contracts sebaiknya dijelaskan secara explicit (se- bisa mungkin), ini akan memastikan bahwa tidak ada kebingungan maksud dan penggunaan service.Penambahan Contract haruslah didefinisikan untuk versi yang lebih baru dan untuk server dimasa mendatang
- Jika pelanggaran kontrak tidak dapat dihindari, maka gunakan versioning service
- Jangan mengekspose representasi data internal ke public, public data scheme harus mutlak.
-
Prinsip 4 : Service Compatibility Is Based on Policy
Kadang-kadang Kita tidak akan dapat meng-expresikan semua service interaction melalui WSDL saja.Policy expressions pada dasarnya memisahkan struktur dan semantic compatibility.
Dengan kata lain, mereka memisahkan “apa yang dikomunikasikan” dan “Bagaimana / pesan apa yang dikomunikasikan.”Policy assertion mengidentifikasi behavior dari sebuah policy entity dan menyediakan domain-specific semantics.
Ketika merancang sebuah service, kita perlu memastikan bahwa policy assertions adalah eplicit.
- request messages
- response messages
- fault messages
- Document
- RPC
Keempat prinsip orientasi pelayanan menyediakan seperangkat prinsip-prinsip mendasar, ketika kita akan merancang layanan. Ketika akan mendefinisikan service, selalu lebih mudah jika bekerja dengan sesuatu requirement yang telah didefinisikan dengan baik, karena mengizinkan kita untuk mendefinisikan scope yang didefinisikan dengan baik.
Ketika mendefinisikan layanan dari awal, akan sangat membantu untuk mengkategorikan services sesuai dengan yang ditetapkan dari model service bisnis yang ada sudah dibentuk dalam organisasi.
Karena model sudah menetapkan beberapa konteks dan tujuan dalam batas mereka,
itu membuat lebih mudah untuk merancang service baru.
Selain itu, nama service juga harus mempengaruhi penamaan operasi individu dalam service.
sebuah service bernama baik akan sudah membentuk konteks dan makna yang jelas dari service, dan operasi individu harus dirasionalisasi agar tidak membingungkan atau bertentangan dengan service.
Juga, karena konteks didapatkan, operasi sebaiknya juga harus mencoba untuk menghindari standar penamaan yang membingungkan membingungkan.
Sebagai contoh, jika Anda memiliki service yang melakukan stock operations, maka salah operasi harus menjadi GetQuote bukannya GetStockQuote, karena konteks telah ditetapkan.
Demikian pula, jika kita menggunakan kembali service, maka menghindari penamaan operasi setelah beberapa tugas tertentu, bukan berusaha menjaga penamaan yang generik mungki
WCF memudahkan bagi pengembang untuk menciptakan layanan yang mematuhi prinsip service Oriented
Web Service sebagai KUNCI yang memungkinkan technology untuk SOA
Web service adalah hanya 1 macam contoh dalam implementasikan Service. Web Service hanyalah catalyst untuk implemtasi SOA.
Web Service tidak memiliki definisi yang universal.
Sebuah web service adalah sebuah pemrograman component aplikasi yang mengakses lewat standar web protocol.
Kuncinya adalah :
1. Standar Protocol
Contoh :HTTP, SMTP, FTP, dll.
2. Service Description
Web service perlu mendeskripsikan interface mereka secara detail sehingga client mengetahui secara pasti bagaimana cara untuk mengkonsumsi function yang disediakan oleh service. Deskripsi ini biasa disediakan via XML document yang disebut WSDL Document.
3. Finding services
User perlu mengetahui bahwa web-service ada dan dimana tempat untuk mencarinya sehingga client dapat mem-bind web-service dan menggunakan fungsinya. Salah satu cara untuk mengetahui sercive ada(EXIST) adalah dengan connect ke “YELLOW PAGES” (merupakan implementasi dari Repository UDDI – Universal Discovery, Description, and Integration -), dimana terdapat public dan private UDDI nodes.
INTRODUCING SOAP
SOAP adalah komunikasi protocol ringan untuk web-service berdasarkan pada XML SOAP mengijinkan kita untuk memanggil fungsi pada remote machine tanpa mengetahui specific details dari platform atau software yang run pada machine tsb.
XML digunakan untuk merepresentasikan data(SOAP Schema).
Karakteristik SOAP :
1. Extensible
2. Bekerja pada banyak standarisasi pada protocol-protokol network
3. independent (bebas) pada suatu bahasa pemrograman atau platform model.
Pola pertukaran message:
1. One Way
2. Request-Response
3. Dan lain-lain
SOAP Message
4 Bagian dari SOAP Message :
1. SOAP Envelope
Merupakan Root Element dari message. 2 Bagiannya adalah header dan body.
2. SOAP Message
3 Typenya :
3. RPC Pattern
4. SOAP Bind
Request- Response SOAP Message memiliki 2 Message :
1. Request Message dikirim ke service
2. Response Message yang dikirimkan balik ke client
Beberapa Rule untuk menulis SOAP Message:
1. Harus dicodekan dalam XML
2. Harus menggunakan SOAP envelope namespace
3. Harus menggunakan SOAP encoding namespace
4. Tidak dapat mengandung DTD (Document Type Definition)reference
5. Tidak dapat mengandung instruksi proces XML
SOAP Faults
Ketika terjadi Exception (penangkapan pesan kesalahan/error) perlu dikembalikan ke service.
Ini membutuhkan tempat menggunakan fault element dalam SOAP response.
Fault element harus mengandung :
a. Faultcode element
b. FaultString element
Fault Message mengandung detail exception (seperti : error code,description,dll)
SOAP Message Format
2 Type dari SOAP Message Format :
2 Cara untuk serialize data ke XML:
1. Menggunakan literal XML Schema Definition
2. Menggunakan SOAP Encoding Rules
WSDL (Web Service Description Language: Mendescripsikan service end point)
WSDL memberikan standar kepada web serive, untuk menentukan interface dan mengizinkan integrasi.
Apakah End Point ?
W3C mendefinisikan Endpoint sebagai assosiasi diantara interface binding yang dispesifikasi seluruhnya dengan network address, dispesifikasi oleh URI, yang dapat digunakan untuk komunikasi dengan instance dari web-service.
EndPoint adalah entity dimana client terhubung menggunakan specific protocol dan format data ketika menggunakan service.
WSDL
WSDL adalah bentuk dasar dari web-service.
WSDL adalah format yang mendeskripsikan web-service.
WSDL mirip dengan IDL (Interface Description Language).
WSDL mendeskripsikan public interface dari web-service termasuk metadata, seperti : Protocol bindings,message format, dan lain-lain.
WSDL terdiri dari 3 bagian :
1. Definition
Di expresikan dengan XML dan termasuk semua type data dan definisi message.
2. Operation
Operasi mendeskripsikan action/aksi dari message yang disupport oleh web-service dan dapat menjadi 1 dari 4 type berikut ini :
Struktur dari WSDL Document :
Terdiri atas : Abstract definition dan Concrete description.
Data Type Definitions adalah container yang menggunakan beberapa type system seperti XSD.
Message definition adalah type definition dari data yang akan dikomunikasikan.
Operation adalah deskripsi dari aksi yang didukung oleh service dan mengandung satu atau lebih data type dan message definition.
Port type adalah satu set operasi yang didukung oleh lebih dari 1 end point.
Port adalah single endpoint yang didefinisikan sebagai kombinasi dari binding dan alamat network.
3. Service Bindings
Service bindings menghubungkan type port ke port.
Sebuah port didefinisikan dengan mengasosiasikan sebuah alamat jaringan dengan port type.
Sebuah service dapat mengandung multiple port.
Dynamically Discovering Web Services
UDDI adalah protocol directory yang bebas platformnya, digunakan untuk mendeskripsikan service , mencari dan meng-integrasikan business service via internet.
UDDI berdasarkan pada industry protocol standar, seperti : HTTP, XML, SOAP,dan lain lain.
UDDI mendeskripsikan detail dari service menggunakan WSDL dan mengkomunikasikannya melalui SOAP
UDDI mengandung 3 bagian :
a. White Page
Mengandung detail dari perusahaan dan informasi contract
b. Yellow Page
Mengandung Kategori Industri berdasarkan pada standarisasi taxonomis seperti North America Industry Classification System
c. Green Page
Mengandung detail dari teknikal yang mendeskripsikan interface melalui WSDL sehingga consumer memiliki cukup informasi mengenai bagaimana untuk menggunakan service dan apakah yang dibutuhkan.
Sending Messages Between Loosely Coupled
Systems
Untuk mencapai Service Orientation, kita perlu kemampuan untuk mengirimkan message dari satu service kelainnya.
Dalam context WCF , Service Invocation adalah mekanisme general untuk mengirimkan message diantara sebuah entity yang request service dan entity lainnya yang menyediakan service.
Ini penting untuk dimengerti bahwa ini bukan masalah dimana provider dan consumer secara fisik ada, mereka dapat berada di machine yang sama secara fisik atau melintasi planet lain
Bagaimanapun, dari service execution perspective, ini merupakan masalah dan WCF mengisi jarak infrastructure ini.
Langkah-langkah consumer mengirimkan message kepada provider meliputi :
1. Mencari relevant service yang mengekspos function yang diingini.
2. Mencari type dan format dari message dimana service akan menerimanya.
3. Mempelajari beberapa spesifik metadata yang mungkin diperlukan sebagai bagian dari message(contoh : untuk transaksi atau security)
4. Mengirimkan message ke provider dengan semua relevant data dan metadata.
5. Process response message dari service dalam cara yang tepat.
Life Cycle dari XML web service memiliki 8 step:
1. Client connect ke internet dan mencari directory service yang digunakan
2. Client connect ke directory service dengan urutan query yang dijalankan
3. Client menjalankan query yang relevant terhadap directory service untuk mencari web-service yang menyediakan function yang diinginkan
4. Perusahaan web-service yang berhubungan dipanggil untuk memastikan service masih valid dan tersedia.
5. Deskripsi bahasa untuk web-service yang berhubungan diambil dan dikirimkan kembali ke client
6. Client membuat instance baru dari XML web-service melalui proxy class
7. client serialize argument secara Runtime dari method service kedalam SOAP Message dan mengirimkannya melalui jaringan ke web-service.
8. Method yang diexekusi,dimana sekelompok value yang dikembalikan,termasuk parameter out.
INTRODUCTION WCF BASIC
WCf dikenal sebagai indigo,mengatur komunikasi infrastruktur antara Windos Vista dan Windows XP dan Windwos 2003 melalui .Net Framework 3.0.
WCF menyediakan infrastruktur komunikasi yang mengizinkan kita untuk membuat beragam aplikasi melalui simple model
INTRODUCING Microsoft Remote Object Invocation Model
Microsoft mulai dengan DCOM(Distributed Component Object Model), dimana perkembangan dari COM (Component Object Model), sehingga .Net memiliki teknologi seperti .Net Remoting dan XML Web Service
Microsoft Mendevelop COM untuk membuat aplikasi dapat berinteraksi dengan lainnya dan untuk mempromosikan reuseability.
COM mengizinkan software komponen untuk saling berkomunikasi dengan lainnya.
Masing-masing komponen meng-exposes functionnya melalui interface dan diidentifikasi oleh GUIDs (Global Unique Identifiers). Keuntungan menggunakan COM adalah perbedaan komponen yang didevelop dengan bahasa yang berbeda dapat menulis komponen software ini dan interaksi dengan lainnya menggunakan IUnknown dan standar intercface COM lainnya.
DCOM memberikan kesempatan untuk mendistribusikan komponen kita melintasi perbedaan lokasi tergantung kebutuhan aplikasi
Introducing .NET Remoting
Melalui COM dan DCOM dapat menyediakan reusability dan distributed platform, mereka juga
Umumnya, perusahaan membeli perangkat lunak yang rumit dan menginvestasikan banyak uang dalam membangun jembatan antara komponen-komponenyang ada.
Kerumitan dan kesulitan lain akan segera muncul ketika solusi ini perlu diperpanjang lebih lanjut. Layanan web memecahkan masalah ini dengan mengandalkan standar dan protokol terbuka yang diterima secara luas.
Why Are Web Services the Preferred Option?
Sayangnya, dengan technology yang sudah ada, kita akan menemukan berbagai macam batasan, terutama dengan interoperability diantara platform-platform. Sebagai contoh, jika kamu mencoba untuk mendeploy sebuah aplikasi COM+ untuk berkomunikasi melewati firewall atau melewati smart router atau batasan organisasi, kamu akan mencari beberapa perbedaan yang terlihat jelas.
Web Service adalah cara lain untuk membuat aplikasi terdistribusi.
Faktor web service pembeda dari teknologi terdistribusikan lainnya adalah bahwa daripada mengandalkan proprietary standar atau protokol, web service bergantung pada standar web yang terbuka (seperti SOAP, HTTP, dan XML). Standar terbuka ini diakui dan diterima secara luas di seluruh industri. Web Service telah mengubah bagaimana aplikasi didistribusikan dibuat. Internet telah menciptakan permintaan akan technology yang loosely coupled dan interoperable. sebelum layanan web, sebagian besar dari teknologi terdistribusi bergantung pada paradigma berorientasi objek, tetapi Web telah menciptakan kebutuhan untuk komponen terdistribusi yang autonomous dan platform independen.
XML web service yang dirancang dengan interoperabilitas dalam pikiran dan mudah dipanggil dari non-Windows platform. Hal ini umum bingung akan web services with .NET Remoting. Web Service dan. NET Remoting yang terkait, tetapi web service memiliki model pemrograman yang lebih sederhana
daripada. NET Remoting. Dengan kata lain, mereka berdua terlihat seperti dari tingkat tinggi dalam tingkat arsitektur, tetapi mereka berbeda dalam cara mereka bekerja. Sebagai contoh, mereka berdua memiliki cara yang berbeda dari data serializing ke dalam pesan. NET Remoting mendukung komunikasi berbasis RPC secara default, dan layanan web mendukung komunikasi berbasis message secara default.
Web service bergantung pada XML Schema untuk type data , dan. NET Remoting bergantung pada CLR. Anda dapat menggunakan. NET Remoting untuk membangun layanan web, tapi Web Services Description Language (WSDL) yang dihasilkan oleh. NET Remoting ini tidak secara luas diadopsi dan mungkin akan diabaikan oleh beberapa klien.
Melalui web service, Microsoft ingin mencapai yang terbaik dari 2 dunia- Web development dan component-based development.
Web Service adalah langkah pertama menuju service orientation, yang merupakan seperangkat prinsip panduan untuk mengembangkan aplikasi terdistribusi digabungkan secara loosely coupled. SOA adalah visi service yang telah mendefinisikan interface dengan baik. interface loosely coupled ini berkomunikasi melalui pesan-pesan yang dideskripsikan oleh XSD (XML Schema Definition) dan melalui pesan pola-pola yang digambarkan oleh WSDL. Ini menyediakan dasar arsitektur yang besar untuk membangun aplikasi terdistribusi. Karena web service dan kliennya adalah independen satu sama lain, mereka perlu mematuhi hanya ke standar dokumen XSD dan WSDL untuk berkomunikasi.
What Does WCF Solve?
Unification of existing technologies
Interoperability across platforms
Kunci Architecture Spesifikasi web Service adalah WSDL.
Oleh karena itu, WCF berbicara bahasa dari kumpulan web service terbaru protokol
untuk mencapai interoperabilitas yang mulus di seluruh platform.
WCF As a Service-Oriented Development Tool
WCF adalah model pemrograman pertama yang dibangun dari bawah ke atas untuk memberikan pengembangan aplikasi service-oriented yang eksplisit
dan siap menghadapi masa depan business oriented. Service oriented bukan teknologi tetapi adalah sebuah konsep desain. Service oriented hari ini merupakan best practice untuk membangun aplikasi terdistribusi.
Terknology terdistribusi yang baru juga harus mendukung extensibility yang memadai sehingga ketika aplikasi yang mengunakan technology baru telah selesai dibuat, mereka dapat dengan cepat digunakan tanpa harus merubah seluruh platform yang sudah ada
Meskipun mungkin tampak mengejutkan, salah satu bagian yang paling menarik dari merancang service adalah memutuskan bagaimana seharusnya mengekspos fungsinya untuk dunia luar.
Exploring New Features in WCF
1. Developer Productivity
WCF meningkatkan produktivitas pengembang dalam beberapa cara dengan menyederhanakan pengembangan aplikasi berorientasi service.
Sebelumnya, developer, dipaksa untuk belajar API yang berbeda untuk
membangun komponen terdistribusi. Tidak dapat disangkal bahwa pengembang yang baik dalam membangun komponen service mungkin tidak efisien pada saat membangun remote components menggnakan .NET Remoting.
Salah satu aspek terbaik WCF adalah bahwa developer yang menggunakan teknologi yang sudah ada, akan menemukan fitur favorit mereka di dalamnya, dan semua developer, akan mendapatkan keuntungan dari arsitektur yang konsisten. WCF mendukung model pemrograman deklarative dan imperative akan membuat Anda jarang menulis code, yang menawarkan kemungkinan lebih sedikit kesalahan. Aplikasi yang memerlukan ratusan sampai ribuan baris kode sebelum WCF, sekarang dapat dicapai dalam beberapa baris
code.
2. Attribute-Based Development
WCF adalah pipa mesin pesan yang sederhana, jelas, dan fleksibel programming model yang duduk di bagian atas mesin pesan ini.
Anda juga mendapatkan kesempatan untuk menggunakan file-file konfigurasi
yang dapat berubah pada saat runtime. Paling sederhana dan termudah adalah WCF mendukung untuk programming model attribute-based.
Salah satu tujuan utama dari SOA adalah untuk memisahkan kode aplikasi dari infrastruktur message. Developer menentukan persyaratan infrastruktur secara declarative dengan mendekorasi class service dengan atribut custom tetapi tidak
benar-benar menulis kode infrastruktur apapun.
Dalam istilah yang sederhana, kita dapat memikirkan sebuah atribut sebagai string yang sederhana atau penjelasan. Atribut hanya deklaratif tag, ketika diterapkan pada classes, methods, properties, dan sebagainya, memberikan
informasi yang layak tentang perilaku ke CLR dan merupakan cara untuk menambahkan metadata saat runtime.
Kita dapat melihat metadata melalui alat untuk membaca metadata seperti ILDASM. Dalam WCF, attribute merupakan pusat utama dari programming model dan diperlakukan dalam kelas utama (VIP).
Dasar model attribute ini bukanlah hal baru, jika kita membuat web service menggunakan .NET maka kita akan familiar dengan attribute [WebMethod].
WCF telah memperluas dukungan ke pemrograman deklaratif dalam mesin Message. Sehingga, ketika kita membutuhkan dukungan transaksi atau keamanan, Anda hanya perlu menghias class service dengan atribut yang specific, dan mesin olah pesan akan memberikan kepada kita infrastruktur yang diperlukan untuk mencapai hasil yang diinginkan.
Pemrograman berbasis atribut merupakan cara terbaik untuk mendapatkan sesuatu dengan baik dengan Mesin WCF , tetapi kita juga tidak boleh melupakan kekuatan model object WCF.
Coexisting with Existing Technology
1. Hosting Services
Sebuah kelas yang mengimplementasikan service WCF biasanya dikompilasi menjadi sebuah library dan karenanya diperlukan proses ke host services.
WCF telah dibuat dengan sebuah visi yang memungkinkan endpoint secara mulus tersedia untuk segala macam skenario dan dengan demikian siap untuk memenuhi segala kebutuhan. Sebuah komponen dapat WCF
host di setiap jenis lingkungan di. NET 3.0, baik itu aplikasi console, aplikasi Windows,atau IIS.
2. Migration/Integration with Existing Technology
WCF menjadi cara untuk generasi penerus mendevelop aplikasi terdistribusi, yang telah mengangkat rasa ingin tahu para developer untuk bekerja pada technology terdistribusi yang ada. Ini benar bahwa aplikasi yang sudah ada akan terkena dampaknya di waktu dekat ini. Sudah ada aplikasi yang dibangun diatas ASMX, WSE, dan System.EnterpriseService.
Ini adalah pertanyaan penting yang kamu pikirkan tentang WCF :
a. Akankah aplikasi baru yang di develop menggunakan WCF bekerja dengan aplikasi yang sudah ada?
b. Dapatkah aplikasimu yang sudah ada di upgrade dengan WCF?
Jawaban untuk pertanyan-pertanyaan ini adalah dapat dan dapat.
3. Components vs. Services
Reusability adalah kunci untuk sukses dalam lingkungan terdistribusi. Kebanyakan architecture focus kepada jalan untuk memaximalkan komponen digunakan dalam pola yang mudah dan efeicient.
Component adalah compile code. ini dapat dirakit untuk membuat aplikasi dan juga untuk dideploy.
Service digunakan secara luas dalam berbagai context. Dalam service oriented, istilah service melekat pada 4 prinsip dari service orientation dan service diversikan,dideploy,dioperasikan dan diamankan secara bebas dalam gaya message oritented.
WCF memudahkan bagi developer untuk menciptakan service yang mematuhi prinsip service oriented.
SOA adalah dunia Message bukan object.
4. Support of Visual Studio 2005
5. One Service,Multiple Endpoints
Pengembangan service sangat diperngaruhi oleh transportasi yang kita gunakan. Setelah mendefinisikan service, kita haruslah menentukan beberapa info penting seperti apa service ini, seperti :
a. apa yang service ini dapat lakukan
b. bagaimana bisa mengakssesnya
c. dimana itu tersedia
Ketiga informasi ini di kemas dalam endpoint.
Satu service dapat memiliki beberapa endpoint(multiple), hal ini dapat membuatnya interoperable untuk beberapa kebutuhan aplikasi.
Masing-masing endpoint ini dapat berbeda dalam hal:
a. alamat
b. persyaratan dalam hal binding
c. kontrak yang akan dilaksanakan (implement)
6. Integration Technologies
Biztalk server adalah kunci technology dan merupakan penganggung jawab dalam penyelarasan service WCF.
Unifying Distributed Technologies
WCF memiliki akar dalam sejumlah technology seperti :
1. ASMX
Web service adalah component dari web yang dapat di akses melalui standar terbuka seperti : SOAP dan HTTP. Teknology dibagikan sebelumnya memiliki 2 masalah utama :
a. Interoperability
b. Crossing Firewall
Web Service adalah sebuah class yang mewarisi sifat System.Web.Services.WebService dan mengandung method yang diexpose dengan atribut [WebMethod].
Untuk mengakses setiap komponen remote, anda memerlukan :
a. transport protocol
b. message protocol
c. Mekanisme Serialization untuk client dan server
SOAP adalah pilihan dan merupakan default message protocol, dan juga mengandung HTTP.Get.XML dan HTTP.Post.XML web service menggunakan xml Serialization.
2. MSMQ
3. WSE
WSE adalah 1 set class library. WSE adalah add-on dari .Net Framework yang mendukung WS-* specification (WS-Security,WS-Routing,DIME,WS-Attachment,dan lain-lain)
4. Enterprise Services
How Do You Unify All These Technologies?
Kebanyakan dari teknologi terdistribusi memiliki dasar konsep yang sama. Bagaimanapun juga, semuanya menyediakan service yang unique untuk produk
( jika perlu antrian, gunakan MSMQ atau System.Messaging, jika perlu transaksi gunakan System.EnterpriseService, jika perlu security gunakan WSE ). Sebagai programmer kita dipaksa untuk memilih.
Bagaimanapun juga, kita memerlukan 1 teknology terdistribusi untuk kemampuan yang lebih besar untuk mengatasi masalah yang ada (stack) dan menyediakan solusi dengan mudah dan flexible programming model.
WCF melakukan pekerjaan terbaiknya dalam menyediakan programming model yang tergabung, dimana kamu dapat menggabungkan perbedaan fungsi tsb kedalam aplikasi kita.(jika kita perlu antrian, cukup menambahkan atribut WCF Service Contract, jika kita perlu security dalam berkomunikasi, cukup tambahkan atribute security yang sesuai/tepat untuk authentication dan privacy, jika kita memerlukan dukungan transaksi, cukup tambahkan attribute transaksi)
References:
Pro WCF Practical Microsoft SOA Implementation
by :
Chris Peiris, Dennis Mulder, Shawn Cicoria, Amit Bahree, Nishith Pathak