Bài 14: Dịch vụ Web 
Lê Quang Lợi 
Email: 
[email protected] 
 [email protected] 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
Bài 14: Dịch vụ Web 
» Giới thiệu WCF 
» Kiến trúc WCF 
» Phát triển WCF 
» Sử dụng WCF 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
14.1: Dịch vụ Web 
» Windows Communication Foundation (WCF) 
» Thể hiện ứng dụng dịch vụ trên nền tảng Windows 
» Hỗ trợ các ứng dụng dịch vụ phân tán Service 
 Webservice:Remoting, COM+, Websercice, MobileService 
 WinService: SystemCall, Remoting  
» WCF được xây dựng cho các ứng dụng phân tán 
» WCF ra đời thay thế cho các ứng dụng thế hệ cũ 
» Tạo một nền tảng thống nhất cho tất cả thành phần 
DOTNet giao tiếp với nhau 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
14.2: Kiến trúc WCF 
» Contracts 
» Service Runtime 
» Messaging 
» Activation 
» and hosting 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
14.2: Kiến trúc WCF 
» Contracts: chứa các thành phần được xây dựng 
» ServiceContract, DataContract, Messaging 
» Service Runtime: Quản lý, thực thi các thành phần 
» Messaging: cơ chế truyền thông điệp giữa các ứng dụng 
» Activation and hosting: cơ chế đăng ký dịch vụ và triển 
khai dịch vụ trên nền tảng vật lý và hệ thống 
Chú ý: WCF có thể đồng thời chạy trên các giao thức khác nhau 
(TCP, HTTP, FTP, ) 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
14.2.1 Các thành phần WCF 
» EndPoint : Điểm truy nhập thông tin cho phép 
» Client và server giao tiếp với nhau. 
» ServiceHost: Thể hiện một ứng dụng dịch vụ. Mỗi một kết 
nối tạo ra một endpoint 
» DataContact: Đối tượng gói dữ liệu truyền trên mạng 
» Message và Channel: Các thông tin được truyền qua SOAP 
» WCFClient : Ứng dụng kết nối với WCF (winform, web, ) 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
EndPoint 
» Điểm giao tiếp: tồn tại cả Server và Client 
 Address: thể hiện địa chỉ của Endpoint (ip:port) 
 Contact: Các đối tượng thao tác (trao đổi dữ liệu) 
 Binding: Thể hiện các giao thức/các cổng khác nhau 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
Service Host 
» ServiceHost: Dịch vụ phía server 
» Thành phần Service 
 Address 
 Binding Protocols 
 Các EndPoints 
» Chạy trên: IIS 
 winXP, vista, win7, server 2003, server 2008 
Service3 
Service 
Service1 Service2 
Service2 
Services 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
Kiến trúc WCF 
Service Contract 
hàm, hoạt 
động cần trao 
đổi 
Các Quy trình 
WCF cần thực 
thi 
Data Contract 
Định nghĩa cấu 
trúc cần trao đổi 
dữ liệu 
Cấu trú dữ liệu 
cần sử dụng 
Message 
Contract 
Cấu trúc cơ chế 
gói 
Dựa trên SOAP 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
14.3 Xây dựng ứng dụng WCF 
» Tạo service với ServiceContract 
» Mô tả các hàm từ Interface Service 
» Cài đặt các hàm trên đối tượng servicecontract 
» Cài đặt đối tượng DataContract 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
14.3.1 Service Interface 
using System.ServiceModel; 
[ServiceContract] 
public interface ICalculate{ 
[OperationContract] 
double Add( double a, double b); 
 [OperationContract] 
double Sub(double a, double b); 
} 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
14.3.2 Cài đặt Service 
 public class SimpleCalculator : ISimpleCalculator { 
 public int Add (int num1, int num2) { 
 return num1 + num2; 
 } 
 Public double Sub (double a, double b){ 
 return a-b; 
 } 
} 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
14.3.3 Xây dựng DataContract 
 [DataContract] 
public class ComplexNumber { 
 [DataMember] 
 public double Real = 0.0D; 
 [DataMember] 
 public double Imaginary = 0.0D; 
 public ComplexNumber (double r, double i) { 
 this.Real = r; 
 this.Imaginary = i; 
 } 
} 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
14.4 Gọi dịch vụ WCF 
<endpoint address="" contract="HelloWorld, 
IndigoConfig, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" 
binding="basicHttpBinding" /> 
Cấu hình cho phép chạy ứng dụng WCF triên IIS 
Lê Quang Lợi: 
[email protected] Môn học : Công nghệ WEB (ASP.NET) CNPM-CNTT-ĐHSPKT HY 
14.4 Gọi dịch vụ WCF 
» Đăng ký sử dụng dịch vụ 
 Tạo ứng dụng sử dụng 
 Thêm web Reference trong ứng dụng 
 Đặt tên cho Reference 
» Sử dụng dịch vụ phía Client 
 CalculatorClient wcfClient = new CalculatorClient(); 
 Console.WriteLine(wcfClient.Add(4, 6)); 
 wcfClient.Close();