Dịch vụ Web - Ví dụ
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ụ này 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 ta 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 đặ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.