Top Banner
1 Chuyên đề Thương mại điện tử Công nghệ Web services Tháng 11-2006 Khoa Công nghệ thông tin Bộ môn HTTT
46

Slide Web Service

Apr 22, 2015

Download

Technology

ask bills

 
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Slide Web Service

1

Chuyên đề Thương mại điện tử

Công nghệ Web services

Tháng 11-2006

Khoa Công nghệ thông tin

Bộ môn HTTT

Page 2: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 2

Nội dung trình bày

Các ứng dụng phân tán

Kiến trúc hướng dịch vụ

Web service

Lập trình Web service

Page 3: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 3

Các ứng dụng phân tánDistributed Application

Máy tính

Máy tính

Dữ liệu

Ứng dụngphân tánỨng dụngphân tán

Dữ liệu

Page 4: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 4

Kiến trúc hướng dịch vụService-Oriented Architecture-SOA

Service ConsumerService Consumer

Publish Find

BindService ProviderService Provider

Service BrokerService Broker

Page 5: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 5

Web Service

Web Service là gì ?

Nền tảng của web service

Kiến trúc của web service

Mô hình của ứng dụng với Web service

Page 6: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 6

Web service là gì

InternetInternet

Firewall

Firewall

Firewall

Web ServiceWeb Service Web ServiceWeb Service

Web ServiceWeb ServiceClientClient

Là một tập các phương thức được gọi thực hiện từ xa thông qua một địa chỉ URL

Là một tập các phương thức được gọi thực hiện từ xa thông qua một địa chỉ URL

11

Sử dụng để tạo các ứng dụng phân tánSử dụng để tạo các ứng dụng phân tán22

Page 7: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 7

Đặc điểm

Không phụ thuộc vào ngôn ngữ lập trìnhKhông phụ thuộc vào ngôn ngữ lập trình11

Truy cập bất cứ ứng dụng nàoTruy cập bất cứ ứng dụng nào22

Hỗ trợ thao tác giữa các thành phần không đồng nhấtHỗ trợ thao tác giữa các thành phần không đồng nhất33

Chi phí phát triển thấpChi phí phát triển thấp44

Dễ bảo trìDễ bảo trì55

Page 8: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 8

Kiến trúc của Web Service

Publish Find

Bind

InternetInternet

Web Service Provider

Web Service Provider

UDDI (Web Service Broker)

UDDI (Web Service Broker)

Web Service Consumer

Web Service Consumer

Page 9: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 9

Kiến trúc của Web Service

UDDIUDDI

Any ClientAny Client

SOAP SOAP

SOAP

IISIIS

Web ServiceWeb Service

Page 10: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 10

Yêu cầuYêu cầu

Web service provider

Hỗ trợ 1 protocol listennerHỗ trợ 1 protocol listenner11

Có các cơ chế bảo mậtCó các cơ chế bảo mật22

Cung cấp đúng service mà consumer yêu cầuCung cấp đúng service mà consumer yêu cầu33

Web ServerWeb Server11

Cung cấp Web serviceCung cấp Web service22 IISIIS

Page 11: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 11

Web service consumer

Sử dụng Web service do WS Provider cung cấp để xây dựng ứng dụng

Sử dụng Web service do WS Provider cung cấp để xây dựng ứng dụng

Page 12: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 12

Web service broker UDDIUDDI

Là môi giới giữa consumer và providerLà môi giới giữa consumer và provider11

Tương tác với provider : để lấy các thông tin về web serviceTương tác với provider : để lấy các thông tin về web service22

Tương tác với consumer :cung cấp cho consumer địa chỉ các Web serviceTương tác với consumer :cung cấp cho consumer địa chỉ các Web service33

Sử dụng UDDI registries (Universal Description, Discovery and Integration)Sử dụng UDDI registries (Universal Description, Discovery and Integration)44

Page 13: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 13

Mô hình tương tác giữa các thành phần

22

1155

Web service developer builds and deploys a pricing Web serviceWeb service developer builds and deploys a pricing Web service11

Web service developer registers and categorizes the Web serviceWeb service developer registers and categorizes the Web service22

Web service consumer queries UDDI for “pricing” servicesWeb service consumer queries UDDI for “pricing” services33

Web service consumer determines the most appropriate “pricing” serviceWeb service consumer determines the most appropriate “pricing” service44

Web service developer builds a solution that directly consumes the Web service dataWeb service developer builds a solution that directly consumes the Web service data55

Pricing Web ServicePricing Web Service

UDDI ServicesUDDI Services 3344

Page 14: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 14

Nền tảng của Web Service

Web Service

XMLSOAPHTTP

Page 15: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 15

HTTP – Hyper text transfer protocol

POST /TheStockExchange/Trading/GetStockPrice.asp HTTP/1.1Host: localhostContent-Type: application/x-www-form-urlencodedContent-Length: 11

Symbol=MSFT

POST /TheStockExchange/Trading/GetStockPrice.asp HTTP/1.1Host: localhostContent-Type: application/x-www-form-urlencodedContent-Length: 11

Symbol=MSFT

HTTP RequestHTTP Request

HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: 75

<?xml version="1.0" encoding="utf-8"?><stock symbol="MSFT" Price="71.50" />

HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Content-Length: 75

<?xml version="1.0" encoding="utf-8"?><stock symbol="MSFT" Price="71.50" />

HTTP ResponseHTTP Response

Page 16: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 16

XML – Extend Markup Language

Sử dụng để mô tả Web service interfaceSử dụng để mô tả Web service interface11

SOAP Message là một tài liệu XMLSOAP Message là một tài liệu XML22

Sử dụng để serialize các đối tượng thành một tài liệu XML (System.Xml.Serialization)Sử dụng để serialize các đối tượng thành một tài liệu XML (System.Xml.Serialization)33

Page 17: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 17

SOAP(1)

XML-Based protocolXML-Based protocol33

Submitted to W3CSubmitted to W3C55

Protocol for message-based communicationProtocol for message-based communication22

An envelope for handling extensibility and modularity An envelope for handling extensibility and modularity

An encoding mechanism for representing types within an envelope An encoding mechanism for representing types within an envelope

SOAP ≈ HTTP + XMLSOAP ≈ HTTP + XML44

SOAP – Simple Object Access ProtocolSOAP – Simple Object Access Protocol11

Page 18: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 18

SOAP (2)

SOAP Request : HTTP POST RequestSOAP Request : HTTP POST Request66

POST /WebCalculator/Calculator.asmx HTTP/1.1Content-Type: text/xmlSOAPAction: “http://tempuri.org/Add”Content-Length: 386

<?xml version=“1.0”?><soap:Envelope ...> ...</soap:Envelope>

Page 19: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 19

SOAP(3) - Message Structure

SOAP Message

SOAP Envelope

SOAP Header

SOAP Body

Message Name & Data

Headers

Headers

XML-encoded SOAP message name & data

<Body> contains SOAP message name

Individual headers

<Header> encloses headers

<Envelope> encloses payload

Protocol binding headers

The complete SOAP message

Page 20: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 20

SOAP(4) - Example of a SOAP Request

POST /StockQuote HTTP/1.1Host: www.stockquoteserver.comContent-Type: text/xml; charset="utf-8"Content-Length: nnnnSOAPAction: "Some-URI“

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV: encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DIS</symbol> </m:GetLastTradePrice> </SOAP-ENV:Body></SOAP-ENV:Envelope>

Page 21: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 21

SOAP(5) - Example of a SOAP Response

HTTP/1.1 200 OKContent-Type: text/xml; charset="utf-8"Content-Length: nnnn

<SOAP-ENV:Envelope xmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV: encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body> <m:GetLastTradePriceResponse xmlns:m="Some-URI"> <Price>34.5</Price> </m:GetLastTradePriceResponse> </SOAP-ENV:Body></SOAP-ENV:Envelope>

Page 22: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 22

Lập trình Web service bằng VS.NET 2003

Web service programming - provider sideWeb service programming - provider side11

Web service programming - consumer sideWeb service programming - consumer side22

Page 23: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 23

Lập trình Web service (1)

Loại Project : ASP.NET Web ServiceLoại Project : ASP.NET Web Service11

Các name space thường dùngCác name space thường dùng22SystemSystem.DataSystem.WebSystem.Web.WebservicesSystem.Xml

SystemSystem.DataSystem.WebSystem.Web.WebservicesSystem.Xml

Các thành phầnCác thành phần33

File *.asmxFile global.asaxFile web.configThư mục Bin

File *.asmxFile global.asaxFile web.configThư mục Bin

Page 24: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 24

Lập trình Web service (2)

Khai báo Web service methodKhai báo Web service method44

Thêm chỉ thị [Web Method]Thêm chỉ thị [Web Method]

[WebMethod]public int Sum(int a, int b) {

return a + b;}

[WebMethod]public int Sum(int a, int b) {

return a + b;}

Ví dụVí dụ

Page 25: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 25

Lập trình Web service (3)

BufferResponseBufferResponse

CacheDurationCacheDuration

DescriptionDescription

EnableSessionEnableSession

TransactionOptionTransactionOption

Các thuộc tính của [WebMethod]Các thuộc tính của [WebMethod]55

Page 26: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 26

Lập trình Web service (3)

[WebMethod(BufferResponse=false)]public Transactions GetTransactionHistory(){

//implementation code}

[WebMethod(BufferResponse=false)]public Transactions GetTransactionHistory(){

//implementation code}

[WebMethod (Description=“This method using for converting ..” )]public double ConvertTemperature(double dFahrenheit){

return ((dFahrenheit - 32) * 5) / 9;}

[WebMethod (Description=“This method using for converting ..” )]public double ConvertTemperature(double dFahrenheit){

return ((dFahrenheit - 32) * 5) / 9;}

Ví dụVí dụ

Page 27: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 27

XmlElementXmlElement

XmlAttributeXmlAttribute

XmlRootXmlRoot

Lập trình Web service (4)

XML SerializationXML Serialization55

Dùng để xác định cấu trúc tài liệu XML mong muốn để biểu diễn đối tượng của một lớpDùng để xác định cấu trúc tài liệu XML mong muốn để biểu diễn đối tượng của một lớp

XmlArrayItemXmlArrayItem

XmlArrayXmlArray

Namespace : System.Xml.SerializationNamespace : System.Xml.Serialization

Page 28: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 28

Lập trình Web service (5)

[XmlRoot("account")]public class Acct{

[XmlElement("description")] public string Description;[XmlElement("number")] public string Number;[XmlElement("type")] public string Type;[XmlElement("balance")] public decimal Balance;[XmlAttribute("status")] public string Status;

}

[XmlRoot("account")]public class Acct{

[XmlElement("description")] public string Description;[XmlElement("number")] public string Number;[XmlElement("type")] public string Type;[XmlElement("balance")] public decimal Balance;[XmlAttribute("status")] public string Status;

}

Ví dụ 1Ví dụ 1

<account status=“123”> <description>Hello</description> <number>10 </number> <type>C</type><account>

<account status=“123”> <description>Hello</description> <number>10 </number> <type>C</type><account>

Page 29: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 29

Lập trình Web service (6)

…[return:XmlArray("AccountList")][return:XmlArrayItem("Account")]public Acct[] GetAllAccounts()…

…[return:XmlArray("AccountList")][return:XmlArrayItem("Account")]public Acct[] GetAllAccounts()…

<AccountList> <account> ……… <account> <account> …. </account><AccountList>

<AccountList> <account> ……… <account> <account> …. </account><AccountList>

Ví dụ 2Ví dụ 2

Page 30: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 30

Lập trình Web service (7)

…[return:XmlArrayItem(ElementName="savingsAcct", Type=typeof(SavingsAcct))][return:XmlArrayItem(ElementName="creditCardAcct", Type=typeof(CreditCardAcct))][WebMethod]public Acct[] GetAllAccounts(){...

…[return:XmlArrayItem(ElementName="savingsAcct", Type=typeof(SavingsAcct))][return:XmlArrayItem(ElementName="creditCardAcct", Type=typeof(CreditCardAcct))][WebMethod]public Acct[] GetAllAccounts(){...

<AccountList>…<SavingAcct></SavingActt>…<CreditCardAcct></CreditCardActt>…

</AccountList>

<AccountList>…<SavingAcct></SavingActt>…<CreditCardAcct></CreditCardActt>…

</AccountList>

Ví dụ 3Ví dụ 3

Page 31: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 31

Lập trình Web service (8)

Input and output parameter (in, ref,…)Input and output parameter (in, ref,…)

Variable length parameter list (homogeneous, heterogeneous )Variable length parameter list (homogeneous, heterogeneous )

Simple data typesSimple data types

Kiểu dữ liệu trong web service methodKiểu dữ liệu trong web service method66

Classes and structuresClasses and structures

Array, CollectionsArray, Collections

DataSetsDataSets

Complex data typeComplex data type

Page 32: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 32

Lập trình Web service – provider side(9)

Trường hợp lưu ýTrường hợp lưu ý

Nếu tham số web service method là 1 mảng các đối tượng có kiểu không rõ ràngNếu tham số web service method là 1 mảng các đối tượng có kiểu không rõ ràng

Phải khai báo tường minh tất cả các kiểu dữ liệu có thể có trong mảng Phải khai báo tường minh tất cả các kiểu dữ liệu có thể có trong mảng

Sử dụng :XmlInclude Name space System.Xml.Serialization

Sử dụng :XmlInclude Name space System.Xml.Serialization

Page 33: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 33

Lập trình Web service – provider side(10)

Ví dụVí dụ

public class Acct{ public string Description; public string Number; public string Type; public decimal Balance; public string Status;}public class SavingsAcct : Acct{ public decimal MinimumBalance;}public class CreditCardAcct : Acct{ public int PayPeriod;}

public class Acct{ public string Description; public string Number; public string Type; public decimal Balance; public string Status;}public class SavingsAcct : Acct{ public decimal MinimumBalance;}public class CreditCardAcct : Acct{ public int PayPeriod;}

[WebMethod][XmlInclude(typeof(CreditCardAcct))][XmlInclude(typeof(SavingsAcct))][return:XmlArray("AccountList")][return:XmlArrayItem("Account")]public Acct[] GetAllAccounts(){SavingsAcct a = new SavingsAcct();CreditCardAcct cc = new CreditCardAcct();// populate the accountsAcct [] sa = new Acct[2];sa[0] = a;sa[1] = cc;return sa;}

[WebMethod][XmlInclude(typeof(CreditCardAcct))][XmlInclude(typeof(SavingsAcct))][return:XmlArray("AccountList")][return:XmlArrayItem("Account")]public Acct[] GetAllAccounts(){SavingsAcct a = new SavingsAcct();CreditCardAcct cc = new CreditCardAcct();// populate the accountsAcct [] sa = new Acct[2];sa[0] = a;sa[1] = cc;return sa;}

Page 34: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 34

Triển khai Web service

Web Service Files Needed Remove

.sln, .vbproj, .csproj, .vsdisco, .webinfo

.resx

.vb, .cs

.xsd

\Web References folder and files

\bin directory and .dll(s)

.asmx

Web.config

Global.asax

.xml

Tự chép các file cần thiết lên Web serverTự chép các file cần thiết lên Web server11

Sử dụng Windows Installer FilesTạo 1 web setup project trong VS.NET

Sử dụng Windows Installer FilesTạo 1 web setup project trong VS.NET

22

Page 35: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 35

Web Service Consumer

WSDL DocumentsWSDL Documents11

Proxy classProxy class22

Consuming Web service in VS.NET 2003 Consuming Web service in VS.NET 2003 33

Page 36: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 36

WSDL Documents

XML schema : Mô tả giao diện của web serviceXML schema : Mô tả giao diện của web service22

Web Service Description LanguageWeb Service Description Language11

Sử dụng đề phát sinh proxy classSử dụng đề phát sinh proxy class33

Xem WSDL Document của 1 web servicehttp://localhost/TestService/service.asmx?wsdlXem WSDL Document của 1 web servicehttp://localhost/TestService/service.asmx?wsdl44

Page 37: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 37

Proxy class

Được phát sinh từ WSDL DocumentĐược phát sinh từ WSDL Document22

Được sử đụng đề giao tiếp với Web serviceĐược sử đụng đề giao tiếp với Web service33

Proxy : Ủy nhiệmProxy : Ủy nhiệm11

Page 38: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 38

Sử dụng Web service trong .NET

Tạo lớp proxy để giao tiếp với web serviceTạo lớp proxy để giao tiếp với web service11

Sử dụng lớp proxy để gọi các phương thức của web serviceSử dụng lớp proxy để gọi các phương thức của web service22

Sử dụng wsdl.exeSử dụng wsdl.exe

Sử dụng VS.NetSử dụng VS.Net

Gọi bình thường như các phương thức khácGọi bình thường như các phương thức khác

Add Web References …Add Web References …

wsdl [options] {URL | Path}wsdl [options] {URL | Path}

wsdl http://www.woodgrovebank.com/services/bank.asmx?wsdlwsdl http://www.woodgrovebank.com/services/bank.asmx?wsdl

Page 39: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 39

WSDL Document

Page 40: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 40

Proxy Class

Page 41: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 41

SOAP Request and Response

Page 42: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 42

HTTP Request and Response

Page 43: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 43

Web service and State Management

ASP.NET Web service Application Web ApplicatonASP.NET Web service Application Web Applicaton11

Web service Application : StatelessWeb service Application : Stateless22

Sử dụng đối tượng Application và Session đề quản lý trạng thái của web serviceSử dụng đối tượng Application và Session đề quản lý trạng thái của web service

Page 44: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 44

Ứng dụng của Web Services

WS là một tập hợp các chức năng được thực thi qua môi trường mạng, được các ứng dụng khác sử dụngWS là một tập hợp các chức năng được thực thi qua môi trường mạng, được các ứng dụng khác sử dụng11

Một WS có thể kết hợp với các WS khác để đưa ra tính năng cao hơnMột WS có thể kết hợp với các WS khác để đưa ra tính năng cao hơn22

Mô hình ứng dụng trong tương lai sẽ là sự kết hợp giữa các serviceMô hình ứng dụng trong tương lai sẽ là sự kết hợp giữa các service33

……44

Page 45: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 45

Demo

Page 46: Slide Web Service

11/2006Môn: Chuyên đề TMĐT – Bộ môn HTTT 46

Hỏi và đáp