Layanan web
Berikut petunjuk untuk mulai mempelajari tentang Web Service.
- Wiki Markup: Pengertian Web Service
PENDAHULUAN
LATAR BELAKANG
- Web Service merupakan fenomena yang sangat panas saat ini karena, banyak kelebihan yang ditawarkan oleh Web Service terutama interoperabilitas tinggi dan penggunaannya yang dapat diakses kapanpun dan dimanapun selama mesin kita terhubung oleh jaringan internet salah satunya.
TUJUAN
- Tujuan dari penyusunan makalah ini adalah untuk membantu dalam proses pemahaman tentang Web Service :
BATASAN MASALAH
- Isi makalah yang akan kami buat memiliki beberapa batasan, yaitu :
Hanya membahas Pengertian ,Sejarah, Mekanisme Kerja, Pengembangan dan Implikasi Bisnis.
Pengertian dan Sejarah
Pengertian
1.1 Apa itu Web Service ?
- Web Service Sepenuhnya berdasarkan standard web dan xml
- Web Service dapat membantu:
- Perantara pada integrasi platform sepanjang eksekusi mesin virtual.
- Integrasi antara Web dan OO middleware.
- Integrasi dari aliran kerja terisolasi dan sevice-service (Web Services Flow Language - WSFL).
- Pertukaran data pada aplikasi yang berbeda-beda (X-Schema, XSLT ++)
- (Masa depan: standarisasi dari info konteks antara web servis dan klien – integrasi servis horizontal).
- Pemain utama dan standard-standard
Microsoft: .NET SUN: Open Net Environment (ONE) IBM: Web Service Conceptual Architecture (WSCA) W3C: Web Service Workshop Oracle: Web Service Broker Hewlett-Packard: Web Service Platform
- Kemampuan aplikasi, fungsi atau operasi yang di ekspos untuk program lain melalui standard yang terbuka, dan interoperable.
- “payloads” didefinisikan sebagai XML.
- “transports” melalui http atau Internet protocol terbuka lainnya.
- Data diakses dari berbagai bahasa pemrograman , platform hardware atau system operasi.
- Middlewear dari Internet.
1.2 Contoh implementasi
- General Motors
Mengintegrasikan manajemen kebutuhan pada lebih dari 8000 dealer-dealer.
- Dell
XML-based Web Services untuk menjadwalkan penyediaan data pada form yang dapat diproses langsung untuk jaringan penyuplai.
1.3 Keuntungan penggunaan Web Service :
- Format penggunaan terbuka untuk semua platform.
- Mudah di mengerti dan mudah men-debug.
- Dukungan interface yang stabil.
- Menggunakan standard-standard “membuka service sekali” dan mempunyai pemakai banyak.
- Mudah untuk menengahi pesan-pesan proses dan menambahkan nilai.
- Routing and pengiriman.
- Security.
- management and monitoring.
- schema and service design.
- Akselerasi.
- mudah untuk mengembangkan dengan semantic transport tambahan.
- Terbuka, standard-standard berbasis teks.
- Pencapaian modular.
- Tidak mahal untuk diimplementasikan (relatif).
- Mengurangi biaya integrasi aplikasi enterprise.
- Implementasi yang incremental.
1.4 Overview
- XML memungkinkan pengembang software untuk meng-expose sumber daya berharga pada bentuk yang memilki interoperabilitas tinggi, dimana sumber daya ini adalah semua tipe aplikasi atau pnyimpanan data yang digunakan oleh antar organisasi. Arsitektur XML Web services mendefinisikan mekanisme standard untuk menyediakan sumber daya melalui pengiriman pesan XML. Untuk mengakses sumber daya hanya dengan mentransmisikan pesan-pesan XML melalui protokol standard seperti TCP, HTTP, atau SMTP. Kata “Web Service” (singkatnya “service”) mengacu pada bagian kode yang mengimplementasikan interface XML menjadi sumber daya, dimana bias jadi sulit diakses (lihat gambar 1).
Gambar 1: Resources(Sumber daya) and services(Web Service)
- Arsitektur ini memungkinkan untuk konsumen dengan dukungan XML terintegrasi dengan aplikasi Web Service. Bagaimanapun, untuk memenuhi ini, konsumen harus menentukan antarmuka XML yang tepat sepanjang dengan pesan pesan yang beraneka ragam dan mempunyai detail-detail yang tepat. Skema XML dapat memnuhi kebutuhan ini karena mengizinkan pengembang untuk menjabarkan struktur dari pesan-pesan XML. Skema XML sendiri, bagaimanapun, tidak dapat menjabarkan detail-detail tambahan menyangkut komunikasi dengan Web Service.
- Definisi skema memberitahu pesan-pesan XML apa yang dapat digunakan tapi tidak bagaimana pesan-pesan tersebut berhubungan satu sama lain. Sebagai contoh, jika ada elemen XML dinamai Add dan nama lain AddResponse, ini sepertinya kedua nama tersebut berhubungan tapi tidak dapat mengindikasikan skemanya. Oleh sebab itu, sebagai tambahan untuk mengetahui pesan-pesan, konsumen harus juga mengetahui kemungkinan pertukaran pesan yang didukung oleh Web Service (contoh:., jika anda mengirim pesan Add, anda mendapatkan pesan kembali berupa AddResponse).
Pertukaran pesan dapat dimaksudkan sebagai pertukaran operasi. Operasi-operasi yang dilakukan konsumen kebanyakan pada point penting menginteraksikan service (Lihat gambar 2). Setiap kali menggunakan Web Service, akan dilakukan inspeksi daftar operasi yang didukung untuk mendapatkan semua proses yang tersedia.
Gambar 2: Pesan-pesan dan operasi-operasi
- Ini biasa untuk developer untuk mengelompokkan operasi-operasi terhubung menjadi antarmuka-antarmuka. Konsumen harus mengetahui pengelompokkan ini mempengaruhi cara mereka membuat kode. Ini sungguh penting untuk developer-developer yang bekerja dengan Web Service pada lingkup berorientasi objek karena antarmuka XML dapat memetakan menjadi antarmuka programmatis (atau kelas-kelas abstract) pada pilihan bahasa yang dipilih.
- Konsumen juga harus mengetahui protocol komunikasi apa yang digunakan untuk pengiriman pesan menuju service, sepanjang mekanisme spesifik yang terlibat saat menggunakan protokol yang ditentukan seperti pada penggunaan perintah, header-header, kode error. Pembungkusan (binding) menspesifikasikan detail-detail konkrit atas apa yang terjadi pada kabel (wire) dengan mensketsakan cara penggunaan antarmuka dengan protokol komunikasi khusus. Binding juga mempengaruhi cara peasn-pesan abstract di enkodisasi pada wire dengan menspesifikasikan style dari service (document vs. RPC) dan mekanisme enkodisasi (literal vs. terenkodisasi).
- Service dapat mendukung binding-binding ganda pada antarmuka yang ditentukan, tapi setiap binding harus dapta diakses pada alamat unik yang diidentifikasikan oleh URI, juga ditujukan sebagai titik akhir dari Web Service (lihat gambar 3).
Gambar 3: Antarmuka dan binding-binding
- Konsumen harus mencari tahu semua detail-detail yang dijabarkan sebelum mereka dapat berinteraksi menggunakan Web Service.
Sejarah
- Sebelum kita memasukki sejarah tentang Web Service, adabaiknya kita terlebih dahulu mebahas masalah paradigma pekembangan bahasa pemrograman terlebih dahulu.
1.2 Sejarah bahasa pemrograman adalah:
- Pemrograman terstruktur.
- Pemrograman berorientasi- objek.
- Komputasi terdistribusi.
- Pertukaran data elektronik.
- World Wide Web.
- Web services.
1.3 Ada pun perusahaan yang mengusulkan konsep web service adalah:
- Hewlett-Packard's e-Speak pada 1999 adalah penyedia e-service.
- Microsoft memperkenalkan nama "web services" pada Juni 2000.
- Microsoft “mempertaruhkan nama perusahaan" pada strategi web service ini.
- sekarang setiap vendor mulai menjadi “pemain”.
- Untuk lebih lanjut mengenai perkembangan sejarah Web service yang mana cikal bakal terbentuknya dari arsitektur DCE, dapat dilihat pada gambar 4: Sejarah terbentuknya Web Service.
- Dari gambar tersebut dapat dilihat bahwa XML Web Service mempunyai interoperabilitas yang sangat tinggi karena pengembang Web service terdiri dari banyak vendor.
Mekanisme Kerja
Sebelum memasukki mekanisme kerja yang terjadi pada Web Service, akan dibahas terlebih dahulu komponen-kompenen yang mempunyai peranan penting pada Web Service, komponen-komponen tersebut dapat dilihat pada standard-standard web service itu sendiri, dimana standard-standard web service adalah sebagai berikut: WSDL Web Services Description Language http://www.w3.org/TR/wsdl Deskripsi-deskripsi dari web service UDDI Universal Discovery, Description & Integration http://www.uddi.org/specification.html Registry mengenai deskripsi servis SOAP Simple Object Access Protocol http://www.w3.org/TR/SOAP/ Protokol transport untuk berkomunikasi antar web service Standard-standard lain: WSRP, WSIA, WSXL…….
Selain standard-standard Web Service, juga ada Bagian-bagian Web Service (Web Service Dumpstack) yang mendeskripsikan task-task yang akan terjadi pada proses berjalannya web service, dimana task-task tersebut antara lain: Wire Protocols, Description, Discovery. Untuk lebih lanjut mengenai bagian-bagian Web Service maka dapat dilihat ilustrasinya pada gambar 5: Bagian-bagian Web Service .
gambar 5: Bagian-bagian Web Service
keterangan
Wire Protocols Aturan utama: menyediakan standard, channel komunikasi flexible Aturan tambahan: menyediakan standard, representasi wire-level data yang flexible Keuntungan: interoperabilitas pada level terendah
Deskripsi Aturan utama: menyediakan standard, jalan untuk menjabarkan apa dan bagaimana web service melakukan yang harus dilakukan dengan fleksibel. Keuntungan: interoperabilitas.
Discovery Aturan utama: menyediakan standard, jalur untuk menemukan dimana web service di tempatkan dan bagaimana mencari informasi tambahan tentang apa yang dilakukan web service dengan fleksibel Keuntungan: interoperabilitas, integrasi yang dinamis
2.1 Simple Object Access Protocol (SOAP)
SOAP adalah: Jalan untuk program yang berjalan pada suatu OS untuk berkomunikasi dengan program pada OS Yang sama maupun berbeda dengan menggunakan HTTP dan XML sebagai mekanisme untuk pertukaran data.
SOAP menspesifikan secara jelas bagaimana cara untuk meng-encoding header HHTP dan file XML sehingga program pada suatu computer dapat menmanggil program pada pada computer lain dan mengirimkan informasi, dan bagaimana program yang dipanggil memberikan response.
SOAP adalah protocol ringan yang ditujukan untuk pertukaran informasi struktur pada lingkup desentralisasi, dan terdistribusi. SOAP menggunakan teknologi XML utuk mendefinsiskan framework pemesanan terekstrensi. Dimana menyediakan konstruksi pesan yang dapat dipertukarkan pada protokol berbeda. Framework didesain bebas dari model pemrograman dan spesifikasi implementasi semantik.
gambar 6: Dasar pertukaran pesan SOAP.
Pada gambar diatas dapat dilihat proses pertukaran pesan pada SOAP, mulai dari permintaan layanan hingga Penyedia Layanan menyediakan program.
gambar 7: amplop SOAP
Amplop SOAP menerangkan isi dari grammar XML pada SOAP
2.2 WSDL (Web Services Description Language)
Pengertian: WSDL adalah grammar XML yang simple untuk menjabarkan bagaimana cara berkomunikasi dengan web service WSDL mendefinisikan pesan-pesan (baik yang abstract dan kongkrit) yang di kirim ke dan menuju web service WSDL mendefinisikan koleksi-koleksi digital dari pesan-pesan (“port type”, “interface”) WSDL mendefinisikan bagaiman “tipe port” yang ditentukan dijadikan wire protokol WSDL mendefinisikan dimana servis di tempatkan
Web Services Description Language (WSDL) menyediakan sebuah kamus XML untuk menjabarkan detail-detail ini. WSDL digunakan dimana skema XML tidak digunkan lagi dengan menyediakan jalur pesan-pesan group menjadi operasi-operasi dan operasi-operasi menjadi antarmuka. Ini juga menyediakan jalur untuk medefinisikan binding-binding untuk setiap antamuka dan kombinasi protokol sepanjang alamt titik akhir utnuk setaip kalinya. Definisi WSDL yang lengkap terdiri dari seluruh informasi yang dibutuhkan untuk meminta Web service. Pengembang yang mau mempermudah yang lain untuk mengakses service-servicenya harus menyediakan defisi-definisi WSDL . WSDL memainkan peranan penting pada seluruh arsitektur Web service semenjak menjabarkan kontrak lengkap pada komunikasi aplikasi (sama seperti peran IDL pada arsitektur DCOM). Walaupun teknik-teknik lain untuk menjabarkan Web service ada, WS-I Basic Profile Version 1.0 memandati penggunaan WSDL dan skema XML (lihat gambar 4) untuk menjabarkan Web service. Ini membantu untuk memastikan interoperbilitas pada layer deskripsi service.
Gambar 4: teknologi WS-I Basic Profile 1.0 Karena WSDL adalah mesin yang dapat dibaca(misalnya, ini hanya file XML), tool-tool dan infrastruktur dan dengan mudah dibuat seputar ini. Saat ini pengembang-pngembang dapat definisi-definisi WSDL untuk membangun kode yang tahu dengan tepat bagaimana berinteraksi dengan Web service yang menjabrkan. Pembangunan code tipe ini menyembunyikan detail-detail membosankan yang terlibat pada pengiriman dan penrimaan pesan-pesan SOAP pada protokol-protokol yang berbeda-beda dan menyebabkan Web service dapat dicapai oleh massa. Microsoft® .NET Framework menggunakan utilitas command-line bernama wsdl.exe yang mengenerasi kelas-kelas dari definsi WSDL. Wsdl.exe dapat meng-generasi satu kelas untuk menggunakanservice dan yang lainnya untuk mengimplementasikan service.(Apache axis menggunkaan utilitas yang sama bernama WSDL2Java yang melakukan fungsi yang sama pada kelas-kelas java.) Kelas-kelas digenerasi dari definisi WSDL sama harus mampu berkomunikasi dengan yang lain sepanjang antarmuka WSDL yang tersedia, tanpa memperhatikan bahasa pemrograman yang digunakan (Lijhat Gambar 8).
Gambar 8: WSDL dan generasi kode WSDL 1.1 mempertimbangkan standard de-facto saat ini karena dukungan industri yang luas. Kebanyakkan toolkit-toolkit Web service mendukung WSDL 1.1, tapi ada sedikit masalah interoperabilitas pada implementasi berbeda. Kebanyakkanpembangun-pembangun percaya bahwa fleksibilitas yang luas dari WSDL (dan kompleksitas hasil) adalah sumber fundamental dari masalah ini. WS-I telah membantu memecahkan bebrapa dari masalah ini dengan memkasakan pengembang-pengembang untuk menggunakan bagian-bagian tepat dari spesifikasi dan tidak menganjurkan mereka untuk menggunakan yang lainnya. W3C secara aktif bekerja pada versi WSDL “terdaftar” terakhir, WSDL 1.2, tapi saat ini hanya Working Draft dan tidak didukung oleh toolkit-toolkit mainstream, jika ada
Dasar WSDL Definisi WSDL adalah dokumen XML dengan element definisi root dari http://schemas.xmlsoap.org/wsdl/ namespace. Elemen defines-definisi dapat berisis beberapa elemen-elemen lain termasuk tipe-tipe, pesan, portType, binding dan service, semua yang datang dari http://schemas.xmlsoap.org/wsdl/ namespace. Ilustrasi berikut mengilustarsikan srtuktur dari definisi WSDL:
<definitions name="MathService" targetNamespace="http://example.org/math/" xmlns="http://schemas.xmlsoap.org/wsdl/" > <types> ... <message> ... <portType> ... <binding> ... <service> ... </definition>
Melihat bahwa kita harus menspesifikasikan namespace target untuk definsi WSDL, seperti yang akan kita lakukan untuk definsi skema XML. Semua yang anda namai pada definsis WSDL (seperti pesan, portType, binding, dsb.) secara otomatis menjadi bagian dari target namespace definsi WSDL yang didefinsikan oleh atribut targetNamespace, jika kita mereferensikan sesuatu menggunakan nama pada file WSDL, kita harus mengingat nama yang memenuhi aturan. Yang pertama dari tiga elemen (types, message, and portType) adalah seluruh definisi-definisi abstrak dari antarmuka Web Service. Elemen ini mengkonstitusikan antarmuka programatis yang biasa kita antarmukakan pada kode. Dua elemen terakhir (binding and service) menjabarkan detail-detail konkrit bagaimana antarmuka abstrak memetakan pesan pada wire. Detail-detail ini biasanya ditangani oleh infrastruktur, tidak oleh kode aplikasi. Tabel 1 menyediakan definisi-definisi untuk setiap inti elemen-elemen WSDL
Nama Element Deskripsi types Penampung definsi tipe yang abstrak yang didefinisikan menggunkana skema XML message Definisi dari pesan abstrak yang dapat terdiri dari banyak bagian, untuk setiap bagian mungkin dapat berbeda tipe portType Kumpulan abstrak dari operasi yang didukung oleh satu atau lebih titik akhir (biasanya disebut antarmuka); operasi-operasi didefinsikan oleh pertukaran pesan-pesan. binding Protocol konkrit dan spesifikasi format data pada portType service Koleksi titikakhir terhubung, dimana titikakhir didefinsikan sebagai kombinasi dari binding dan alamat (URI) Tabel 1. Elemen WSDL
Gambar 9: Elemen dan spesifikasi WSDL Contoh – contoh: Types
<definitions .... > <types> <xsd:schema .... />* </types> </definitions> ….. <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:y="http://example.org/math/" xmlns:ns="http://example.org/math/types/" targetNamespace="http://example.org/math/" > <types> <xs:schema targetNamespace="http://example.org/math/types/" xmlns="http://example.org/math/types/" > <xs:complexType name="MathInput"> <xs:sequence> <xs:element name="x" type="xs:double"/> <xs:element name="y" type="xs:double"/> </xs:sequence> </xs:complexType> <xs:complexType name="MathOutput"> <xs:sequence> <xs:element name="result" type="xs:double"/> </xs:sequence> </xs:complexType> <xs:element name="Add" type="MathInput"/> <xs:element name="AddResponse" type="MathOutput"/> <xs:element name="Subtract" type="MathInput"/> <xs:element name="SubtractResponse" type="MathOutput"/> <xs:element name="Multiply" type="MathInput"/> <xs:element name="MultiplyResponse" type="MathOutput"/> <xs:element name="Divide" type="MathInput"/> <xs:element name="DivideResponse" type="MathOutput"/> </xs:schema> </types> ... </definitions> ….. Messages <definitions .... > <message name="nmtoken"> * <part name="nmtoken" element="qname"? type="qname"?/> * </message> </definitions> ….. <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:y="http://example.org/math/" xmlns:ns="http://example.org/math/types/" targetNamespace="http://example.org/math/" > ... <message name="AddMessage"> <part name="parameter" element="ns:Add"/> </message> <message name="AddResponseMessage"> <part name="parameter" element="ns:AddResponse"/> </message> <message name="SubtractMessage"> <part name="parameter" element="ns:Subtract"/> </message> <message name="SubtractResponseMessage"> <part name="parameter" element="ns:SubtractResponse"/> </message> ... </definitions> ….. Interfaces (portTypes) <definitions .... > <portType name="nmtoken"> <operation name="nmtoken" .... /> * </portType> </definitions> ….. <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:y="http://example.org/math/" xmlns:ns="http://example.org/math/types/" targetNamespace="http://example.org/math/" > ... <portType name="MathInterface"> <operation name="Add"> <input message="y:AddMessage"/> <output message="y:AddResponseMessage"/> </operation> <operation name="Subtract"> <input message="y:SubtractMessage"/> <output message="y:SubtractResponseMessage"/> </operation> <operation name="Multiply"> <input message="y:MultiplyMessage"/> <output message="y:MultiplyResponseMessage"/> </operation> <operation name="Divide"> <input message="y:DivideMessage"/> <output message="y:DivideResponseMessage"/> </operation> </portType> ... </definitions> Bindings <wsdl:definitions .... > <wsdl:binding name="nmtoken" type="qname"> * <-- extensibility element providing binding details --> * <wsdl:operation name="nmtoken"> * <-- extensibility element for operation details --> * <wsdl:input name="nmtoken"? > ? <-- extensibility element for body details --> </wsdl:input> <wsdl:output name="nmtoken"? > ? <-- extensibility element for body details --> </wsdl:output> <wsdl:fault name="nmtoken"> * <-- extensibility element for body details --> </wsdl:fault> </wsdl:operation> </wsdl:binding> </wsdl:definitions> MathInterface portType: <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:y="http://example.org/math/" xmlns:ns="http://example.org/math/types/" targetNamespace="http://example.org/math/" > ... <binding name="MathSoapHttpBinding" type="y:MathInterface"> ... <-- extensibility element --> <operation name="Add"> ... <-- extensibility element --> <input> ... <-- extensibility element --> </input> <output> ... <-- extensibility element --> </output> </operation> ... </binding> ... </definitions> MathInterface portType: <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:y="http://example.org/math/" xmlns:ns="http://example.org/math/types/" targetNamespace="http://example.org/math/" > ... <binding name="MathSoapHttpBinding" type="y:MathInterface"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="Add"> <soap:operation soapAction="http://example.org/math/#Add"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> ... </binding> ... </definitions> ….. <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > <SOAP-ENV:Body> <m:Add xmlns:m="http://example.org/math/types/"> <x>3.14159265358979</x> <y>3.14159265358979</y> </m:Add> </SOAP-ENV:Body> </SOAP-ENV:Envelope> ….. ... <message name="AddMessage"> <part name="parameter" type="ns:MathInput"/> </message> <message name="AddResponseMessage"> <part name="parameter" type="ns:MathOutput"/> </message> ... <binding name="MathSoapHttpBinding" type="y:MathInterface"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="Add"> <soap:operation soapAction="http://example.org/math/#Add"/> <input> <soap:body use="encoded"/> </input> <output> <soap:body use="encoded"/> </output> </operation> ... </binding> ….. <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:m0="http://example.org/math/types/" > <SOAP-ENV:Body> <m:Add xmlns:m="http://example.org/math/"> <parameter xsi:type="m0:MathInput"> <x xsi:type="xsd:double">3.14159265358979</x> <y xsi:type="xsd:double">3.14159265358979</y> </parameter> </m:Add> </SOAP-ENV:Body> </SOAP-ENV:Envelope> Services <definitions .... > <service .... > * <port name="nmtoken" binding="qname"> * <-- extensibility element defines address details --> </port> </service> </definitions> ….. <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:y="http://example.org/math/" xmlns:ns="http://example.org/math/types/" targetNamespace="http://example.org/math/" > ... <service name="MathService"> <port name="MathEndpoint" binding="y:MathSoapHttpBinding"> <soap:address location="http://localhost/math/math.asmx"/> </port> </service> </definitions> ….. WSDL Editors
Gambar 6. definsi WSDL MathService dibuat dengan XML Spy 5.0 Contoh Grammar XML lengkap : WSDL <definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:y="http://example.org/math/" xmlns:ns="http://example.org/math/types/" targetNamespace="http://example.org/math/"> <types> <xs:schema targetNamespace="http://example.org/math/types/" xmlns="http://example.org/math/types/" elementFormDefault="unqualified" attributeFormDefault="unqualified"> <xs:complexType name="MathInput"> <xs:sequence> <xs:element name="x" type="xs:double"/> <xs:element name="y" type="xs:double"/> </xs:sequence> </xs:complexType> <xs:complexType name="MathOutput"> <xs:sequence> <xs:element name="result" type="xs:double"/> </xs:sequence> </xs:complexType> <xs:element name="Add" type="MathInput"/> <xs:element name="AddResponse" type="MathOutput"/> <xs:element name="Subtract" type="MathInput"/> <xs:element name="SubtractResponse" type="MathOutput"/> <xs:element name="Multiply" type="MathInput"/> <xs:element name="MultiplyResponse" type="MathOutput"/> <xs:element name="Divide" type="MathInput"/> <xs:element name="DivideResponse" type="MathOutput"/> </xs:schema> </types> <message name="AddMessage"> <part name="parameters" element="ns:Add"/> </message> <message name="AddResponseMessage"> <part name="parameters" element="ns:AddResponse"/> </message> <message name="SubtractMessage"> <part name="parameters" element="ns:Subtract"/> </message> <message name="SubtractResponseMessage"> <part name="parameters" element="ns:SubtractResponse"/> </message> <message name="MultiplyMessage"> <part name="parameters" element="ns:Multiply"/> </message> <message name="MultiplyResponseMessage"> <part name="parameters" element="ns:MultiplyResponse"/> </message> <message name="DivideMessage"> <part name="parameters" element="ns:Divide"/> </message> <message name="DivideResponseMessage"> <part name="parameters" element="ns:DivideResponse"/> </message> <portType name="MathInterface"> <operation name="Add"> <input message="y:AddMessage"/> <output message="y:AddResponseMessage"/> </operation> <operation name="Subtract"> <input message="y:SubtractMessage"/> <output message="y:SubtractResponseMessage"/> </operation> <operation name="Multiply"> <input message="y:MultiplyMessage"/> <output message="y:MultiplyResponseMessage"/> </operation> <operation name="Divide"> <input message="y:DivideMessage"/> <output message="y:DivideResponseMessage"/> </operation> </portType> <binding name="MathSoapHttpBinding" type="y:MathInterface"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="Add"> <soap:operation soapAction="http://example.org/math/#Add"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> <operation name="Subtract"> <soap:operation soapAction="http://example.org/math/#Subtract"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> <operation name="Multiply"> <soap:operation soapAction="http://example.org/math/#Multiply"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> <operation name="Divide"> <soap:operation soapAction="http://example.org/math/#Divide"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="MathService"> <port name="MathEndpoint" binding="y:MathSoapHttpBinding"> <soap:address location="http://localhost/math/math.asmx"/> </port> </service> </definitions>
Gambar 10: WSDL - overview
2.3 UDDI (skema xml)
Kemampuan atribut metadata untuk service-service didaftarkan pada UDDI, dan lalu menjalankan quei-queri berdasarkan pada metadata tersebut yang menengahi secara mutlak menuju tujuan dari UDDI pada kedua waktu desain dan waktu pengekskusian.
UDDI (Universal Description, Discovery, and Integration) mempunyai tugas sebagai berikut: Deskripsi yang Programmatic dari bisnis dan sevice yang didukung Deskripsi yang Programmatic dari spesifikasi web service Model pemrograman dan schema
Gambar 11: Contoh Skema Server UDDI.
Tahap Pengembangan dan Implikasi Bisnis
1.TahapPengembangan.
- Sebelum melakukan pengembangan, harus diketahui dulu ruang lingkup pengembangan aplikasi berbasiskan Web Service menurut media protokolnya, adapun ruang lingkup aplikasi Web Service tersebut adalah”
Dalam korporasi firewall Untuk aplikasi enterprise terintegrasi ringan
- Antar korporasi firewall
Untuk digunakan pada layanan eksternal (contoh: passport) Untuuk menyediakan data untuk partner-partner
- Melalui Web
Aplikasi komposit Komponen-komponen AliranKerja
- Sedangkan tahap-tahap pengembangan Web Service itu sendiri adalah:
Discover – browse registry UDDI untuk mencari Web Service yang sudah ada untuk integrasi. Create or Transform –buat Web Service dari project-project yang ada. Build – satukan artifak yang ada sebagai SOAP dan service HTTP dan jabarkan pada WSDL. Deploy – Aplikasikane menjadi server aplikasi Wensphere atau Tomcat. Test – Uji coba web service baik local (stand alone computer) atau secara remote. Develop – Bangun contoh aplikasi untuk memberi masukkan dalam membuat aplikasi klien Web service Publish – publikasikan / upload Web Service pada bisnis registri UDDI.
- Untuk keterangan mengenai toolkit-toolkit untuk pembuatan aplikasi dapat dilihat ilustrasi dibawah ini.
Gambar 12: Toolkit – toolkit Web Services
- Tahapan pembangunan Web Service pada dua platform dasar yang berbeda yaitu:
java: Platform > JVM > servlet, jsp, jdbc, jndi, jms, rmi, corba, EJB, jax package etc. .net Wintel > CLR (common Language Runtime) > System.WebService, ASP.NET, DirectoryServices, System.Messaging, System.Runtime.Remoting, MSXML, SOAP, WSDL etc.
2. Implikasi Bisnis.
2.1 Trend Adopsi Web Service
Gambar 13: Trend adopsi Web Service
Dari gambar diatas dapat diambil kesimpulan bahwa pada saat ini pada umumnya oleh developer Web Service masih dalam tahap Riset.
1.2 Tantangan Terbesar Web Service
Gambar 14: Tantangan Terbesar Web Service
Dari gambar diatas dapat dilihat bahwa saat ini fokus pengembangan Web Service masih pada Nilai Bisnis, jadi salah satu tujuan di buatnya web service sudah tercapai. Sementara itu untuk dukungan vendor masih kecil, ini berarti interoperabilitas yang tinggi masih tetap dipertahankan.
1.3 Platform yang digunakan
Kesimpulan
Dari Makalah ini dapat diambil kesimpulan sebagai berikut:
- Web service adalah teknologi dengan resiko rendah (relatif) yang dapat digunakan untuk mengimplementasikan strategi bisnis bersiko tinggi.
- Web service berdasarkan middleware OO, XML dan onsep Internet Protokol, dan membantu pergerakkan dari sistem-sistem heterogen menuju sistem yang lebih homogen
- Banyak-vendor turut membuat standard
- Membuka semua jenis kesempatan untuk semua orang
- Incremental, non-intimidating, minimal technology play
- Kostumer memulai tanpa menunggu vendor-vendor
- Web service mentransformasikan web browser centris menjadi servis centris
- Tool-tool yang lebih baik bersifat open source
MAKALAH TUGAS BESAR MATA KULIAH PEMROGRAMAN JARINGAN
“WEB SERVICE”
DI SUSUN OLEH :
JULIANUS TATO 613020005
ABRAM DERISKO 613020012
SYAFUAN 613020095
BAGA GUSDIANA 613020105
REZQY CHANDRA 613030010
MOCH SUPRIADI 613030031
JURUSAN TEKNIK INFORMATIKA SEKOLAH TINGGI TEKNOLOGI TELKOM BANDUNG 2005