Web services ( Những dịch vụ web) đa phần là những API’s (Application programming interface: giao diện lập trình ứng dụng) mà có thể được truy cập trên một mạng như là Internet. Do vấn đề bảo mật Silverlight hạn chế nhiều tính năng quan trọng như là lưu vào đĩa. Tuy nhiện, bạn có thể lấy được những tính năng hạn chế này bằng cách thực hiện gọi web services thay vì thực hiện những tính năng này.
Bài Tip of the Day này sẽ hướng dẫn bạn thông qua từng bước bằng cách nào tạo một web service trong trang web của bạn và tôi sẽ hiển thị cho bạn thấy làm cách nào để tham khảo và thực hiện gọi API’s trong các web service đó.
Bước 1. Tạo một ứng dụng Silverlight Application Project sử dụng Visual Studio 2008. (Hãy xem Tip of the Day #2 để xem chi tiết).
Bước 2. Thêm một Web Service vào Web Site của bạn.
- Trong cửa sổ Solution Explorer của bạn , click chuột phải lên nút Web Site , chọn Add-> New Item…
- Có 3 mẫu cung cấp các chức năng cho Web Service :
- Silverlight-enabled WCF Service.
- WCF Service
- Web Service.
Chọn “Silverlight-enabled WCF Service” vì nó hỗ trợ cụ thể cho
Silverlight mà chúng ta sẽ khảo sát trong Tip of the Day tiếp theo của chúng ta.
- Thay đổi tên cho giống như “MyService.asmx” và click vào nút “Add”.
Bước 3. Thêm một Service Reference
- Rebuild lại Solution của bạn (Ctrl+Shift+B). Nếu bạn chuyển sang bước kế tiếp mà không rebuild bạn sẽ gặp hộp thoại sau:
- Trong cửa sổ solution explorer, click chuột phải lên nút Silverlight Application và chọn “Add Service Reference…”.
- Tiếp ngay sau sẽ xuất hiện hộp thoại là “Add Service Reference”. Click vào nút “Discover” để tìm web service của bạn.
- Thay đổi Namespace thành bất cứ gì bạn muốn cho reference này và click vào nút “OK”.
Vào lúc này , bạn đã thiết lập được web service của mình được tham khảo một cách thích đáng từ ứng dụng Silverlight của bạn.
Bước 4. Thực hiện gọi từ ứng dụng Silverlight của bạn vào web service của bạn.
- Trong cửa sổ Solution Explorer , từ trang web của bạn mở ra MyService1.svc. Mặc định sẽ có một phương thức được gọi là DoWork(). Điều này chưa làm nhiều, vì vậy hãy thêm một hàm mới gọi là HelloWorld()
mà nó sẽ trả về một chuỗi kí tự (string). Thực hiện chắc chắn bao gồm thuộc tính
[OperationContract] để cho phương thức này được hiển thị:
[OperationContract]
public string HelloWorld()
{
// Add your operation implementation here
return "Hello World";
}
- Trong ứng dụng Silverlight application project của bạn phía dưới Service
References, click chuột phải lên ServiceReference1 và chọn “Update Service
Reference”.
- Tiếp theo, hãy thực hiện gọi từ ứng dụng Silverlight của chúng ta đến hàm
HelloWorld() này. Đoạn code sau nằm trong trang Page.xaml.cs hiển thị cho bạn thấy bằng cách nào tạo một cuộc gọi bất đồng bộ đến HelloWorld().
public partial class Page : UserControl
{
public Page()
{
InitializeComponent();
ServiceReference1.MyService1Client client = new SilverlightApplication9.ServiceReference1.MyService1Client();
client.HelloWorldCompleted += new EventHandler<SilverlightApplication9.ServiceReference1.HelloWorldCompletedEventArgs>(client_HelloWorldCompleted);
client.HelloWorldAsync();
}
void client_HelloWorldCompleted(object sender, SilverlightApplication9.ServiceReference1.HelloWorldCompletedEventArgs e)
{
string message = e.Result;
}
}
Lưu ý là tất cả các phương thức gọi web service đều được thực hiện một cách bất đồng bộ.
Thank you,
--Mike Snow