Tìm hiểu về Webservice

1. Giới thiệu về webService

Khi bạn xây dựng và phát triển một ứng dụng phân tán với số lượng người dùng lên đến hàng trăm, hàng nghìn người ở nhiều địa điểm khác nhau, khó khăn đầu tiên mà bạn gặp phải là sự giao tiếp giữa Client và Server bị tường lửa (firewalls) và Proxy Server ngăn chặn lại.

Như các bạn biết DCOM (Distribited Component Object Model) làm việc thông qua việc gởi các thông tin dưới dạng nhị phân (binary) và chủ yếu hoạt động dựa trên giao thức TCP/IP. Thật là không dễ dàng để sử dụng DCOM trong trường hợp này.

Web Services có thể giúp bạn giải quyết vấn đề khó khăn nêu trên. Chúng ta có thể hiểu rằng Web Services (tạm dịch là dịch vụ web) là tập hợp các phương thức của một đối tượng mà các Client có thể gọi thực hiện

Dịch vụ Web (Web Service) được coi là một công nghệ mang đến cuộc cách mạng trong cách thức hoạt động của các dịch vụ B2B (Business to Business) và B2C (Business to Customer). Giá trị cơ bản của dịch vụ Web dựa trên việc cung cấp các phương thức theo chuẩn trong việc truy nhập đối với hệ thống đóng gói và hệ thống kế thừa. Các phần mềm được viết bởi những ngôn ngữ lập trình khác nhau và chạy trên những nền tảng khác nhau có thể sử dụng dịch vụ Web để chuyển đổi dữ liệu thông qua mạng Internet theo cách giao tiếp tương tự bên trong một máy tính. Tuy nhiên, công nghệ xây dựng dịch vụ Web không nhất thiết phải là các công nghệ mới, nó có thể kết hợp với các công nghệ đã có như XML, SOAP, WSDL, UDDI... Với sự phát triển và lớn mạnh của Internet, dịch vụ Web thật sự là một công nghệ

2.Các thành phần WebService

2.1 XML – eXtensible Markup Language

Là một chuẩn mở do W3C đưa ra cho cách thức mô tả dữ liệu, nó được sử dụng để định nghĩa các thành phần dữ liệu trên trang web và cho những tài liệu B2B. Về hình thức, XML hoàn toàn có cấu trúc thẻ giống như ngôn ngữ HTML nhưng HTML định nghĩa thành phần được hiển thị như thế nào thì XML lại định nghĩa những thành phần đó chứa cái gì. Với XML, các thẻ có thể được lập trình viên tự tạo ra trên mỗi trang web và được chọn là định dạng thông điệp chuẩn bởi tính phổ biến và hiệu quả mã nguồn mở.

2.2 WSDL – Web Service Description Language

WSDL định nghĩa cách mô tả dịch vụ Web theo cú pháp tổng quát của XML, bao gồm các thông tin:

  • Tên dịch vụ
  • Giao thức và kiểu mã hóa sẽ được sử dụng khi gọi các hàm của dịch vụ Web
  • Loại thông tin: thao tác, tham số, những kiểu dữ liệu (có thể là giao diện của dịch vụ Web cộng với tên cho giao diện này)

Một WSDL hợp lệ gồm hai phần: phần giao diện (mô tả giao diện và phương thức kết nối) và phần thi hành mô tả thông tin truy xuất CSDL. Cả hai phần này sẽ được lưu trong 2 tập tin XML tương ứng là tập tin giao diện dịch vụ và tập tin thi hành dịch vụ. Giao diện của một dịch vụ Web được miêu tả trong phần này đưa ra cách thức làm thế nào để giao tiếp qua dịch vụ Web. Tên, giao thức liên kết và định dạng thông điệp yêu cầu để tương tác với dịch vụ Web được đưa vào thư mục của WSDL.

2.3 UDDI - Universal Description, Discovery, and Integration

Để có thể sử dụng các dịch vụ, trước tiên client phải tìm dịch vụ, ghi nhận thông tin về cách sử dụng và biết được đối tượng nào cung cấp dịch vụ. UDDI định nghĩa một số thành phần cho biết các thông tin này, cho phép các client truy tìm và nhận những thông tin được yêu cầu khi sử dụng dịch vụ Web.

  • Cấu trúc UDDI :
    • Trang trắng – White pages: chứa thông tin liên hệ và các định dạng chính yếu của dịch vụ Web, chẳng hạn tên giao dịch, địa chỉ, thông tin nhận dạng... Những thông tin này cho phép các đối tượng khác xác định được dịch vụ.
    • Trang vàng – Yellow pages: chứa thông tin mô tả dịch vụ Web theo những loại khác nhau. Những thông tin này cho phép các đối tượng thấy được dịch vụ Web theo từng loại với nó.
    • Trang xanh – Green pages: chứa thông tin kỹ thuật mô tả các hành vi và các chức năng của dịch vụ Web.
    • Loại dịch vụ – tModel: chứa các thông tin về loại dịch vụ được sử dụng.

Những thông tin về dịch vụ Web được sử dụng và công bố lên mạng sử dụng giao thức này. Nó sẽ kíchhoạt các ứng dụng để tìm kiếm thông tin của dịch vụ Web khác nhằm xác định xem dịch vụ nào sẽ cần đến nó.

2.4 SOAP – Simple Object Access Protocol

Chúng ta đã hiểu cơ bản dịch vụ Web như thế nào nhưng vẫn còn một vấn đề khá quan trọng. Đó là làm thế nào để truy xuất dịch vụ khi đã tìm thấy? Câu trả lời là các dịch vụ Web có thể truy xuất bằng một giao thức là Simple Object Access Protocol – SOAP. Nói cách khác chúng ta có thể truy xuất đến UDDI registry bằng các lệnh gọi hoàn toàn theo định dạng của SOAP.

SOAP là một giao thức giao tiếp có cấu trúc như XML. Nó được xem là cấu trúc xương sống của các ứng dụng phân tán được xây dựng từ nhiều ngôn ngữ và các hệ điều hành khác nhau. SOAP là giao thức thay đổi các thông điệp dựa trên XML qua mạng máy tính, thông thường sử dụng giao thức HTTP.

Một client sẽ gửi thông điệp yêu cầu tới server và ngay lập tức server sẽ gửi những thông điệp trả lời tới client. Cả SMTP và HTTP đều là những giao thức ở lớp ứng dụng của SOAP nhưng HTTP được sử dụng và chấp nhận rộng rãi hơn bởi ngày nay nó có thể làm việc rất tốt với cơ sở hạ tầng Internet.

Cấu trúc một thông điệp theo dạng SOAP:

  • Phần tử gốc – envelop: phần tử bao trùm nội dung thông điệp, khai báo văn bản XML như là một thông điệp SOAP.
  • Phần tử đầu trang – header: chứa các thông tin tiêu đề cho trang, phần tử này không bắt buộc khai báo trong văn bản. Header còn có thể mang những dữ liệu chứng thực, những chứ ký số, thông tin mã hóa hay cài đặt cho các giao dịch khác.
  • Phần tử khai báo nội dung chính trong thông điệp – body, chứa các thông tin yêu cầu và thông tin được phản hồi.
  • Phần tử đưa ra các thông tin về lỗi -fault, cung cấp thông tin lỗi xảy ra trong qúa trình xử lý thông điệp.

3.Hoạt động WebService

Một ứng dụng WS bao gồm 2 thành phần: Client và Server giao tiếp với nhau qua giao thức HTTP.

  • Client gửi yêu cầu qua các lời gọi hàm thông qua HTTP Request đến Server
  • Server gửi các kết quả được thực thi các ở hàm thông qua HTTP Request

Mô hình hoạt động của ứng dụng WebService gồm 3 thành phần chính:

  • UDDI register: Công cụ giúp nhà phát triển WS công bố những thông tin về WebService của mình cho cộng đồng các nhà phát triển ứng dụng. Người dùng sẽ dựa vào các thông tin này để sử dụng WebService trong ứng dụng riêng của minh.
  • WebService: Chứa giao thức SOAP định dạng dữ liệu, tài liệu WSDL định nghĩa các hàm trong WebService, XML để xây dựng ứng dụng phân tán.
  • Applicantion Client: Ứng dụng phía Client sử dụng WebService xây dựng riêng cho mình

Cách thức hoạt động có thể mô tả như sau: Đầu tiên, Applicantion Client cần truy vấn các mẫu tin UDDI theo 1 thông tin nào đó(chẳng hạn tên loại) để xác định WebService cần tìm. Khi đã xác định được WebService cần cho ứng dụng, Client có thế lấy thông tin về địa chỉ của tài liệu WSDL của WebService này dựa trên mẫu tin UDDI. Tài liệu WSDL sẽ mô tả cách thức liên lạc với WebService, định dạng gói tin truy vấn và phản hồi. Dựa vào những thông tin này, Client có thể tạo những gói tin SOAP tương ứng để liên lạc với Service. Screenshot from 2016-01-25 21:55:29.png Hoạt động của webservice

4.Xây dựng 1 webservice đơn giản bằng C#

Ở đây tôi sử dụng Visual Studio 2013 để tạo webservice. Chọn New Project: anh1.jpg

Khi tạo mới 1 project sẽ có sẵn 1 phuơng thức là: HelloWorld Screenshot from 2016-01-25 22:03:21.png

Chạy server prokect vừa tạo ta được kết quả như sau: anh2.jpg

Khi muốn tạo một phương thức mới trong WebService ta chỉ cần thêm [WebMethod] vào trước phương thức đó. Ví dụ, tạo phương thức cộng 2 số

[WebMethod]
public int cong_hai_so(int a, int b)
{
int tong;
tong = a + b;
return tong;
}

Kết quả sau khi chạy: anh3.jpg

Nhập 2 số a,b vào form, submit Screenshot from 2016-01-25 22:08:30.png

Kết qủa trả về dưới dạng xml

5. Ưu và nhược điểm

Ưu điểm:

  • Web service cung cấp khả năng hoạt động rộng lớn với các ứng dụng phần mềm khác nhau chạy trên những nền tảng khác nhau.
  • Sử dụng các giao thức và chuẩn mở. Giao thức và định dạng dữ liệu dựa trên văn bản (text), giúp các lập trình viên dễ dàng hiểu được.
  • Nâng cao khả năng tái sử dụng.
  • Thúc đẩy đầu tư các hệ thống phần mềm đã tồn tại bằng cách cho phép các tiến trình/chức năng nghiệp vụ đóng gói trong giao diện Web service.
  • Tạo mối quan hệ tương tác lẫn nhau và mềm dẻo giữa các thành phần trong hệ thống, dễ dàng cho việc phát triển các ứng dụng phân tán.
  • Thúc đẩy hệ thống tích hợp, giảm sự phức tạp của hệ thống, hạ giá thành hoạt động, phát triển hệ thống nhanh và tương tác hiệu quả với hệ thống của các doanh nghiệp khác.

Nhược điểm:

  • Những thiệt hại lớn sẽ xảy ra vào khoảng thời gian chết của Web service, giao diện không thay đổi, có thể lỗi nếu một máy khách không được nâng cấp, thiếu các giao thức cho việc vận hành.
  • Có quá nhiều chuẩn cho Web service khiến người dùng khó nắm bắt.
  • Phải quan tâm nhiều hơn đến vấn đề an toàn và bảo mật.

Tài liệu tham khảo : link1 link2