Hiện nay, sự phát triển của Internet đã khiến nhiều dịch vụ được ra đời. Trong đó tất cả đều lấy nền tảng web để xây dựng và phát triển.
WSDL (Web Services Description Language) ra đời hỗ trợ các doanh nghiệp và khách hàng. Vậy bạn đã từng biết đến hay nghe qua về thuật ngữ này chưa? WSDL là gì, có nên dùng nó hay không và dùng như thế nào?
Hãy cùng chúng tôi tìm hiểu ngay trong bài viết dưới đây.
WSDL là gì?
WSDL (Web Services Description Language – Ngôn ngữ mô tả định dạng Web) là một tệp dữ liệu ở dạng XML cho phép các ứng dụng biết dịch vụ sẽ hoạt động như thế nào. Nó được xây dựng nhằm mục đích mô tả các chức năng mà dịch vụ web đó sẽ cung cấp cho khách hàng. Đồng thời WSDL còn hỗ trợ khách hàng thông tin kết nối và tính năng tiêu biểu.
Cấu trúc của một WSDL
Vì được sử dụng nhằm mục đích mô tả để những ứng dụng khách hiểu về dịch vụ. Nhìn chung qua WSDL bạn có thể biết:
- Vị trí của dịch vụ web đó.
- Các phương pháp, chức năng được hiển thị của dịch vụ.
Nếu là lần đầu bạn tiếp xúc với loại tệp này thì sẽ cảm thấy nó khá phức tạp. Tuy nhiên nó sẽ chứa tất cả những thông tin cần thiết để sử dụng được dịch vụ. Vậy nên cấu trúc của một tệp WSDL bao gồm:
- Định nghĩa (definition)
- Tên đối tượng (targetNamespace)
- Kiểu dữ liệu (types)
- Mô tả (message)
- Porttype
- Các ràng buộc (binding)
- Dịch vụ (service)
Quan trọng nhất chính định nghĩa và thông điệp, chúng được gửi qua giao thức SOAP và mô tả trong WSDL. Hay nói một cách khác, tài liệu này sẽ cho bạn biết những thông điệp gửi qua SOAP và chấp nhận bởi dịch vụ web.
Hãy tưởng tượng đơn giản, WSDL như một lá thư có địa chỉ, vị trí cụ thể. Địa chỉ sẽ cung cấp những thông tin chi tiết về người gửi. Vậy nên nó cho người dùng biết dịch vụ web nào có chức năng mà bạn muốn.
Cấu trúc cụ thể của một tệp WSDL:
{{EJS0}}
Sơ đồ cấu trúc đầy đủ của một tệp WDSL như sau:
- definition
- Type
- message
- portType
- operation
- input
- output
- binding
- service
Với cấu trúc tệp như vậy, khách hàng sẽ biết chi tiết hơn về dịch vụ và các chức năng mà nó cung cấp.
Các phần từ trong WSDL
Khi đã biết tới ngôn ngữ mô tả định dạng Web này bạn sẽ có thể thấy được từng phần tử bên trong. Vậy ý nghĩa của nó như thế nào? Hãy cùng khám phá chi tiết hơn nhé!
Thẻ <type>
Chức năng của thẻ <type>
là xác định tất cả các kiểu dữ liệu sẽ được dùng ở trao đổi giữa ứng dụng và dịch vụ web. Điều này cực kỳ quan trọng với ứng dụng. Bởi vì nếu kiểu dữ liệu phức tạp thì họ sẽ lên phương án xử lý các kiểu dữ liệu đó. Đó không phải là các loại dữ liệu đơn giản như: float, int, bit, string,… mà là những cấu trúc lồng nhau.
Ví dụ như có một dữ liệu là KhachHang và trong đó chứa IDKhachHang kiểu int và TenKhachHang thuộc kiểu chuỗi. Chúng tạo thành một cấu trúc dữ liệu phức tạp hơn.
Thẻ <message>
Đây là thẻ xác định thông điệp mà dịch vụ web và ứng dụng khách trao đổi. Nó sẽ giải thích những hoạt động đầu vào và đầu ra mà dịch vụ làm được.
Ví dụ: thông báo việc chấp nhận thêm mới KhachHang hoặc thông báo TenKhachHang là hợp lệ.
Thẻ <portType>
<portType>
sử dụng để đóng gói mọi thông tin đầu vào và đầu ra thành phép toán logic. Vậy nên khi dùng bất cứ một hoạt động Get vào KhachHang và thông báo chấp nhận sẽ được gửi dưới dạng thông báo đầu ra.
Thẻ <binding>
Đúng như cái tên của nó – <binding>
dùng để kết nối với các cổng. Chỉ cần ứng dụng khách gọi một loại cổng cụ thể, nó sẽ lập tức truy cập vào các hoạt động của cổng đó. Nói cách khác các loại cổng như một loại giao diện vậy. Nếu ứng dụng khách muốn sử dụng một dịch vụ web họ cần dùng các thông tin ràng buộc. Điều này sẽ đảm bảo việc kết nối tới giao diện (cổng) của dịch vụ.
Thẻ <service>
<service>
là thẻ được dùng để đặt tên dịch vụ web. Khi ứng dụng khách gọi tới một dịch vụ, nó sẽ gọi bằng chính tên này. Vì vậy khách hàng có thể biết dịch vụ đó có tồn tại trên môi trường web.
Tại sao nên dùng WSDL?
Hiện nay trên môi trường internet có rất nhiều dịch vụ web, đó chính là lý do vì sao chúng ta cần dùng tới WSDL. Nó sẽ giúp các ứng dụng xây dựng bởi các ngôn ngữ lập trình khác nhau giao tiếp được với nhau. Ví dụ như bạn sẽ thấy một ứng dụng tạo từ .Net giao tiếp với một ứng dụng tạo từ Java trên dịch vụ web.
Thông thường các dịch vụ web sẽ như sau:
- Được xây dựng bằng XML. Vì bất cứ ngôn ngữ nào cũng có thể dùng lệnh để làm việc với XML. Vậy nên đây là loại ngôn ngữ đích thích hợp nhất xây dựng dịch vụ web.
- Giao tiếp với nhau qua HTTP. Hầu hết các ứng dụng dựa trên nền tảng web đều sử giao thức này.
- Tất cả các dịch vụ web tuân theo một đặc tả ngôn ngữ cụ thể. Những thông số kỹ thuật được thiết lập bởi W3C – nơi quản lý các tiêu chuẩn web.
- Có ngôn ngữ mô tả dịch vụ web WSDL.
WSDL viết thuần bằng XML vậy nên bất cứ ngôn ngữ nào cũng có thể đọc và thao tác lệnh dễ dàng. Đây là loại tệp liên kết mọi thứ lại với nhau, bạn hoàn toàn dùng được một ứng dụng .Net để giao tiếp với Java. Hay nói cách khác, WSDL là nơi các ứng dụng có thể triển khai theo đúng mục đích đã xây dựng. Nếu không có nó, việc dùng một dịch vụ web bằng ứng dụng Java là điều khó khăn.
Thông báo trong WSDL
Thông báo hay thông điệp trong tệp biểu thị bằng thẻ . Nó chính là nơi mô tả dữ liệu được trao đổi giữa ứng dụng khách và dịch vụ web. Thông thường sẽ có hai loại <message>
,một là dành cho đầu vào và một dành cho đầu ra.
- Thông báo đầu vào mô tả những tham số được dịch vụ web chấp nhận. Qua đó ứng dụng khách sẽ biết những giá trị nào gửi đi dưới dạng tham số.
- Thông báo đầu ra cho biết kết quả được cung cấp bởi dịch vụ web.
Mỗi một thông báo lại có thẻ <part>
dùng để mô tả tham số sử dụng bởi thông báo đầu vào và đầu ra.
Ví dụ về thông báo như sau: dịch vụ web cần cung cấp TenKhachHang sau khi IDKhachHang được gửi đến ở dạng tham số. Quy trình sẽ như sau:
- Thông báo đầu vào:
{{EJS1}}
Tham số đầu vào chính là IDKhachHang và tham số này có kiểu là xsd:number
, dữ liệu dạng số.
Thông báo đầu ra:
{{EJS2}}
Thông báo trả về tham số TenKhachHang được xác định bởi kiểu xsd:string, dữ liệu dạng chuỗi.
Các loại ràng buộc
Ràng buộc (cổng – binding) ở WSDL xác định hoạt động hoàn chỉnh mà dịch vụ web cung cấp. Ở ví dụ trên có thể hiểu hai thông báo đầu vào và đầu ra chính là một hoạt động hoàn chỉnh. Như đã nói, thẻ sẽ xác định hành động của dịch vụ web.
Ví dụ về ràng buộc ở hai thông báo trên:
{{EJS3}}
Trong đó:
- Tên của cổng là PortTypeName.
- Hoạt động cần thực hiện chính là GetName. Nó sẽ trả về TenKhachHang khi được cung cấp IDKhachHang ở dạng tham số đầu vào.
<input>
và<output>
xác định đầu vào đầu ra tạo nên hoạt động.
Ngoài việc sử dụng <portType>
, bạn cũng có thể dùng <binding> để xác định cách chuyển thông báo.
Ví dụ:
{{EJS4}}
Có thể hiểu ràng buộc có tên NameSoapBinding trong đó bao gồm một liên kết. Khi mà nó đã thực sự liên kết thì có thể gọi những hoạt động mà dịch vụ web. Ở đầu ra, lệnh transport: http://
có nghĩa giao thức sử dụng là HTTP.
Cách tạo tệp WSDL
Làm sao để tạo một tệp WSDL đúng nghĩa có lẽ là băn khoăn của rất nhiều người khi mới tiếp xúc. Thực tế, nó có thể được xây dựng bằng bất cứ ngôn ngữ lập trình nào. Thông thường các ứng dụng như Visual Studio hay Eclipse sẽ tự động tạo ra tệp WSDL. Dưới đây là một ví dụ về tệp này trong Visual Studio:
{{EJS5}}
Nếu nhìn qua bạn sẽ thấy tệp WSDL thật sự khá phức tạp. Tuy nhiên khi nhìn vào cấu trúc, người dùng có thể thấy các thành phần rất rõ ràng, sự liên kết và thông báo đầu vào, đầu ra.
Tổng kết
Với những thông tin trên, chúng tôi hy vọng bạn đã có thể xây dựng tệp WSDL của mình. Cấu trúc của nó tuy nhiều nhưng thực sự dễ hiểu và là mối liên kết chặt chẽ của ứng dụng khách và dịch vụ web. Việc triển khai mỗi ứng dụng cần phải nghiên cứu tệp mô tả và hoạt động của chúng thật tốt. Từ đó hướng tới mục đích, nhu cầu của khách hàng.
Nếu còn gặp bất cứ vướng mắc gì về WSDL, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.
P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.