chứa một danh mục hàng hóa cần cung cấp. Công ty tàu biển có thể chấp nhận file này và hoạch định một đầu đọc những tiết mục đó, và trả lại một tài liệu XML từ dịch vụ mạng chứa một danh sách của những con số theo dõi cho mỗi tiết mục sẽ được cung cấp.
Vì những dịch vụ mạng nhận và trả về dữ liệu trong form của những tài liệu XML, những dịch vụ mạng thực sự là nền tảng độc lập . Chẳng hạn, bạn có thể có một dịch vụ mạng viết với C# - giao dịch với một dịch vụ mạng khác viết bằng Java, thông qua dữ liệu trong form của những tài liệu XML.
Trong chương này, bạn sẽ thấy cách tạo ra một dịch vụ mạng sử dụng VS .NET và sử dụng nó trong một ứng dụng Windows như thế nào . Bạn cũng sẽ thấy cách đăng ký một dịch vụ mạng để những tổ chức khác có thể sử dụng dịch vụ của bạn. Về phạm vi toàn diện của những dịch vụ mạng, xem .NET Web Services Solutions by Kris Jamsa (Sybex, 2003).
Mục nổi bật trong Chương này:
Tạo ra một dịch vụ Mạng
Xem một file WSDL và kiểm tra một dịch vụ Mạng
Sử dụng một dịch vụ Mạng
Đăng ký một dịch vụ Mạng
Tạo ra một dịch vụ Mạng
Trong mục này bạn sẽ tạo ra một dịch vụ Mạng chứa một phương thức trả về một Dataset chứa những hàng từ bảng những khách hàng.
Khởi động VS .NET và chọn File ¾ New ¾ Project. Trong hộp thoại New Project , chọn Visual C# Projects trong ô Project Types ở bên trái, và chọn ASP.NET Web Service trong ô Templates bên phải. Nhập vào http: // Localhost/ NorthwindWebService trong trường Định vị (Location field)- xem Hình 17.1. Kích OK để tiếp tục.
Hình 17.1: Tạo ra một dịch vụ Mạng trong VS .NET
Ghi nhớ: nếu bạn có cài đặt IIS trên một máy tính khác với máy địa phương của bạn, rồi thay thế localhost với tên của máy tính từ xa của bạn trong Location field.
Sau khi VS .NET tạo ra dự án mới, mở Solution Explorer và xóa file Service1.asmx từ dự án của bạn; tiếp theo bạn sẽ thêm file .asmx của mình, và thật dễ dàng , đơn giản là xóa file ban đầu Service1.asmx .
Chọn Project ¾ Add Web Service, và nhập vào Customers.asmx trong trường tên (Name field) của hộp thoại Add New Item (xem Hình 17.2). Kích Open để tiếp tục. VS .NET thêm một file với tên Customers.asmx tới dự án của bạn.
Hình 17.2: việc thêm một dịch vụ Mạng mới
Chọn View ¾ Code để xem Mã C# trong file Customers.asmx.cs . Danh sách 17.1 trình bày file ví dụ Customers.asmx.cs. Danh sách 17.1: Customers.asmx.cs using System; using System.Collections; using System.ComponentModel; using System.Data;
using System.Diagnostics; using System.Web; using System.Web.Services; namespace NorthwindWebService { /// <summary>
/// Summary description for Customers. /// </summary>
///
[WebService(Namespace="http://DbProgramming/NorthwindWebService")] public class Customers : System.Web.Services.WebService
{
public Customers() {
//CODEGEN: lệnh gọi này được yêu cầu bởi ASP.NET Web Services Designer InitializeComponent();
}
#region Component Designer generated code //Required by the Web Services Designer private IContainer components = null; /// <summary>
/// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary>
private void InitializeComponent() {
}
/// <summary>
/// Clean up any resources being used. /// </summary>
protected override void Dispose(bool disposing) {
if(disposing && components != null) { components.Dispose(); } base.Dispose(disposing); } #endregion
// WEB SERVICE EXAMPLE
// The HelloWorld() example service returns the string Hello World // To build, uncomment the following lines then save and build the project // To test this web service, press F5
// [WebMethod]
// public string HelloWorld() // {
// return "Hello World"; // }
}
Chú ý : lớp Customers được dẫn xuất từ lớp System.Web.Services.WebService . Lớp WebService, chỉ định rằng những lớp Customers hình thành bộ phận của một dịch vụ Mạng
Gần cuối của Danh sách 1.1, bạn sẽ chú ý một phương thức có tên HelloWorld() đã được ngắt thành chú thích ở ngoài. mã này chỉ bạn cách để viết một phương thức sẽ được trưng bày bởi dịch vụ mạng của bạn. Bạn sẽ chú ý một dòng chứa [ WebMethod] được đặt trước phương thức, nó cho biết phương thức sẽ được trình bày bởi dịch vụ mạng. Tất nhiên, Vì phương thức HelloWorld() đã được chuyển thành chú thích, phương thức sẽ không được biên tập và do đó không thật sự được trình bày bởi dịch vụ mạng.
Thay thế phương thức ví dụ HelloWorld() trong mã của bạn với phương thức RetrieveCustomers() được trình bày trong Danh sách 17.2. RetrieveCustomers() kết nối tới cơ sở dữ liệu Northwind và trả về một Dataset chứa những hàng từ bảng những khách hàng. Bạn gởi một mệnh đề WHERE tới phương thức RetrieveCustomers() trong tham số whereClause; mệnh đề WHERE này rồi được sử dụng trong phát biểu SELECT để giới hạn những hàng được truy xuất từ bảng những khách hàng.
Danh sách 17.2: CUSTOMERSWEBSERVICE.CS [WebMethod]
public DataSet RetrieveCustomers(string whereClause) {
SqlConnection mySqlConnection =
new SqlConnection("server=localhost;database=Northwind;uid=sa;pwd=sa"); string selectString =
"SELECT CustomerID, CompanyName, Country "+ "FROM Customers "+
"WHERE "+ whereClause;
SqlCommand mySqlCommand = mySqlConnection.CreateCommand(); mySqlCommand.CommandText = selectString;
SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(); mySqlDataAdapter.SelectCommand = mySqlCommand; DataSet myDataSet = new DataSet();
mySqlConnection.Open();
mySqlDataAdapter.Fill(myDataSet, "Customers"); mySqlConnection.Close();
return myDataSet; }
Ghi chú Bạn sẽ cần thay đổi chuỗi được sử dụng để tạo ra đối tượng mySqlConnection trong mã của bạn để kết nối tới cơ sở dữ liệu Northwind của bạn.
Bởi vì mã sử dụng những lớp trong không gian tên System.Data.SqlClient, Bạn cũng sẽ cần thêm hàng sau đây gần đoạn đầu của file Customers.asmx.cs của bạn :
using System.Data.SqlClient;
Theo mặc định, một dịch vụ mạng sử dụng một namespace là http: // tempuri.org, và bạn cần phải thay đổi nó thành URL được dùng bởi tổ chức của bạn. Những ví dụ sau gán namespace cho dịch vụ mạng tới http: // DbProgramming/ NorthwindWebService:
[WebService(Namespace="http://DbProgramming/NorthwindWebService")] public class Customers : System.Web.Services.WebService
Chú ý bạn gán Namespace trong một dòng được đặt trước lớp Customers. Tiếp tục và thêm một hàng tương tự như cái trước đây vào mã của mình.
Thế là xong ! Bạn đã xây dựng dịch vụ mạng của bạn.