Upload
akhmad-riadi
View
20
Download
0
Embed Size (px)
DESCRIPTION
Arsitektur Aplikasi Perangkat Enterprise SOAP (Simple Object Access Protocol)
Citation preview
Arsitektur Aplikasi
Perangkat Enterprise #12
Antonius Rachmat C, S.Kom
SOAP Background
Originally designed by Dave Winer, Don Box, Bob Atkinson, and Mohsen Al-Ghosein in 1998 with backing from Microsoft as an object-access protocol, the SOAP specification is currently maintained by the XML Protocol Working Group of the World Wide Web Consortium.
Developed by IBM, Microsoft, Lotus, and others
Submitted to W3C - Became W3C Note in May 1998
Current Version is 1.2, See:
http://www.w3.org/TR/SOAP
SOAP (Simple Object Access Protocol)
SOAP merupakan protokol komunikasiberbasis XML yang memperbolehkan aplikasi saling bertukar informasimelalui HTTP
SOAP merupakan protokol yang menangani web service
SOAP digunakan untuk mengirimkan message melalui Internet, bersifat platform independent, and language independent
Elemen SOAP
Elemen SOAP (2)
Elemen Envelope yang mengidentifikasi XML dokumen sebagai SOAP message (wajib)
Elemen Header yang berisi informasi header (opsional)
Determines how a recipient of a SOAP message should process the message
Adds features to the SOAP message such as authentication, message routes, additional information, etc
Elemen Body yang berisi response (wajib)
Elemen Fault yang berisi informasi error yang terjadi (opsional)
Plus-Minus SOAP
Plus
Uses HTTP which is widely used and scalable
Flexible for growth because of XML properties
It can be used for RPC.
Minus
Parsing of SOAP packet and mapping to objects reduces performance
Doesnt implement security because it relies on HTTP
Example SOAP Request
POST /LelangService/LelangService.asmx HTTP/1.1 Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: lengthSOAPAction: http://tempuri.org/LelangService/LelangServiceClass/checkCC
string string string string
Example SOAP Response
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
boolean
HTTP POST
POST /LelangService/LelangService.asmx/checkCC HTTP/1.1
Host: localhost
Content-Type: application/x-www-form-urlencoded
Content-Length: length
userid=string&tipe=string&no_cc=string&cvv=string
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length
boolean
Aturan
SOAP Envelope menggunakan namespace
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
SOAPs Syntax Rules:
SOAP harus dibuat dengan menggunakan sintaks XML
SOAP harus menggunakan SOAP Envelope namespace
SOAP tidak boleh mengandung DTD
SOAP tidak boleh mengadung XML Processing Instruction
SOAP Skeleton
SOAP Fault
Used to carry error and/or status information within a SOAP message
Appears within the SOAP body, if appears, it just appears only once.
SOAP Fault Code Element
SOAP Fault Example
soap:ServerInternal Application Error
794634Divide by zero
SOAP Envelope
SOAP Header (opsional)
SOAP Body Resquest
SOAP Body Response
What is WSDL?
Stands for Web Service Description Language
WSDL is a document written in XML
The document describes a Web service
Specifies the location of the service and the methods the service exposes
Not a W3C Standard
Introduction
Once you develop a Web Service:
you publish its description
and optionally a link to it in a UDDI repository
so that potential users can find it
When someone wants to use your service, they request the WSDL file in order to:
find out the location of the service,
the function calls
and how to access them
Then they use this information in your WSDL file to:
form a SOAP request to the computer
Why WSDL?
Without WSDL, calling syntax must be determined from documentation that must be provided, or from examining wire messages
With WSDL, the generation of proxies for Web services is automated in a truly language- and platform-independent way
Working of WSDL
Figure 1. A client invoking a Web service.
WSDL Elements
Big Picture of WSDL Elements
WSDL document structure
Namespace used
The XML namespace prefix are used to indicate the namespace of the element being defined
All WSDL elements belong to the WSDL namespace, defined as http://schemas.xmlsoap.org/wsdl/ xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:xsd=http://www.w3.org/2001/XMLSchema
xmlns:soap=http://schemas.xmlsoap.org/wsdl/soap/
xmlns:soapenc=http://schemas.xmlsoap.org/soap/encoding/
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
Types Section
The type element defines the data types that are used by the web service.
Message
A message is protocol independent
There is an input or request message, which is sent from the client to the service, and there is a output or response message, which is sent back the opposite way
Each element contains one or more elements.
element corresponds to the parameter or a return value in the RPC call.
The part name order reflects the order of the parameters in the RPC signature.
Messages Section
A message element defines parameters The name of an output message element ends in "Response" by convention
PortTypes Section Defines a web service, the operations that can be performed, and the
messages that are involved.
Operation defines which message is the input and which message is the output
SOAP Binding
- Signifies that the binding is bound to the SOAP protocol format: Envelope, Header and Body
- Provides information for the document as a whole
.
.
SOAP Binding contd.
- Specifies how the message parts appear inside the SOAP Body element
- Specifies the contents of the contents of the SOAP fault
SOAP binding contd. and - Allow headers to
be defined that are transmitted inside the Header element of the SOAP Envelope
- Used to give a port an address (a URI)
Bindings Section
The binding element defines the message format and protocol details for each port.
PortType Operation
Tipe operasi PortType:
One-way: operation dapat menerima message tapi tidak mengembalikan response
PortType Operation
Tipe operasi PortType:
Request-response: operation dapat menerima message dan akan mengembalikan response
PortType Operation
Tipe operasi PortType:
Notification: operation hanya memberikan response saja
Element Service
Digunakan untuk menamai keseluruhan service pada sebuah web service beserta nama port, binding, dan lokasi web service tersebut
UDDI
Universal Description, Discovery and Integration
Adalah direktori/registry yang bersifat platform independent, untuk mendeskripsikan, menyimpan service, bisnis dan integrasi bisnis pada Internet yang berkomunikasi via SOAP dan WSDL.
How UDDI Works
UDDI Business Registry
3. UBR assigns a programmatically unique identifier to each service and business registration
Marketplaces, search engines, and business apps query the registry to discover services at other companies
4.
Segrvice TypeReistrations
SW companies, standards bodies, and programmers populate the registry withdescriptions of different types of services
1.
BusinessRegistrationsBusinesses
populate the registry withdescriptions of the services they support
2.
Business uses this data to facilitate easier integration with each other over the Web
5.
Komponen UDDI
UDDI memiliki 3 komponen:
White Pages
Yellow Pages
Green Pages
White Pages Berisi Business Name
Text Description
list of multi-language text strings
Contact info
names, phone numbers, fax numbers, web sites
Known Identifiers
list of identifiers that a business may be known by
Yellow Pages
Business categories
3 standard taxonomies in Version 1
Industry: NAICS (Industry codes - US Govt.)
Product/Services: UN/SPSC (ECMA)
Location: Geographical taxonomy
Implemented as name-value pairs to allow any valid taxonomy identifier to be attached to the business white page
Green Pages New set of information businesses use to describe how to do e-commerce with them
Nested model
Business processes
Service descriptions
Binding information
Programming/platform/implementation agnostic
Services can also be categorized
Keuntungan UDDI
Membuat web service-web service dapat ditemukan/dicari oleh user-user lain yang online.
Mempermudah mencari customer baru dan mempermudah akses pada customer lama
Mempermudah marketing dan meraih pasar
Menyelesaikan masalah customer secara cepat dalam era ekonomi Internet.
Mendeskripsikan service dan proses bisnis dalam satu kesatuan, terbuka, dan lingkungan yang aman.
WEB SERVICE dengan .NET
Web Service dengan .NET
Procedure : adalah suatu kumpulan perintah-perintah yang digunakan untuk suatu tujuan tertentu dan diberi nama tertentu. Procedure tidak mengembalikan nilai Di dalam VB : keywordnya sub end sub Tidak ada keyword return
Function : adalah suatu kumpulan perintah-perintah yang digunakan untuk suatu tujuan tertentu dan diberi nama tertentu serta mengembalikan nilai tertentu keluar kepada fungsi yang memanggilnya. Function mengembalikan nilai Di dalam VB : keywordnya function . end function Ada keyword return
Contoh Procedure
Dalam VB:
Private Sub LuasPersegiPanjang(ByVal panjang as Integer,ByVal lebar as Integer)
Dim luas as Integer
luas = panjang * lebar
Console.WriteLn(Luas = & Str(luas))
End Sub
Dalam C#:
private void LuasPersegiPanjang(int panj, int lebar){
int luas;
luas = panj * lebar;
Console.WriteLn(Luas = + Convert.ToString(luas));
}
Contoh Function
Dalam VB:
Private Function LuasPersegiPanjang(ByVal panjang as Integer,ByVal lebar as Integer) as Integer
Return panjang*luas;
End Sub
Console.WriteLn(Luas = & LuasPersegiPanjang(5,3));
Dalam C#:
private int LuasPersegiPanjang(int panj, int lebar){
return panj*lebar;
}
Console.WriteLn(Luas = + LuasPersegiPanjang(5,3));
DEMO WEB SERVICE
NumberGuest pada Desktop
NumberGuest pada Web
DatabaseDemo pada Desktop
DatabaseDemo pada Web
Number Guest
Untuk pembuatan web service di .Net kita perlu membuat project baru yang disebut ASP.NET Web Service Solution
Silahkan simpan pada location seperti misalnya: http://localhost:8081/NumberGuest
Kemudian klik kanan form yang ada dan pilih View Code
Sehingga akan muncul tempat menuliskan code program VB
Pada kode tersebut sudah dipersiapkan contoh suatu method / function dalam VB, yaitu HelloWorld
Di dalam web service kita harus membuat fungsi-fungsi/procedure-procedure atau method-method sesuai dengan kebutuhan
Untuk contoh project kita, kita perlu membuat berbagai fungsi sebagai berikut:
Acak() untuk mengacak bilangan random dari server dan mengambilnya
isMatch(inputanUser) untuk mencocokkan bilangan inputan user dengan bilangan hasil random yang ada
Prinsip-prinsip Method
Jika kita mengharapkan nilai kembalian dari suatu method gunakan function
Sedangkan jika kita tidak mengharapkan suatu nilai kembalian dari suatu method, kita gunakan sub/procedure/function-void
Pakailah semua method yang telah dibuat pada webservice untuk digunakan pada program desktop atau web application yang kita buat
Jika kita deklarasikan method yang bersifat private, maka method tersebut tidak akan tampak dalam list method yang ada di daftar service dalam Web Service.
Jika kita membuat method yang bersifat public, maka akan tampak di dalam list method yang ada di daftar service dalam Web Service.
NumberGuestWeb
Buatlah project baru pada VS.NET yaitu ASP.NET Web Application
Kemudian desainlah!
Cara menambahkan Web Service ke project:
Di bagian solution explorer, klik kanan pada nama project yang kita buat dan pilih menu Add Web references
Kemudian kita browse ke Web Service on the local machine dan pilih web service yang telah kita buat
Atau dapat pula kita tuliskan di URL, misalnya: http://localhost:8081/EnterpriseService/NumberGuest.asmx
Setelah itu isi nama pada text box Web Reference Name, misalnya localhost
Setelah itu klik Add Reference sehingga pada bagian solution explorer, kita bisa melihat ada Web References yang berisi localhost
NumberGuestWeb
NumberGuestWeb
Untuk dapat menggunakan Web Service localhost kita, kita harus mendeklarasikannya pada bagian public declaration, misalnya:
Private ws As localhost.NumberGuest = New localhost.NumberGuest
NumberGuestWeb
NumberGuestDesktop
Buatlah project baru pada VS.NET yaitu ASP.NET Windows Application
Kemudian desainlah!
Cara menambahkan Web Service ke project sama dengan pada Web Client Application
Desainlah sebagai berikut:
NumberGuestDesktop
Pada bagian global declaration ketikkan code sebagai berikut:
Private ws As localhost.NumberGuest = New localhost.NumberGuest
Pada bagian Button Guest ketikkan kode sebagai berikut:
MessageBox.Show(ws.IsMatch(Val(TextBox1.Text))) Pada bagian Button Start Over ketikkan kode sebagai
berikut:
TextBox1.Text = ""ws.Acak()
Pada bagian Page_Load ketikkan kode sebagai berikut:
ws.Acak()
Database WebService
Database WebService
Buatlah variable private beripe string, misal bernama strConnection yang berisi cara koneksi database
Database WebService
Database WebService
Database WebService
Database WebService
Database WebService
Semua obyek SqlConnection, SqlDataReader, SqlCommand, SqlDataAdapter bisa diganti OleDbConnection, OleDbDataReader, OleDbCommand, dan OleDbDataAdapter jika kita ingin menggunakan database seperti Access/Postgres/MySQL/Oracle
Untuk Web Service yang menggunakan database, jika ingin mengembalikan data berupa sejumlah record dari sebuah query/tabel, misalnya select * from tabel, maka hany ada satu tipe kembalian, yaitu obyek DataSet yang akan diterima di client dengan obyek yang sama juga dan kemudian bisa digunakan langsung untuk ditampilkan pada DataList/DataGrid