Archive for » November 26th, 2009«

Pro WCF Practical Microsoft SOA Implementation

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 :

  • Cross Platform Integration
    Message dapat menjadi “penerjemah yang universal” diantara macam-macam platform dan languages, mengizinkan masing-masing platform untuk bekerja dengan respective native type data.
  • Asynchronous Communication
    Message biasa mengizinkan untuk “fire-and-forget”(yang langsung ditutup setelah dipakai) style of communication
  • Reliable Communication
    Message diturunkan menggunakan style “store-and-forward” untuk pengiriman, dimana mengizinkan message-message untuk dapat dipercaya daripada RPC.
  • Mediation
    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.
  • Thread Management
    Berkaitan dengan Komunikasi Asynchronous, ini berarti satu aplikasi tidak dapat menghalangi aplikasi lainnya untuk selesai.
  • Remote Communication
    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.
  • End-to-End Security
    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.
    • 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.

    • 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 :

      • request messages
      • response messages
      • fault messages

      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 :

      • Document
      • RPC

      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

    Category: SOA  Tags:  Leave a Comment