Dịch vụ Web - Hướng dẫn Nhanh
Các sách khác nhau và các tổ chức khác nhau cung cấp các định nghĩa khác nhau cho Dịch vụ Web. Một số người trong số họ được liệt kê ở đây.
Dịch vụ web là bất kỳ phần mềm nào tự cung cấp trên internet và sử dụng hệ thống nhắn tin XML được chuẩn hóa. XML được sử dụng để mã hóa tất cả các thông tin liên lạc tới một dịch vụ web. Ví dụ: một ứng dụng khách gọi một dịch vụ web bằng cách gửi một thông điệp XML, sau đó đợi một phản hồi XML tương ứng. Vì tất cả giao tiếp đều bằng XML, các dịch vụ web không bị ràng buộc với bất kỳ một hệ điều hành hoặc ngôn ngữ lập trình nào — Java có thể nói chuyện với Perl; Các ứng dụng Windows có thể nói chuyện với các ứng dụng Unix.
Dịch vụ web là các ứng dụng động, mô-đun, phân tán, độc lập có thể được mô tả, xuất bản, định vị hoặc gọi qua mạng để tạo ra sản phẩm, quy trình và chuỗi cung ứng. Các ứng dụng này có thể là cục bộ, phân phối hoặc dựa trên web. Các dịch vụ web được xây dựng trên các tiêu chuẩn mở như TCP / IP, HTTP, Java, HTML và XML.
Dịch vụ web là hệ thống trao đổi thông tin dựa trên XML sử dụng Internet để tương tác trực tiếp giữa ứng dụng này với ứng dụng khác. Các hệ thống này có thể bao gồm các chương trình, đối tượng, tin nhắn hoặc tài liệu.
Dịch vụ web là một tập hợp các giao thức và tiêu chuẩn mở được sử dụng để trao đổi dữ liệu giữa các ứng dụng hoặc hệ thống. Các ứng dụng phần mềm được viết bằng nhiều ngôn ngữ lập trình khác nhau và chạy trên nhiều nền tảng khác nhau có thể sử dụng các dịch vụ web để trao đổi dữ liệu qua các mạng máy tính như Internet theo cách tương tự như giao tiếp giữa các quá trình trên một máy tính. Khả năng tương tác này (ví dụ: giữa Java và Python, hoặc các ứng dụng Windows và Linux) là do việc sử dụng các tiêu chuẩn mở.
Tóm lại, một dịch vụ web hoàn chỉnh, do đó, là bất kỳ dịch vụ nào -
Có sẵn qua Internet hoặc mạng riêng (mạng nội bộ)
Sử dụng hệ thống nhắn tin XML chuẩn hóa
Không bị ràng buộc với bất kỳ hệ điều hành hoặc ngôn ngữ lập trình nào
Tự mô tả thông qua ngữ pháp XML phổ biến
Có thể phát hiện được thông qua một cơ chế tìm đơn giản
Các thành phần của Dịch vụ Web
Nền tảng dịch vụ web cơ bản là XML + HTTP. Tất cả các dịch vụ web tiêu chuẩn hoạt động bằng cách sử dụng các thành phần sau:
SOAP (Giao thức truy cập đối tượng đơn giản)
UDDI (Mô tả chung, Khám phá và Tích hợp)
WSDL (Ngôn ngữ mô tả dịch vụ web)
Tất cả các thành phần này đã được thảo luận trong chương Kiến trúc dịch vụ web .
Dịch vụ Web hoạt động như thế nào?
Dịch vụ web cho phép giao tiếp giữa các ứng dụng khác nhau bằng cách sử dụng các tiêu chuẩn mở như HTML, XML, WSDL và SOAP. Một dịch vụ web có sự trợ giúp của -
XML để gắn thẻ dữ liệu
SOAP để chuyển một tin nhắn
WSDL để mô tả tính khả dụng của dịch vụ.
Bạn có thể xây dựng một dịch vụ web dựa trên Java trên Solaris có thể truy cập được từ chương trình Visual Basic chạy trên Windows của bạn.
Bạn cũng có thể sử dụng C # để xây dựng các dịch vụ web mới trên Windows có thể được gọi từ ứng dụng web của bạn dựa trên JavaServer Pages (JSP) và chạy trên Linux.
Thí dụ
Hãy xem xét một hệ thống quản lý tài khoản và xử lý đơn đặt hàng đơn giản. Nhân viên kế toán sử dụng ứng dụng khách được xây dựng bằng Visual Basic hoặc JSP để tạo tài khoản mới và nhập đơn đặt hàng mới của khách hàng.
Logic xử lý của hệ thống này được viết bằng Java và nằm trên máy Solaris, máy này cũng tương tác với cơ sở dữ liệu để lưu trữ thông tin.
Các bước để thực hiện thao tác này như sau:
Chương trình khách hàng gói thông tin đăng ký tài khoản vào một thông báo SOAP.
Thông báo SOAP này được gửi tới dịch vụ web dưới dạng phần thân của một yêu cầu HTTP POST.
Dịch vụ web giải nén yêu cầu SOAP và chuyển đổi nó thành một lệnh mà ứng dụng có thể hiểu được.
Ứng dụng xử lý thông tin theo yêu cầu và phản hồi bằng số tài khoản mới duy nhất cho khách hàng đó.
Tiếp theo, dịch vụ web đóng gói phản hồi thành một thông báo SOAP khác, mà nó sẽ gửi lại chương trình khách để phản hồi lại yêu cầu HTTP của nó.
Chương trình khách hàng giải nén thông báo SOAP để lấy kết quả của quá trình đăng ký tài khoản.
Dưới đây là những lợi ích của việc sử dụng Dịch vụ Web -
Hiển thị chức năng hiện có trên mạng
Dịch vụ web là một đơn vị mã được quản lý có thể được gọi từ xa bằng HTTP. Đó là, nó có thể được kích hoạt bằng cách sử dụng các yêu cầu HTTP. Các dịch vụ web cho phép bạn hiển thị chức năng của mã hiện có của bạn qua mạng. Khi nó được hiển thị trên mạng, các ứng dụng khác có thể sử dụng chức năng của chương trình của bạn.
Khả năng tương tác
Các dịch vụ web cho phép các ứng dụng khác nhau nói chuyện với nhau và chia sẻ dữ liệu và dịch vụ giữa chúng. Các ứng dụng khác cũng có thể sử dụng các dịch vụ web. Ví dụ, một ứng dụng VB hoặc .NET có thể nói chuyện với các dịch vụ web Java và ngược lại. Các dịch vụ web được sử dụng để làm cho nền tảng ứng dụng và công nghệ độc lập.
Giao thức chuẩn hóa
Các dịch vụ web sử dụng giao thức tiêu chuẩn công nghiệp được chuẩn hóa để truyền thông. Tất cả bốn lớp (các lớp Truyền tải Dịch vụ, Nhắn tin XML, Mô tả Dịch vụ và Khám phá Dịch vụ) sử dụng các giao thức được xác định rõ trong ngăn xếp giao thức dịch vụ web. Việc tiêu chuẩn hóa ngăn xếp giao thức này mang lại cho doanh nghiệp nhiều lợi thế như nhiều sự lựa chọn, giảm chi phí do cạnh tranh và tăng chất lượng.
Truyền thông chi phí thấp
Các dịch vụ web sử dụng SOAP qua giao thức HTTP, vì vậy bạn có thể sử dụng internet giá rẻ hiện có của mình để triển khai các dịch vụ web. Giải pháp này ít tốn kém hơn nhiều so với các giải pháp độc quyền như EDI / B2B. Bên cạnh SOAP qua HTTP, các dịch vụ web cũng có thể được thực hiện trên các cơ chế truyền tải đáng tin cậy khác như FTP.
Các dịch vụ web có các đặc điểm hành vi đặc biệt sau:
Dựa trên XML
Các dịch vụ web sử dụng XML ở các lớp biểu diễn dữ liệu và vận chuyển dữ liệu. Sử dụng XML loại bỏ bất kỳ ràng buộc mạng, hệ điều hành hoặc nền tảng nào. Các ứng dụng dựa trên dịch vụ web có khả năng tương tác cao ở cấp độ cốt lõi của chúng.
Khớp nối lỏng lẻo
Người tiêu dùng dịch vụ web không bị ràng buộc trực tiếp với dịch vụ web đó. Giao diện dịch vụ web có thể thay đổi theo thời gian mà không ảnh hưởng đến khả năng tương tác của khách hàng với dịch vụ. Một hệ thống được kết hợp chặt chẽ ngụ ý rằng logic máy khách và máy chủ được liên kết chặt chẽ với nhau, ngụ ý rằng nếu một giao diện thay đổi, giao diện kia phải được cập nhật. Việc áp dụng kiến trúc kết hợp lỏng lẻo có xu hướng làm cho các hệ thống phần mềm dễ quản lý hơn và cho phép tích hợp đơn giản hơn giữa các hệ thống khác nhau.
Hạt thô
Các công nghệ hướng đối tượng như Java thể hiện các dịch vụ của họ thông qua các phương thức riêng lẻ. Một phương pháp riêng lẻ là một hoạt động quá tốt để cung cấp bất kỳ khả năng hữu ích nào ở cấp công ty. Việc xây dựng một chương trình Java từ đầu đòi hỏi phải tạo ra một số phương thức chi tiết sau đó được tạo thành một dịch vụ chi tiết thô được sử dụng bởi khách hàng hoặc dịch vụ khác.
Các doanh nghiệp và giao diện mà họ hiển thị phải được chi tiết hóa thô. Công nghệ dịch vụ web cung cấp một cách tự nhiên để xác định các dịch vụ chi tiết thô có thể truy cập đúng lượng logic nghiệp vụ.
Khả năng đồng bộ hoặc không đồng bộ
Tính đồng bộ đề cập đến sự ràng buộc của khách hàng với việc thực hiện dịch vụ. Trong các lệnh gọi đồng bộ, máy khách chặn và đợi dịch vụ hoàn thành hoạt động trước khi tiếp tục. Hoạt động không đồng bộ cho phép máy khách gọi một dịch vụ và sau đó thực thi các chức năng khác.
Máy khách không đồng bộ truy xuất kết quả của họ vào thời điểm sau đó, trong khi máy khách đồng bộ nhận kết quả của họ khi dịch vụ đã hoàn thành. Khả năng không đồng bộ là yếu tố quan trọng trong việc kích hoạt các hệ thống được ghép nối lỏng lẻo.
Hỗ trợ cuộc gọi thủ tục từ xa (RPC)
Các dịch vụ web cho phép khách hàng gọi các thủ tục, hàm và phương thức trên các đối tượng từ xa bằng giao thức dựa trên XML. Các thủ tục từ xa hiển thị các thông số đầu vào và đầu ra mà dịch vụ web phải hỗ trợ.
Phát triển thành phần thông qua Enterprise JavaBeans (EJB) và .NET Components ngày càng trở thành một phần của kiến trúc và triển khai doanh nghiệp trong vài năm qua. Cả hai công nghệ đều được phân phối và có thể truy cập thông qua nhiều cơ chế RPC.
Một dịch vụ web hỗ trợ RPC bằng cách cung cấp các dịch vụ của riêng nó, tương đương với các dịch vụ của một thành phần truyền thống hoặc bằng cách dịch các lời gọi đến thành một lệnh gọi của EJB hoặc một thành phần .NET.
Hỗ trợ trao đổi tài liệu
Một trong những ưu điểm chính của XML là cách thức chung của nó không chỉ biểu diễn dữ liệu mà còn cả các tài liệu phức tạp. Những tài liệu này có thể đơn giản như đại diện cho một địa chỉ hiện tại hoặc chúng có thể phức tạp như đại diện cho toàn bộ cuốn sách hoặc Yêu cầu báo giá (RFQ). Dịch vụ web hỗ trợ trao đổi tài liệu minh bạch để tạo điều kiện tích hợp kinh doanh.
Có hai cách để xem kiến trúc dịch vụ web -
- Đầu tiên là kiểm tra các vai trò cá nhân của từng tác nhân dịch vụ web.
- Thứ hai là kiểm tra ngăn xếp giao thức dịch vụ web mới nổi.
Vai trò dịch vụ web
Có ba vai trò chính trong kiến trúc dịch vụ web -
Nhà cung cấp dịch vụ
Đây là nhà cung cấp dịch vụ web. Nhà cung cấp dịch vụ triển khai dịch vụ và cung cấp dịch vụ đó trên Internet.
Người yêu cầu dịch vụ
Đây là bất kỳ người tiêu dùng nào của dịch vụ web. Người yêu cầu sử dụng dịch vụ web hiện có bằng cách mở kết nối mạng và gửi yêu cầu XML.
Đăng ký dịch vụ
Đây là một thư mục tập trung hợp lý của các dịch vụ. Cơ quan đăng ký cung cấp một nơi trung tâm nơi các nhà phát triển có thể xuất bản các dịch vụ mới hoặc tìm các dịch vụ hiện có. Do đó, nó hoạt động như một nhà thanh toán bù trừ tập trung cho các công ty và dịch vụ của họ.
Ngăn xếp giao thức dịch vụ web
Tùy chọn thứ hai để xem kiến trúc dịch vụ web là kiểm tra ngăn xếp giao thức dịch vụ web mới nổi. Ngăn xếp vẫn đang phát triển, nhưng hiện có bốn lớp chính.
Dịch vụ vận chuyển
Lớp này có nhiệm vụ vận chuyển các thông điệp giữa các ứng dụng. Hiện tại, lớp này bao gồm Giao thức truyền tải siêu văn bản (HTTP), Giao thức truyền thư đơn giản (SMTP), Giao thức truyền tệp (FTP) và các giao thức mới hơn như Giao thức trao đổi có thể mở rộng khối (BEEP).
Nhắn tin XML
Lớp này chịu trách nhiệm mã hóa các thông báo ở định dạng XML chung để các thông báo có thể hiểu được ở hai đầu. Hiện tại, lớp này bao gồm XML-RPC và SOAP.
Dịch vụ Mô tả
Lớp này chịu trách nhiệm mô tả giao diện công cộng cho một dịch vụ web cụ thể. Hiện tại, mô tả dịch vụ được xử lý thông qua Ngôn ngữ Mô tả Dịch vụ Web (WSDL).
Khám phá dịch vụ
Lớp này chịu trách nhiệm tập trung các dịch vụ vào một sổ đăng ký chung và cung cấp chức năng xuất bản / tìm kiếm dễ dàng. Hiện tại, việc khám phá dịch vụ được xử lý thông qua Universal Description, Discovery và Integration (UDDI).
Khi các dịch vụ web phát triển, các lớp bổ sung có thể được thêm vào và các công nghệ bổ sung có thể được thêm vào mỗi lớp.
Chương tiếp theo giải thích các thành phần của dịch vụ web.
Vài lời về Dịch vụ Vận chuyển
Dưới cùng của ngăn xếp giao thức dịch vụ web là truyền tải dịch vụ. Lớp này chịu trách nhiệm thực sự vận chuyển các thông điệp XML giữa hai máy tính.
Giao thức truyền siêu văn bản (HTTP)
Hiện tại, HTTP là tùy chọn phổ biến nhất để vận chuyển dịch vụ. HTTP đơn giản, ổn định và được triển khai rộng rãi. Hơn nữa, hầu hết các tường lửa đều cho phép lưu lượng truy cập HTTP. Điều này cho phép các thông điệp XMLRPC hoặc SOAP giả dạng như các thông điệp HTTP. Điều này là tốt nếu bạn muốn tích hợp các ứng dụng từ xa, nhưng nó làm tăng một số lo ngại về bảo mật. Làm tăng một số lo ngại về bảo mật.
Giao thức trao đổi có thể mở rộng khối (BEEP)
Đây là một giải pháp thay thế đầy hứa hẹn cho HTTP. BEEP là một khuôn khổ Lực lượng Đặc nhiệm Kỹ thuật Internet (IETF) mới để xây dựng các giao thức mới. BEEP được phân lớp trực tiếp trên TCP và bao gồm một số tính năng tích hợp, bao gồm giao thức bắt tay ban đầu, xác thực, bảo mật và xử lý lỗi. Sử dụng BEEP, người ta có thể tạo các giao thức mới cho nhiều ứng dụng, bao gồm nhắn tin tức thì, truyền tệp, cung cấp nội dung và quản lý mạng.
SOAP không bị ràng buộc với bất kỳ giao thức truyền tải cụ thể nào. Trên thực tế, bạn có thể sử dụng SOAP qua HTTP, SMTP hoặc FTP. Do đó, một ý tưởng đầy hứa hẹn là sử dụng SOAP thay vì BEEP.
Trong vài năm qua, ba công nghệ chính đã trở thành tiêu chuẩn toàn cầu tạo nên cốt lõi của công nghệ dịch vụ web ngày nay. Những công nghệ này được thảo luận dưới đây.
XML-RPC
Đây là giao thức dựa trên XML đơn giản nhất để trao đổi thông tin giữa các máy tính.
XML-RPC là một giao thức đơn giản sử dụng các thông điệp XML để thực hiện các RPC.
Các yêu cầu được mã hóa bằng XML và được gửi qua HTTP POST.
Các phản hồi XML được nhúng trong phần nội dung của phản hồi HTTP.
XML-RPC độc lập với nền tảng.
XML-RPC cho phép các ứng dụng đa dạng giao tiếp.
Máy khách Java có thể nói XML-RPC với máy chủ Perl.
XML-RPC là cách dễ nhất để bắt đầu với các dịch vụ web.
Để tìm hiểu thêm về XML-RPC, hãy truy cập Hướng dẫn XML-RPC của chúng tôi .
XÀ BÔNG TẮM
SOAP là một giao thức dựa trên XML để trao đổi thông tin giữa các máy tính.
SOAP là một giao thức truyền thông.
SOAP là để giao tiếp giữa các ứng dụng.
SOAP là một định dạng để gửi tin nhắn.
SOAP được thiết kế để giao tiếp qua Internet.
SOAP độc lập với nền tảng.
SOAP là ngôn ngữ độc lập.
SOAP rất đơn giản và có thể mở rộng.
SOAP cho phép bạn vượt qua tường lửa.
SOAP sẽ được phát triển như một tiêu chuẩn W3C.
Để tìm hiểu thêm về SOAP, hãy truy cập Hướng dẫn SOAP của chúng tôi .
WSDL
WSDL là một ngôn ngữ dựa trên XML để mô tả các dịch vụ web và cách truy cập chúng.
WSDL là viết tắt của Ngôn ngữ Mô tả Dịch vụ Web.
WSDL được phát triển chung bởi Microsoft và IBM.
WSDL là một giao thức dựa trên XML để trao đổi thông tin trong các môi trường phân tán và phi tập trung.
WSDL là định dạng tiêu chuẩn để mô tả một dịch vụ web.
Định nghĩa WSDL mô tả cách truy cập một dịch vụ web và những thao tác mà nó sẽ thực hiện.
WSDL là một ngôn ngữ để mô tả cách giao tiếp với các dịch vụ dựa trên XML.
WSDL là một phần không thể thiếu của UDDI, một cơ quan đăng ký kinh doanh trên toàn thế giới dựa trên XML.
WSDL là ngôn ngữ mà UDDI sử dụng.
WSDL được phát âm là 'wiz-xỉn' và được đánh vần là 'WSD-L'.
Để tìm hiểu thêm về WSDL, hãy truy cập Hướng dẫn WSDL của chúng tôi .
UDDI
UDDI là một tiêu chuẩn dựa trên XML để mô tả, xuất bản và tìm kiếm các dịch vụ web.
UDDI là viết tắt của Universal Description, Discovery và Integration.
UDDI là một đặc tả cho một đăng ký phân tán của các dịch vụ web.
UDDI là một khuôn khổ mở, độc lập với nền tảng.
UDDI có thể giao tiếp thông qua Giao thức SOAP, CORBA và Java RMI.
UDDI sử dụng WSDL để mô tả giao diện cho các dịch vụ web.
UDDI được xem cùng với SOAP và WSDL là một trong ba tiêu chuẩn nền tảng của các dịch vụ web.
UDDI là một sáng kiến trong ngành công nghiệp mở cho phép các doanh nghiệp khám phá lẫn nhau và xác định cách họ tương tác qua Internet.
Để tìm hiểu thêm về UDDI, hãy truy cập Hướng dẫn UDDI của chúng tôi .
Dựa trên kiến trúc dịch vụ web, chúng tôi tạo hai thành phần sau như một phần của việc triển khai dịch vụ web:
Nhà cung cấp dịch vụ hoặc Nhà xuất bản
Đây là nhà cung cấp dịch vụ web. Nhà cung cấp dịch vụ triển khai dịch vụ và cung cấp dịch vụ đó trên Internet hoặc mạng nội bộ.
Chúng tôi sẽ viết và xuất bản một dịch vụ web đơn giản sử dụng .NET SDK.
Người yêu cầu dịch vụ hoặc Người tiêu dùng
Đây là bất kỳ người tiêu dùng nào của dịch vụ web. Người yêu cầu sử dụng dịch vụ web hiện có bằng cách mở kết nối mạng và gửi yêu cầu XML.
Chúng tôi cũng sẽ viết hai người yêu cầu dịch vụ web: một người tiêu dùng dựa trên web (ứng dụng ASP.NET) và một người tiêu dùng dựa trên ứng dụng Windows khác.
Dưới đây là ví dụ về dịch vụ web đầu tiên của chúng tôi, hoạt động như một nhà cung cấp dịch vụ và hiển thị hai phương pháp (add và SayHello) làm dịch vụ web được các ứng dụng sử dụng. Đây là một mẫu tiêu chuẩn cho một dịch vụ web. Các dịch vụ web .NET sử dụng phần mở rộng .asmx. Lưu ý rằng một phương thức được hiển thị dưới dạng dịch vụ web có thuộc tính WebMethod. Lưu tệp này dưới dạng FirstService.asmx trong thư mục ảo IIS (như được giải thích trong cấu hình IIS; ví dụ: c: \ MyWebSerces).
FirstService.asmx
<%@ WebService language = "C#" class = "FirstService" %>
using System;
using System.Web.Services;
using System.Xml.Serialization;
[WebService(Namespace = "http://localhost/MyWebServices/")]
public class FirstService : WebService{
[WebMethod]
public int Add(int a, int b) {
return a + b;
}
[WebMethod]
public String SayHello() {
return "Hello World";
}
}
Để kiểm tra một dịch vụ web, nó phải được xuất bản. Một dịch vụ web có thể được xuất bản trên mạng nội bộ hoặc Internet. Chúng tôi sẽ xuất bản dịch vụ web này trên IIS chạy trên máy cục bộ. Chúng ta hãy bắt đầu với việc cấu hình IIS.
Mở Bắt đầu → Cài đặt → Bảng điều khiển → Công cụ quản trị → Trình quản lý dịch vụ Internet.
Mở rộng và nhấp chuột phải vào trang web mặc định; chọn Mới & # rarr; Thư mục ảo. Trình hướng dẫn Tạo Thư mục Ảo sẽ mở ra. Bấm tiếp.
Màn hình "Bí danh thư mục ảo" mở ra. Nhập tên thư mục ảo. Ví dụ, MyWebServices. Bấm tiếp.
Màn hình "Thư mục nội dung trang web" sẽ mở ra.
Nhập tên đường dẫn thư mục cho thư mục ảo. Ví dụ: c: \ MyWebServices. Bấm tiếp.
Màn hình "Quyền truy cập" sẽ mở ra. Thay đổi cài đặt theo yêu cầu của bạn. Hãy để chúng tôi giữ cài đặt mặc định cho bài tập này.
Nhấp vào nút Tiếp theo. Nó hoàn thành cấu hình IIS.
Nhấp vào Kết thúc để hoàn tất cấu hình.
Để kiểm tra xem IIS đã được định cấu hình đúng chưa, hãy sao chép tệp HTML (Ví dụ: x.html) trong thư mục ảo (C: \ MyWebServices) đã tạo ở trên. Bây giờ, hãy mở Internet Explorer và nhậphttp://localhost/MyWebServices/x.html. Nó sẽ mở tệp x.html.
Note- Nếu nó không hoạt động, hãy thử thay thế localhost bằng địa chỉ IP của máy bạn. Nếu nó vẫn không hoạt động, hãy kiểm tra xem IIS có đang chạy hay không; bạn có thể cần phải cấu hình lại IIS và Thư mục ảo.
Để kiểm tra dịch vụ web này, hãy sao chép FirstService.asmx trong thư mục ảo IIS được tạo ở trên (C: \ MyWebServices). Mở dịch vụ web trong Internet Explorer (http: //localhost/MyWebServices/FirstService.asmx). Nó sẽ mở trang dịch vụ web của bạn. Trang phải có liên kết đến hai phương pháp được ứng dụng của chúng tôi coi là dịch vụ web. Xin chúc mừng! Bạn đã viết dịch vụ web đầu tiên của mình!
Kiểm tra Dịch vụ Web
Như chúng ta vừa thấy, việc viết các dịch vụ web rất dễ dàng trong .NET Framework. Viết người tiêu dùng dịch vụ web cũng dễ dàng trong .NET framework; tuy nhiên, nó có liên quan nhiều hơn một chút. Như đã nói trước đó, chúng tôi sẽ viết hai loại người tiêu dùng dịch vụ, một loại dựa trên web và một loại khác dựa trên ứng dụng Windows. Hãy để chúng tôi viết người tiêu dùng dịch vụ web đầu tiên của chúng tôi.
Người tiêu dùng dịch vụ dựa trên web
Viết người tiêu dùng dựa trên web như được đưa ra bên dưới. Gọi nó là WebApp.aspx. Lưu ý rằng nó là một ứng dụng ASP.NET. Lưu nó trong thư mục ảo của dịch vụ web (c: \ MyWebServices \ WebApp.axpx).
Ứng dụng này có hai trường văn bản được sử dụng để lấy số từ người dùng được thêm vào. Nó có một nút, Execute, khi nhấp vào sẽ nhận được các dịch vụ web Add và SayHello.
WebApp.aspx
<%@ Page Language = "C#" %>
<script runat = "server">
void runSrvice_Click(Object sender, EventArgs e) {
FirstService mySvc = new FirstService();
Label1.Text = mySvc.SayHello();
Label2.Text = mySvc.Add(Int32.Parse(txtNum1.Text), Int32.Parse(txtNum2.Text)).ToString();
}
</script>
<html>
<head> </head>
<body>
<form runat = "server">
<p>
<em>First Number to Add </em>:
<asp:TextBox id = "txtNum1" runat = "server" Width = "43px">4< /asp:TextBox>
</p>
<p>
<em>Second Number To Add </em>:
<asp:TextBox id = "txtNum2" runat = "server" Width = "44px">5</asp:TextBox>
</p>
<p>
<strong><u>Web Service Result -</u></strong>
</p>
<p>
<em>Hello world Service</em> :
<asp:Label id = "Label1" runat = "server" Font-Underline = "True">Label< /asp:Label>
</p>
<p>
<em>Add Service</em> :
& <asp:Label id = "Label2" runat = "server" Font-Underline = "True">Label</asp:Label>
</p>
<p align = "left">
<asp:Button id = "runSrvice" onclick = "runSrvice_Click" runat = "server" Text = "Execute"></asp:Button>
</p>
</form>
</body>
</html>
Sau khi người dùng được tạo, chúng tôi cần tạo một proxy cho dịch vụ web được sử dụng. Công việc này được Visual Studio .NET thực hiện tự động cho chúng tôi khi tham chiếu đến một dịch vụ web đã được thêm vào. Đây là các bước cần làm theo -
Tạo một proxy cho Dịch vụ Web được sử dụng. Proxy được tạo bằng tiện ích WSDL được cung cấp cùng với .NET SDK. Tiện ích này trích xuất thông tin từ Dịch vụ Web và tạo một proxy. Proxy chỉ hợp lệ cho một Dịch vụ Web cụ thể. Nếu bạn cần sử dụng các Dịch vụ Web khác, bạn cũng cần tạo proxy cho dịch vụ này. Visual Studio .NET tự động tạo proxy cho bạn khi tham chiếu Dịch vụ Web được thêm vào. Tạo proxy cho Dịch vụ Web bằng tiện ích WSDL được cung cấp cùng với .NET SDK. Nó sẽ tạo tệp FirstSevice.cs trong thư mục hiện tại. Chúng tôi cần biên dịch nó để tạo FirstService.dll (proxy) cho Dịch vụ Web.
c:> WSDL http://localhost/MyWebServices/FirstService.asmx?WSDL
c:> csc /t:library FirstService.cs
Đặt proxy đã biên dịch vào thư mục bin của thư mục ảo của Dịch vụ Web (c: \ MyWebServices \ bin). Dịch vụ Thông tin Internet (IIS) tìm proxy trong thư mục này.
Tạo ra người tiêu dùng dịch vụ, giống như cách chúng tôi đã làm. Lưu ý rằng một đối tượng của proxy Dịch vụ Web được khởi tạo trong người tiêu dùng. Proxy này đảm nhận việc tương tác với dịch vụ.
Nhập URL của người tiêu dùng vào IE để kiểm tra (ví dụ: http: //localhost/MyWebServices/WebApp.aspx).
Người tiêu dùng dịch vụ web dựa trên ứng dụng Windows
Viết một người tiêu dùng dịch vụ web dựa trên ứng dụng Windows cũng giống như viết bất kỳ ứng dụng Windows nào khác. Bạn chỉ cần tạo proxy (mà chúng tôi đã thực hiện) và tham chiếu proxy này khi biên dịch ứng dụng. Sau đây là ứng dụng Windows của chúng tôi sử dụng dịch vụ web. Ứng dụng này tạo một đối tượng dịch vụ web (tất nhiên là proxy) và gọi phương thức SayHello và Add trên đó.
WinApp.cs
using System;
using System.IO;
namespace SvcConsumer {
class SvcEater {
public static void Main(String[] args) {
FirstService mySvc = new FirstService();
Console.WriteLine("Calling Hello World Service: " + mySvc.SayHello());
Console.WriteLine("Calling Add(2, 3) Service: " + mySvc.Add(2, 3).ToString());
}
}
}
Biên dịch nó bằng cách sử dụng c:\>csc /r:FirstService.dll WinApp.cs
. Nó sẽ tạo WinApp.exe. Chạy nó để kiểm tra ứng dụng và dịch vụ web.
Bây giờ, câu hỏi được đặt ra: Làm thế nào bạn có thể chắc chắn rằng ứng dụng này thực sự đang gọi dịch vụ web?
Nó là đơn giản để kiểm tra. Dừng máy chủ web của bạn để không thể liên lạc với dịch vụ web. Bây giờ, hãy chạy ứng dụng WinApp. Nó sẽ kích hoạt một ngoại lệ thời gian chạy. Bây giờ, khởi động lại máy chủ web. Nó sẽ hoạt động.
Bảo mật rất quan trọng đối với các dịch vụ web. Tuy nhiên, cả đặc tả XML-RPC và SOAP đều không đưa ra bất kỳ yêu cầu xác thực hoặc bảo mật rõ ràng nào.
Có ba vấn đề bảo mật cụ thể với các dịch vụ web -
- Confidentiality
- Authentication
- An ninh mạng
Bảo mật
Nếu một khách hàng gửi một yêu cầu XML đến một máy chủ, chúng tôi có thể đảm bảo rằng thông tin liên lạc vẫn được bảo mật không?
Câu trả lời nằm ở đây -
- XML-RPC và SOAP chủ yếu chạy trên HTTP.
- HTTP có hỗ trợ cho Lớp cổng bảo mật (SSL).
- Giao tiếp có thể được mã hóa qua SSL.
- SSL là một công nghệ đã được chứng minh và triển khai rộng rãi.
Một dịch vụ web có thể bao gồm một chuỗi các ứng dụng. Ví dụ, một dịch vụ lớn có thể kết hợp các dịch vụ của ba ứng dụng khác lại với nhau. Trong trường hợp này, SSL không đủ; các thông điệp cần được mã hóa tại mỗi nút dọc theo đường dẫn dịch vụ và mỗi nút đại diện cho một liên kết yếu tiềm ẩn trong chuỗi. Hiện tại, không có giải pháp nào được thống nhất cho vấn đề này, nhưng một giải pháp đầy hứa hẹn là Tiêu chuẩn mã hóa XML W3C. Tiêu chuẩn này cung cấp một khuôn khổ để mã hóa và giải mã toàn bộ tài liệu XML hoặc chỉ các phần của tài liệu XML. Bạn có thể kiểm tra nó tại www.w3.org/Encryption
Xác thực
Nếu khách hàng kết nối với dịch vụ web, làm cách nào để chúng tôi xác định người dùng? Người dùng có được phép sử dụng dịch vụ không?
Các tùy chọn sau đây có thể được xem xét nhưng không có sự đồng thuận rõ ràng về một sơ đồ xác thực mạnh.
HTTP bao gồm hỗ trợ tích hợp cho xác thực Cơ bản và Thông báo, và do đó, các dịch vụ có thể được bảo vệ theo cách giống như các tài liệu HTML hiện đang được bảo vệ.
Chữ ký số SOAP (SOAP-DSIG) sử dụng mật mã khóa công khai để ký điện tử các thông điệp SOAP. Nó cho phép máy khách hoặc máy chủ xác thực danh tính của bên kia. Kiểm tra nó tại www.w3.org/TR/SOAP-dsig .
Tổ chức phát triển các tiêu chuẩn thông tin có cấu trúc (OASIS) đang nghiên cứu về Ngôn ngữ đánh dấu xác nhận bảo mật (SAML).
An ninh mạng
Hiện tại không có câu trả lời dễ dàng cho vấn đề này, và nó đã là chủ đề của nhiều cuộc tranh luận. Hiện tại, nếu bạn thực sự có ý định lọc ra các thông báo SOAP hoặc XML-RPC, một khả năng là lọc ra tất cả các yêu cầu HTTP POST đặt loại nội dung của chúng thành text / xml.
Một giải pháp thay thế khác là lọc thuộc tính tiêu đề SOAPAction HTTP. Các nhà cung cấp tường lửa hiện cũng đang phát triển các công cụ được thiết kế rõ ràng để lọc lưu lượng dịch vụ web.
Chương này cung cấp cho bạn ý tưởng về tất cả các tiêu chuẩn mới nhất liên quan đến dịch vụ web.
Phương tiện giao thông
BEEP, Blocks Extensible Exchange Protocol (trước đây gọi là BXXP), là một khuôn khổ để xây dựng các giao thức ứng dụng. Nó đã được chuẩn hóa bởi IETF và nó phù hợp với các giao thức Internet như XML đã làm cho dữ liệu.
Giao thức trao đổi có thể mở rộng khối (BEEP)
Nhắn tin
Các tiêu chuẩn và thông số kỹ thuật nhắn tin này nhằm cung cấp một khuôn khổ để trao đổi thông tin trong một môi trường phân tán, phi tập trung.
SOAP 1.1 (Lưu ý)
SOAP 1.2 (Đặc điểm kỹ thuật)
Cấu hình tệp đính kèm dịch vụ web 1.0
Cơ chế tối ưu hóa truyền thông báo SOAP
Mô tả và Khám phá
Các dịch vụ web chỉ có ý nghĩa nếu người dùng tiềm năng có thể tìm thấy thông tin đủ để cho phép thực hiện chúng. Trọng tâm của các thông số kỹ thuật và tiêu chuẩn này là định nghĩa của một tập hợp các dịch vụ hỗ trợ việc mô tả và khám phá các doanh nghiệp, tổ chức và các nhà cung cấp dịch vụ web khác; các dịch vụ web mà họ cung cấp; và các giao diện kỹ thuật có thể được sử dụng để truy cập các dịch vụ đó.
UDDI 3.0
WSDL 1.1 (Lưu ý)
WSDL 1.2 (Bản thảo đang làm việc)
WSDL 2.0 (Nhóm làm việc)
Bảo vệ
Sử dụng các thông số kỹ thuật bảo mật này, các ứng dụng có thể tham gia vào giao tiếp an toàn được thiết kế để hoạt động với khung dịch vụ web chung.
Bảo mật dịch vụ web 1.0
Ngôn ngữ đánh dấu xác nhận bảo mật (SAML)
Sự quản lý
Khả năng quản lý dịch vụ web được định nghĩa là một tập hợp các khả năng để khám phá sự tồn tại, tính khả dụng, tình trạng sức khỏe, hiệu suất, cách sử dụng, cũng như kiểm soát và cấu hình dịch vụ web trong kiến trúc dịch vụ web. Khi các dịch vụ web trở nên phổ biến và quan trọng đối với hoạt động kinh doanh, nhiệm vụ quản lý và triển khai chúng là cấp thiết cho sự thành công của hoạt động kinh doanh.
Dịch vụ Web Quản lý phân tán
Trong hướng dẫn này, bạn đã học cách sử dụng các dịch vụ web. Tuy nhiên, một dịch vụ web cũng bao gồm các thành phần như WSDL, UDDI và SOAP góp phần làm cho nó hoạt động. Bước tiếp theo là tìm hiểu WSDL, UDDI và SOAP.
WSDL
WSDL là một ngôn ngữ dựa trên XML để mô tả các dịch vụ web và cách truy cập chúng.
WSDL mô tả một dịch vụ web, cùng với định dạng tin nhắn và chi tiết giao thức cho dịch vụ web.
Để tìm hiểu thêm về WSDL, hãy truy cập Hướng dẫn WSDL của chúng tôi .
UDDI
UDDI là một tiêu chuẩn dựa trên XML để mô tả, xuất bản và tìm kiếm các dịch vụ web.
Để tìm hiểu thêm về UDDI, hãy truy cập Hướng dẫn UDDI của chúng tôi .
XÀ BÔNG TẮM
SOAP là một giao thức dựa trên XML đơn giản cho phép các ứng dụng trao đổi thông tin qua HTTP.
Để tìm hiểu thêm về SOAP, hãy truy cập Hướng dẫn SOAP của chúng tôi .