Layanan web: Perbedaan antara revisi

Konten dihapus Konten ditambahkan
Syafuan (bicara | kontrib)
Kalau baru belajar Web Service silahkan baca ini
 
k merapikan dikit- artikel dipecah - {{rapikan}} - banyak bgn yg tdk perlu
Baris 1:
{{rapikan}}
{{pintas|[[WP:WBS]]}}
Berikut petunjuk untuk '''mulai mempelajari tentang Web Service'''.
* Wiki Markup: [[Wikipedia:Web Service|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
 
Baris 54 ⟶ 34:
*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.
Baris 103 ⟶ 72:
Gambar 3: Antarmuka dan binding-binding
*Konsumen harus mencari tahu semua detail-detail yang dijabarkan sebelum mereka dapat berinteraksi menggunakan Web Service.
 
 
 
 
Baris 165 ⟶ 132:
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:
<!-- WSDL definition structure --> <definitions name="MathService" targetNamespace="http://example.org/math/" xmlns="http://schemas.xmlsoap.org/wsdl/" > <!-- abstract definitions --> <types> ... <message> ... <portType> ... <!-- concrete definitions --> <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) ===
 
Baris 280 ⟶ 140:
Deskripsi yang Programmatic dari spesifikasi web service
Model pemrograman dan schema
 
Gambar 11: Contoh Skema Server UDDI.
 
=='''Tahap Pengembangan dan Implikasi Bisnis'''==
Baris 310 ⟶ 167:
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 ====
 
 
Baris 362 ⟶ 180:
*Tool-tool yang lebih baik bersifat open source
 
==Lihat pula==
'''MAKALAH TUGAS BESAR
*[[SOAP]]
MATA KULIAH PEMROGRAMAN JARINGAN
*[[WSDL]]
 
 
“WEB SERVICE”
 
 
DI SUSUN OLEH :
JULIANUS TATO 613020005
ABRAM DERISKO 613020012
SYAFUAN 613020095
BAGA GUSDIANA 613020105
REZQY CHANDRA 613030010
MOCH SUPRIADI 613030031
 
 
[[Kategori:Komputer]]
 
[[en:Web service]]
JURUSAN TEKNIK INFORMATIKA
SEKOLAH TINGGI TEKNOLOGI TELKOM
BANDUNG
2005'''