Hướng dẫn về WSDL: Ngôn ngữ mô tả dịch vụ web với ví dụ

Mục lục:

Anonim

WSDL là gì?

Ngôn ngữ Mô tả Dịch vụ Web (WSDL) là một tệp dựa trên XML về cơ bản cho ứng dụng khách biết dịch vụ web hoạt động như thế nào. Tệp WSDL được sử dụng để mô tả tóm tắt chức năng của dịch vụ web và cung cấp cho khách hàng tất cả thông tin cần thiết để kết nối với dịch vụ web và sử dụng tất cả các chức năng được cung cấp bởi dịch vụ web.

Trong hướng dẫn này, chúng ta sẽ tập trung vào điểm cuối cùng là phần quan trọng nhất của các dịch vụ web và đó là WSDL hoặc ngôn ngữ mô tả các dịch vụ Web.

Tệp WSDL được sử dụng để mô tả tóm tắt chức năng của dịch vụ web và cung cấp cho khách hàng tất cả thông tin cần thiết để kết nối với dịch vụ web và sử dụng tất cả các chức năng được cung cấp bởi dịch vụ web.

Trong hướng dẫn này, bạn sẽ học-

  • Cấu trúc của một tài liệu WSDL
  • Phần tử WSDL
  • Tại sao WSDL
  • Phần thông báo WSDL
  • Loại cổng ràng buộc
  • Tạo tệp WSDL
  • Xuất bản ví dụ về dịch vụ web

Cấu trúc của một tài liệu WSDL

Tài liệu WSDL được sử dụng để mô tả một dịch vụ web. Mô tả này là bắt buộc, để các ứng dụng khách có thể hiểu những gì dịch vụ web thực sự làm.

  • Tệp WSDL chứa vị trí của dịch vụ web và
  • Các phương pháp được hiển thị bởi dịch vụ web.

Bản thân tệp WSDL có thể trông rất phức tạp đối với bất kỳ người dùng nào, nhưng nó chứa tất cả các thông tin cần thiết mà bất kỳ ứng dụng khách nào cũng yêu cầu để sử dụng dịch vụ web liên quan.

Dưới đây là cấu trúc chung của tệp WSDL

  • Định nghĩa
  • TargetNamespace
  • Loại dữ liệu
  • Tin nhắn
  • Porttype
  • Ràng buộc
  • dịch vụ

Một điều quan trọng cần lưu ý ở đây là định nghĩa thông báo, là những gì được truyền bởi giao thức SOAP thực sự được định nghĩa trong tài liệu WSDL.

Tài liệu WSDL thực sự cho một ứng dụng khách biết các loại thông điệp SOAP được gửi và chấp nhận bởi dịch vụ Web.

Nói cách khác, WSDL giống như một tấm bưu thiếp có địa chỉ của một vị trí cụ thể. Địa chỉ cung cấp thông tin chi tiết của người gửi bưu thiếp. Do đó, theo cách tương tự, tệp WSDL là bưu thiếp, có địa chỉ của dịch vụ web có thể cung cấp tất cả các chức năng mà khách hàng muốn.

Dưới đây là sơ đồ cấu trúc của tệp WSDL

Cấu trúc của một WSDL

Phần tử WSDL

Tệp WSDL chứa các phần chính sau

  1. Thẻ được sử dụng để xác định tất cả các kiểu dữ liệu phức tạp, sẽ được sử dụng trong thông báo trao đổi giữa ứng dụng khách và dịch vụ web. Đây là một khía cạnh quan trọng của ứng dụng khách, bởi vì nếu dịch vụ web hoạt động với kiểu dữ liệu phức tạp, thì ứng dụng khách phải biết cách xử lý kiểu dữ liệu phức tạp. Các kiểu dữ liệu như float, số và chuỗi đều là kiểu dữ liệu đơn giản, nhưng có thể có các kiểu dữ liệu có cấu trúc do dịch vụ web cung cấp.

    Ví dụ: có thể có một kiểu dữ liệu được gọi là EmployeeDataType có thể có 2 phần tử được gọi là "EmployeeName" thuộc kiểu chuỗi và "EmployeeID" thuộc kiểu số hoặc số nguyên. Chúng cùng nhau tạo thành một cấu trúc dữ liệu mà sau đó trở thành một kiểu dữ liệu phức tạp.

  2. Thẻ được sử dụng để xác định thông báo được trao đổi giữa ứng dụng khách và máy chủ web. Các thông báo này sẽ giải thích các hoạt động đầu vào và đầu ra có thể được thực hiện bởi dịch vụ web. Ví dụ về thông báo có thể là thông báo chấp nhận EmployeeID của một nhân viên và thông báo đầu ra có thể là tên của nhân viên dựa trên EmpoyeeID được cung cấp.

  3. Thẻ được sử dụng để đóng gói mọi thông báo đầu vào và đầu ra thành một phép toán logic. Vì vậy, có thể có một hoạt động được gọi là "GetEprisee" kết hợp thông báo đầu vào chấp nhận EmployeeID từ ứng dụng khách và sau đó gửi EmployeeName dưới dạng thông báo đầu ra.

  4. Thẻ được sử dụng để liên kết hoạt động với loại cổng cụ thể. Điều này để khi ứng dụng khách gọi loại cổng có liên quan, sau đó nó sẽ có thể truy cập các hoạt động được liên kết với loại cổng này. Các loại cổng cũng giống như giao diện. Vì vậy, nếu một ứng dụng khách cần sử dụng một dịch vụ web, họ cần sử dụng thông tin ràng buộc để đảm bảo rằng họ có thể kết nối với giao diện được cung cấp bởi dịch vụ web đó.

  5. Thẻ là tên được đặt cho chính dịch vụ web. Ban đầu, khi một ứng dụng khách thực hiện cuộc gọi đến dịch vụ web, nó sẽ thực hiện bằng cách gọi tên của dịch vụ web. Ví dụ: một dịch vụ web có thể được đặt tại một địa chỉ như http: //localhost/Guru99/Tutorial.asmx . Thẻ dịch vụ sẽ thực sự có URL được định nghĩa là http: //localhost/Guru99/Tutorial.asmx , thực sự sẽ cho ứng dụng khách biết rằng có một dịch vụ web có sẵn tại vị trí này.

Tại sao WSDL

Dịch vụ web là một thành phần quan trọng trong việc xây dựng các ứng dụng web hiện đại. Mục đích chính của chúng là cho phép nhiều ứng dụng được xây dựng trên các ngôn ngữ lập trình khác nhau giao tiếp với nhau. Ví dụ, chúng ta có thể có một ứng dụng web .Net nói chuyện với một ứng dụng Java thông qua một dịch vụ Web.

Một dịch vụ web có các tính năng chính sau đây

  • Nó được xây dựng bằng ngôn ngữ lập trình XML. Hầu như tất cả các công nghệ hiện đại như .Net và Java đều có các lệnh tương ứng có khả năng làm việc với XML. Do đó, XML được coi là ngôn ngữ thích hợp nhất để xây dựng các dịch vụ web.
  • Các dịch vụ web giao tiếp qua HTTP. HTTP là một giao thức được sử dụng bởi tất cả các ứng dụng dựa trên web. Do đó, nó chỉ có ý nghĩa khi đảm bảo rằng các dịch vụ Web cũng có khả năng hoạt động trên giao thức HTTP.
  • Các dịch vụ web tuân theo một đặc tả ngôn ngữ cụ thể. Thông số kỹ thuật này được đặt ra bởi W3C, cơ quan quản lý tất cả các tiêu chuẩn web.
  • Các dịch vụ web có ngôn ngữ mô tả được gọi là WSDL, được sử dụng để mô tả dịch vụ web.

Tệp WSDL được viết bằng XML cũ thuần túy. Lý do nó ở dạng XML là để tệp có thể được đọc bằng bất kỳ ngôn ngữ lập trình nào.

Vì vậy, nếu ứng dụng khách được viết bằng .Net, nó sẽ hiểu tệp XML. Tương tự, nếu ứng dụng khách được viết bằng ngôn ngữ lập trình Java thì nó cũng có thể thông dịch tệp WSDL.

Tệp WSDL là thứ liên kết mọi thứ lại với nhau. Từ sơ đồ trên, bạn có thể thấy rằng bạn có thể tạo một dịch vụ web bằng ngôn ngữ .Net.

Vì vậy, đây là nơi dịch vụ được triển khai. Nếu bạn không có tệp WSDL và muốn một lớp Java sử dụng dịch vụ web, bạn sẽ cần rất nhiều nỗ lực viết mã để đạt được điều này.

Nhưng bây giờ với tệp WSDL ở dạng XML, có thể được hiểu bởi bất kỳ ngôn ngữ lập trình nào, giờ đây bạn có thể dễ dàng có một lớp Java sử dụng dịch vụ web .Net. Do đó, số lượng nỗ lực mã hóa được giảm đáng kể.

Phần thông báo WSDL

WSDL bao gồm một phần được gọi là "thông báo" được biểu thị bằng phần tử .

Phần tử này về cơ bản được sử dụng để mô tả dữ liệu được trao đổi giữa dịch vụ web và ứng dụng khách.

Mỗi dịch vụ web sẽ luôn có 2 loại thông báo,

  • Một dành cho đầu vào của dịch vụ web và phần kia dành cho đầu ra của dịch vụ web.
  • Đầu vào được sử dụng để mô tả các tham số được dịch vụ web chấp nhận. Đây là một khía cạnh quan trọng của ứng dụng khách để nó biết các giá trị sẽ được gửi dưới dạng tham số cho dịch vụ web.
  • Loại thông báo khác là thông báo đầu ra cho biết kết quả nào được cung cấp bởi dịch vụ web.

Đến lượt mình, mỗi thông báo sẽ có một phần tử được sử dụng để mô tả tham số được sử dụng bởi thông báo đầu vào và đầu ra.

Dưới đây là một ví dụ đơn giản về thông báo cho một dịch vụ web trông như thế nào. Chức năng của dịch vụ web là cung cấp tên của "Hướng dẫn" sau khi "ID Hướng dẫn" được gửi dưới dạng tham số cho dịch vụ web.

  1. Như chúng ta có thể thấy dịch vụ web có 2 thông báo, một cho đầu vào và một cho đầu ra.
  2. Thông báo đầu vào được gọi là TutorialNameRequest có một tham số được gọi là TutorialID. Tham số này thuộc kiểu số được chỉ định bởi kiểu xsd: number
  3. Thông báo đầu ra được gọi là TutorialNameResponse có một tham số được gọi là TutorialName. Tham số này thuộc kiểu chuỗi được chỉ định bởi kiểu xsd: string

Loại cổng ràng buộc

Các cổng được sử dụng trong WSDL để xác định một hoạt động hoàn chỉnh được cung cấp bởi dịch vụ web.

Trong chủ đề trước, chúng ta đã thấy rằng dịch vụ web của chúng tôi cung cấp 2 thông báo, một cho đầu vào có tên "TutorialNameRequest" và một cho đầu ra có tên "TutorialNameResponse." Cùng nhau, biểu mẫu thông báo đầu vào và đầu ra được gọi là một hoạt động hoàn chỉnh.

WSDL cung cấp một phần tử được gọi là được sử dụng để xác định các hoạt động được cung cấp bởi dịch vụ Web.

Vì vậy, trong ví dụ trên, chúng ta có thể lưu ý những điều sau:

  1. Tên của Loại cổng đóng gói hoạt động được đưa ra là "Tutorial_PortType."
  2. Bản thân hoạt động được đặt tên là "Hướng dẫn". Vì vậy, hoạt động của chúng tôi về cơ bản cung cấp TutorialName nếu TutorialID được cung cấp dưới dạng tham số đầu vào.
  3. Tiếp theo là 2 thông điệp của chúng tôi, một thông báo cho đầu vào và một cho đầu ra hình thành hoạt động của chúng tôi

Ngoài phần tử , còn có phần tử được sử dụng để xác định cách thông báo sẽ được chuyển.

  1. Ví dụ trên cho thấy rằng ràng buộc bao gồm một tên liên kết mà trong trường hợp của chúng ta được đặt là "TutorialSoapBinding". Ràng buộc trong các thuật ngữ đơn giản là thông tin mà ứng dụng khách sử dụng để thực sự liên kết chính nó với dịch vụ web. Một khi nó thực sự được liên kết với dịch vụ web, nó sẽ có khả năng gọi các hoạt động khác nhau được hiển thị bởi dịch vụ web.
  2. Lớp truyền tải được cung cấp dưới dạng http: // có nghĩa là các thông báo sẽ chuyển qua giao thức HTTP.

Tạo tệp WSDL

Tệp WSDL được tạo bất cứ khi nào dịch vụ web được xây dựng bằng bất kỳ ngôn ngữ lập trình nào.

Vì tệp WSDL khá phức tạp để được tạo từ đầu, tất cả các trình soạn thảo như Visual Studio cho .Net và Eclipse cho Java sẽ tự động tạo tệp WSDL.

Dưới đây là ví dụ về tệp WSDL được tạo trong Visual Studio.




TutorialService

Tệp WSDL ở trên trông rất đáng sợ đối với bất kỳ người dùng nào, chúng tôi sẽ trình bày chi tiết các phần khác nhau trong các hướng dẫn tiếp theo, nhưng bây giờ, chúng ta hãy xem tóm tắt những gì mỗi phần của tệp WSDL thực sự làm.

Xuất bản ví dụ về dịch vụ web

Bây giờ chúng ta hãy xem xét một ví dụ về cách chúng ta có thể xuất bản một dịch vụ web và sử dụng nó bằng cách sử dụng Visual Studio.

Trong ví dụ này, chúng tôi sẽ tạo một dịch vụ web với một WebMethod. Phương thức này sẽ chấp nhận một tham số Integer được gọi là "TutorialID." Sau đó, phương thức Web sẽ trả về một chuỗi được gọi là "Dịch vụ Web".

Sau đó, chúng tôi sẽ tạo một ứng dụng dựa trên bảng điều khiển, ứng dụng này sẽ sử dụng dịch vụ web này và gọi phương thức web của chúng tôi tương ứng.

Hãy xem xét các bước cần thiết để thực hiện ví dụ này.

Bước 1) Bước đầu tiên là tạo dịch vụ web của bạn. Các bước chi tiết về cách tạo dự án web Asp.Net và một dịch vụ web đã được giải thích ở đây; Vui lòng làm theo các bước tương tự để tạo dự án và dịch vụ web cho phù hợp. Phần quan trọng là nhập mã dưới đây vào tệp dịch vụ Web.

namespace webservic asmx{[WebService(Name = "Guru99 Web service")]public class TutorialService : System.Web.Services.WebService{[WebMethod]public string GetTutorialService(int TutoriallD){string TutorialName = "Web Services";return TutorialName;}}}

Giải thích mã:

  1. Ở đây chúng tôi đang tạo một WebMethod có tên "Guru99WebService." Trong phương thức web này, chúng tôi đang bao gồm một tham số số nguyên cần được chuyển bất cứ khi nào phương thức web này được gọi.
  2. Tiếp theo, chúng tôi xác định một biến có tên "TutorialName" sẽ giữ giá trị chuỗi của "Dịch vụ Web". Đây là giá trị sẽ được trả lại khi dịch vụ web được gọi.

Bước 2) Khi chúng tôi đã xác định tệp dịch vụ web, bước tiếp theo là tạo một dự án khách hàng sẽ sử dụng dịch vụ web này.

Hãy tạo một ứng dụng bảng điều khiển đơn giản sẽ gọi dịch vụ web này, gọi "Guru99WebService" và sau đó hiển thị đầu ra của phương thức web trong màn hình nhật ký bảng điều khiển. Làm theo các bước dưới đây để tạo một ứng dụng bảng điều khiển.

Nhấp chuột phải vào tệp giải pháp Visual Studio và chọn tùy chọn Thêm-> Dự án mới

Bước 3) Trong bước này,

  1. Đảm bảo trước tiên chọn tùy chọn Visual C # Windows. Sau đó chọn tùy chọn tạo ứng dụng bảng điều khiển.
  2. Đặt tên cho dự án của bạn mà trong trường hợp của chúng tôi là "DemoApplication".

Sau khi bạn nhấp vào nút OK trong màn hình trên, bạn sẽ có thể xem dự án trong Trình khám phá giải pháp trong Visual Studio.

Bước 4) Trong bước này, bạn đang thiết lập ứng dụng DemoApplication Console làm dự án khởi động. Điều này được thực hiện để đảm bảo rằng ứng dụng này khởi chạy đầu tiên khi toàn bộ dự án Visual Studio được chạy. Đến lượt nó, ứng dụng Console này sẽ gọi dịch vụ web mà Visual Studio sẽ tự động khởi chạy.

Để hoàn thành bước này, nhấp chuột phải vào dự án DemoApplication và chọn tùy chọn "Đặt làm Dự án StartUp."

Bước 5) Bước tiếp theo là thêm tham chiếu dịch vụ của "Guru99Webservice" vào ứng dụng bảng điều khiển của chúng tôi. Điều này được thực hiện để Ứng dụng thử nghiệm có thể tham chiếu đến dịch vụ web và tất cả các phương pháp web trong dịch vụ web.

Để thực hiện việc này, hãy nhấp chuột phải vào tệp dự án DemoApplication và chọn tùy chọn menu Add-> Service Reference.

Bước 6) Trong bước này, chúng tôi sẽ cung cấp các giá trị khác nhau được yêu cầu để thêm tham chiếu dịch vụ của chúng tôi

  1. Trước tiên, chúng ta cần chọn tùy chọn khám phá của mình. Tùy chọn này sẽ tự động chọn tệp WSDL cho dịch vụ web TutorialService của chúng tôi.
  2. Tiếp theo, chúng ta nên đặt tên để tham khảo dịch vụ của mình. Trong trường hợp của chúng tôi, chúng tôi đặt tên cho nó là Guru99Webservice.
  3. Sau đó, chúng ta cần mở rộng tùy chọn TutorialService.asmx để chúng ta có thể thấy phương thức 'GetTutorialService' ở phía bên tay phải. Ở đây TutorialService.asmx là tên của tệp Visual Studio .Net chứa mã cho dịch vụ web của chúng tôi.
  4. Sau đó, chúng tôi sẽ thấy phương pháp Web của chúng tôi mà chúng tôi đã có trong dịch vụ web của chúng tôi, được gọi là "GetTutorialService"

Khi chúng tôi nhấp vào nút 'OK', tất cả mã được yêu cầu để truy cập dịch vụ web này sẽ được thêm vào ứng dụng DemoApplication Console của chúng tôi như được hiển thị bên dưới.

Ảnh chụp màn hình cho thấy "Guru99Webservice" đã được thêm thành công vào ứng dụng bảng điều khiển của chúng tôi.

Bước 7) Bước tiếp theo là thêm mã vào ứng dụng bảng điều khiển của chúng tôi để truy cập phương thức web trong dịch vụ web của chúng tôi. Mở tệp mã Program.cs tự động đi kèm với ứng dụng bảng điều khiển và thêm mã bên dưới

namespace DemoApplication{class Program{static void Main(string[ ] args){var client = new Guru99Webservice.Guru99WebserviceSoapClient();Console.WriteLine(client.GetTutorialService(l));Console.ReadKey();}}}

Giải thích mã: -

  1. Phần đầu tiên là chọn tệp Program.cs. Đây là tệp chính được tạo bởi Visual Studio khi một ứng dụng bảng điều khiển được tạo. Tệp này là những gì được thực thi khi ứng dụng bảng điều khiển (trong trường hợp của chúng tôi là ứng dụng demo) được thực thi.
  2. Sau đó, chúng tôi tạo một biến có tên "client", biến này sẽ được đặt thành một phiên bản của tham chiếu Dịch vụ của chúng tôi đã được tạo ở bước trước đó. Trong trường hợp của chúng tôi, tham chiếu dịch vụ là 'Guru99Webservice.Guru99WebserviveSoapClient ()'
  3. Sau đó, chúng tôi đang gọi Webmethod 'GetTutorialService' của chúng tôi trong dịch vụ web TutorialService Hãy nhớ rằng phương thức GetTutorialService 'của chúng tôi chấp nhận một tham số số nguyên, vì vậy chúng tôi chỉ truyền một tham số số nguyên cho phương thức web.
  4. Dòng cuối cùng này chỉ để đảm bảo màn hình nhật ký giao diện điều khiển vẫn hoạt động để chúng ta có thể xem kết quả đầu ra. Lệnh này sẽ chỉ đợi một số đầu vào từ người dùng.

Đầu ra

Khi tất cả các bước trên được làm theo và DemoApplication được chạy, đầu ra bên dưới sẽ được hiển thị.

Từ kết quả đầu ra, chúng ta có thể thấy rõ rằng DemoApplication gọi dịch vụ Web của chúng tôi và chuỗi được dịch vụ Web trả về được hiển thị trong nhật ký Console của chúng tôi.

Tóm lược

  • Dạng đầy đủ của WSDL là Ngôn ngữ Mô tả Dịch vụ Web
  • Tài liệu WSDL là tài liệu được sử dụng để mô tả một dịch vụ web. Đây là chìa khóa để bất kỳ ứng dụng khách nào biết dịch vụ web nằm ở đâu. Nó cũng cho phép ứng dụng khách hiểu các phương pháp có sẵn trong dịch vụ web.
  • Tệp WSDL giúp dịch vụ web rất dễ dàng được triển khai bằng một ngôn ngữ lập trình và được gọi từ một ngôn ngữ lập trình khác.
  • Tài liệu WSDL thường bao gồm một thông báo. Đối với mỗi phương thức web, có 2 thông báo, một cho đầu vào và một cho đầu ra. Họ cùng nhau tạo thành một hoạt động.
  • Các tệp Ngôn ngữ Mô tả Dịch vụ Web (viết tắt của WSDL) thường được tạo trong trình soạn thảo được sử dụng cho ngôn ngữ lập trình tương ứng.
  • Chúng tôi đã thấy cách chúng tôi có thể sử dụng một dịch vụ web trong Visual Studio. Điều này có thể được thực hiện bằng cách tạo một dự án khác là một ứng dụng console. Sau đó, bằng cách thêm tham chiếu dịch vụ, chúng tôi có thể truy cập các phương pháp web trong dịch vụ web của chúng tôi.