1. Trang chủ
  2. » Công Nghệ Thông Tin

WebService – cơ bản về SOAP, WSDL và ASP NET web service hoclaptrinhweb

4 418 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 248,8 KB

Nội dung

Web Serivce là một công nghệ cho phép client truy xuất để thực hiện mọi tác vụ như một Web Application. Về bản chất, Web service dựa trên XML và HTTP, trong đó XML làm nhiệm vụ mã hóa và giải mã dữ liệu và dùng SOAP để truyền tải. Web Service không phụ thuộc vào platform nào, do đó bạn có thể dùng Web Service để truyền tải dữ liệu giữa các ứng dụng hay giữa các platform.

Trang 1

Web Serivce là một công nghệ cho phép client truy xuất để thực hiện mọi tác vụ như một Web Application Về bản chất, Web service dựa trên XML

và HTTP, trong đó XML làm nhiệm vụ mã hóa và giải mã dữ liệu và dùng SOAP để truyền tải Web Service không phụ thuộc vào platform nào, do đó bạn có thể dùng Web Service để truyền tải dữ liệu giữa các ứng dụng hay giữa các platform.

Sơ đồ tương tác giữa User và Web Service:

SOAP – Simple Object Access Protocol

SOAP – Một tiêu chuẩn của W3C, là giao thức sử dụng XML để định nghĩa dữ liệu dạng thuần văn bản (plain text) thông qua HTTP SOAP là cách mà Web Service sử dụng để truyền tải dữ liệu Vì dựa trên XML nên SOAP là một giao thức không phụ thuộc platform cũng như bất kì ngôn ngữ lập trình nào

Một thông điệp SOAP được chia thành hai phần là header và body Phần header chỉ ra địa chỉ Web Service, host, Content-Type, Content-Length tương tự như một thông điệp HTTP

Khi tạo một dự án Web Service, mặc định Web Visual Develop sẽ tạo cho bạn phương thức HelloWorld() sau:

Một HTTP Request sẽ có dạng sau:

POST /MathService.asmx/HelloWorld HTTP/1.1

Host: localhost

Content-Type: application/x-www-form-urlencoded

Content-Length: length

Đối với SOAP (v1.2)

-Request:

Trong phần của đoạn SOAP request trên, thẻ được dùng để các phần tử con tương ứng với các dữ liệu mà phương thức HelloWorld yêu cầu để làm tham số Bởi vì phương thức HelloWorld không yêu cầu bất kì tham số nào, nên thẻ này cũng không có bất kì phần tử con nào

-Response:

Phương thức HelloWorld() của WebService trả về dữ liệu có dạng string, và bạn có thể thấy rõ điều này trong thẻ

Nếu cần tìm hiểu thêm về SOAP, bạn có thể tham khảo các bài hướng dẫn trên W3schools:

http://www.w3schools.com/soap/default.asp

1

2

3

4

public string HelloWorld()

{

return"Hello World";

}

source code

1

2

3

4

5

6

7

8

9

10

11

POST /MathService.asmx HTTP/1.1

Host: localhost

Content-Type: application/soap+xml; charset=utf-8

Content-Length: length

<?xmlversion="1.0"encoding="utf-8"?>

<soap12:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://www.w3.org/2 <soap12:Body>

<HelloWorldxmlns="http://tempuri.org/" />

</soap12:Body>

</soap12:Envelope>

source code

1

2

3

4

5

6

7

8

9

10

11

12

HTTP/1.1 200 OK

Content-Type: application/soap+xml; charset=utf-8

Content-Length: length

<?xmlversion="1.0"encoding="utf-8"?>

<soap12:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap12="http://www.w3.org/2 <soap12:Body>

<HelloWorldResponsexmlns="http://tempuri.org/">

<HelloWorldResult>string</HelloWorldResult>

</HelloWorldResponse>

</soap12:Body>

</soap12:Envelope>

?

?

?

Trang 2

WSDL – Web Services Description Language

WSDL là ngôn ngữ được sử dụng để mô tả đầy đủ về Web Service theo chuẩn XML như các phương thức, kiểu dữ liệu,… dựa trên XML schema

Ví dụ một đoạn định nghĩa kiểu dữ liệu của WSDL cho phương thức HelloWorld() trên:

Trong đó, phần định nghĩa các kiểu dữ liệu dùng cho request được đặt tên dựa theo tên phương thức “HelloWorld”:

Theo sau đó là phần định nghĩa các kiểu dữ liệu dùng để response được đặt tên “HelloWorldResponse”:

Việc đặt tên này cần thiết để sử dụng trong phần định nghĩa message phía sau Tham khảo hướng dẫn về XML Schema và WSDL tại các link sau:

http://www.w3schools.com/wsdl/default.asp

http://www.w3schools.com/schema/

Tạo một ASP.NET Web Service đơn giản

Trong Net, bạn tạo ra một Web Service ra bằng cách tạo một subclass của lớp System.Web.Services.WebService, sau đó định nghĩa các phương thức có thể được triệu gọi từ client Các phương thức này phải được đánh dấu với attribute [WebMethod]

Khi tạo một dự án mới, nếu bạn đặt phiên bản Net sử dụng là 4, template Web Service sẽ không tồn tại do Microsoft nghĩ rằng template đó quá đơn giản Vì vậy muốn tạo

một project Web Service, bạn phải chuyển phiên bản Net sang 3.5 Ở đây tôi vẫn sử dụng phiên bản Net 4 và tạo một project ASP.NET Empty Web Application với tên

là Y2FirstWebService.

Tiếp đó bạn thêm item Web Service (phím tắt Ctrl + Shift + A để mở cửa sổ Add New Item) với tên là HelloService.asmx.

source code

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

[…]

<wsdl:types>

<s:schemaelementFormDefault="qualified"targetNamespace="http://tempuri.org/">

<s:elementname="HelloWorld">

<s:complexType />

</s:element>

<s:elementname="HelloWorldResponse">

<s:complexType>

<s:sequence>

<s:elementminOccurs="0"maxOccurs="1"name="HelloWorldResult"type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

</s:schema>

</wsdl:types>

[…]

source code

1

2

3

<s:elementname="HelloWorld">

<s:complexType />

</s:element>

source code

1

2

3

4

5

6

7

<s:elementname="HelloWorldResponse">

<s:complexType>

<s:sequence>

<s:elementminOccurs="0"maxOccurs="1"name="HelloWorldResult"type="s:string" />

</s:sequence>

</s:complexType>

</s:element>

?

?

?

Trang 3

File code-behind HelloService.asmx.cs khi được tạo ra đã chứa sẵn phương thức HelloWorld().

HelloService.asmx:

<%@ WebService Language=”C#” CodeBehind=”HelloService.asmx.cs” %>

HelloService.asmx.cs (v1):

Bạn có thể nhấn F5 chạy thử, trình duyệt sẽ mở ra và hiển thị đường link với nội dung HelloWorld Đây chính là tên của phương thức của lớp HelloService trên Nhấn vào link này, bạn được đưa đến một trang dùng để test phương thức HelloWorld

Note: Bạn có thể xem nội dung WSDL được tạo ra để mô tả cho Web Service này bằng cách bằng cách nhấn vào link Service Description với địa chỉ có dạng (chạy trên

localhost, port của bạn có thể khác): http://localhost:1107/MathService.asmx?WSDL

Bên dưới bạn có thể thấy thông điệp SOAP request và response sẽ được sử dụng để giao tiếp giữa client với Web Service

Nhấn nút Invoke, trình duyệt sẽ mở ra một trang mới với nội dung theo định dạng XML, kết quả thực sự trả về của phương thức là nội dung nằm trong thẻ :

http://tempuri.org/“>Hello World

Bây giờ ta thêm một phương thức mới với tên Hello, đồng thời tạo thêm class Person để làm kiểu trả về cho phương thức Hello() này

HelloService.asmx.cs (v2):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

namespace Y2FirstWebService

{

/// <summary>

/// Summary description for MathService

/// </summary>

[WebService(Namespace = "http://tempuri.org/")]

[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

[System.ComponentModel.ToolboxItem(false)]

// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line

// [System.Web.Script.Services.ScriptService]

public class HelloService : System.Web.Services.WebService

{

[WebMethod]

public string HelloWorld()

{

return"Hello World";

}

}

}

?

Ngày đăng: 31/10/2016, 00:13

w