WINDOWS SERVICES là gì ?
Trong mơi trường Windows ,cĩ rất nhiều ứng dụng thực thi khơng cần bất kỳ một giao tiếp nào với người dùng ,hay yêu cầu người dùng đăng nhập vào ứng dụng đĩ,để thực thi các ứng dụng này.Ta cĩ thể nhận thấy tất cả các ứng dụng đang thực thi trong dịch vu (Service).
Một dịch vụ (Service) là một chương trình ,mà chúng tự động thực hiện hay khơỉ động khi hệ điều hành được nạp lên và khơng giao tiếp với người dùng,chúng hoạt động liên tục 24/24 cho đến khi hệ điều hành cĩ thể khởi động lại,cứ tiếp tục như vậy cho đến khi ta khơng muốn sử dụng chúng.
Tạo Một Ứng dụng Windows Service
Sử dụng VS.Net ,ta dễ dàng tạo một ứng dụng Windows Services,bằng cách tạo một ứng dụng để cài đặt như một dịch vụ trong mơi trường Windows.
Khi xây dựng một ứng dụng Windows Service ,ta cần quan tâm đến các điều khiển trong khi dịch vụ này được khơỉ động và được dừng lại ,những lệnh nào gưỉ đến cho dịch vụ ,những hành động nào sẽ thực thi ,những lệnh nào sẽ nhận ,điều được khai báo trong những sự kiện của Service ,chẳng hạn như sự kiện OnStart hay OnStop.
Khi thực hiện một đoạn mã trong sự kiện OnStart ,ta ra lệnh yêu cầu ứng dụng thực hiện các nhiệm vụ nào khi ứng dụng khơỉ tạo ,điều này giống như một chương trình chính trong điều khiển ứng dụng ,tuy nhiên ta cần cĩ nhiều nhiệm vụ cần phải thực thi khi service được khơỉ tạo.
Trong sự kiện OnStop,cũng tương tự như trường hợp OnStart.Khi người dùng ngừng Service ,ta cĩ thể viết đoạn mã thực thi một số nhiệm void ,bên cạnh đĩ ta cĩ thể gửi thơng báo ra hệ thống.
Ta cũng cĩ thể chỉ ra rằng ,khi người dùng tạm dừng(Pause) hay dừng (Stop) một Service,ứng với quyền hạn tài khoản hay User nào đĩ,để tránh trường hợp một user khác cĩ thể thực hiện quá trình dừng hay tạm dừng lại các services đang thực hiện ngồi thẫm quyền của User hiện hành .
Để tạo một ứng dụng Service ,bằng cách : -Khơỉ động Microsoft Visual Studio .NET
-Chọn Create New Project ,chọn Visual C# Projects ,chọn Windows service ,như sau:
Tạo Một Ứng Dụng Windows Service
Với Project vừa tạo ,ta sẽ cĩ một tập tin Service1.cs .Kích hoạt trình soạn mã ta thấy rằng lớp Service1 này được tạo ra từ lớp ServiceBase ,sử dụng lớp này ta cĩ thể định nghiã các nhiệm void trong các lệnh
Start,Stop,Pause,Continue ,cũng như khi hệ thống kết thúc.Lớp cơ bản này được gọi khi dịch vụ bắt đầu khởi động và kích hoạt đến sự kiện
OnStart,tương tự như vậy cho các sự kiện OnStop,OnPause,OnContinue bằng khai báo :
publicclass Service1 : System.ServiceProcess.ServiceBase
{ }
Với lớp này,ta cĩ thể sử dụng các phương thức để thực hiện các nhiệm void trong qúa trình Start ,Stop :
protectedoverridevoid OnStart(string[] args)
{
. . . .
}
protectedoverridevoid OnStop()
{
. . . . . . . .
}
Khi sử dụng OnContinue hay OnPause ,phải chắc chắn rằng thuộc tính ServiceBaseCanPauseAndContinue đang cĩ giá trị là true.
Cài Đặt Ứng Dụng Service :
Ứng dụng dịch vụ khơng thực thi từ Command Line hay IDE ,chúng phải được cài đặt trong mơi trường windows mà chúng cĩ thể kiễm sốt . Trước khi cài đặt dịch vụ ta cần phải cài đặt thuộc tính của dịch vụ, ta cần gán lớp Installer trong ứng dụng Windows Service ,lớp này rất cần thiết khi thi hành ứng dụng dịch vụ cuả ta.Để thêm đối tượng cài đặt vào trong ứng dụng,bằng cách nhắp phải trên
Servicé trong ứng dụng Trong ứng dụng WindowsService cuả ta chọn Add Installer.
Một lớp gọi là ProjectInstaller sẽ tự động thêm vào trong ứng dụng ,hai thành phần của lớp này gồm ServiceProcessInstaller1 và ServiceInstaller1 như hình :
Tạo Installer
Gán thuộc tính Account cuả ServiceProcessInstaller1 với gía trị LocalSystem,kế tiếp thay đổi một số thuộc tính cuả ServiceInstaller1 ,với thuộc tính ServiceName là tên Service sẽ dược thực thi,và StartType được gán giá trị Manual.(hoặc Automatic).
Để cài đặt dịch vụ ta phải thực thi tập tin InstallUtil.exe bằng Visual Studio .NET Command Prompt trong Microsoft Visual Studio .NET :
InstallUtil Tên Service . exe
Để thi hành Service ,ta khởi động Service bằng phát biểu sau : Net Start Ten Service
Đối với Win2000 ,dùng ControlPanel | Administrative Tools | Services ta cũng khởi động được WindowsService.
PHẦN 6 : WEBSERVICE WebService là gì ?
Một dịch vụ Web [Web service] là một mẫu lơgic ứng dụng được phơ diễn cơng khai và sẵn cĩ đối với mọi hệ thống đa dạng qua việc dùng các chuẩn Internet chung,chẳng hạn như HTTP,XML,và SOAP.Về cơ bản ,dịch vụ Web là mã mà ta phơ diễn trong một ứng dụng cĩ thể được truy cập cục bộ ,qua một intranet ,hay qua internet.Ta cĩ thể cho phép bất kỳ hệ khách nào truy cập dịch vụ Web của ta,hoặc hạn chế khả năng truy cập cho chỉ các hệ khách đã được thẫm định quyền.
Trong những năm qua,các lập trình viên Microsoft Windows đã quen sữ dụng COM (Component Object Model) và vai trị của nĩ trong việc tạo những thành phần gắn kết tạo nên phần mềm.COM cho phép lập trình viên tạo những thành phần tự mơ tả,độc lập ngơn ngữ và cĩ thể kết hợp cùng nhau trong hệ thống lớn,và COM cĩ thể sữ dụng để hình thành cơ sở sữ dụng mềm dẻo cho những ứng dụng phân tán.
Những hệ thống dạng component khác cũng được sữ dụng rộng rãi như CORBA và RMI của Java.
Mặc dù COM rất hữu ích nhưng nĩ cĩ một vài khuyết điễm.Trước hết,việc viết những thành phần COM cĩ thể khĩ,yêu cầu bạn phải cĩ kiến thức sâu theo bí quyết riêng của từng nguời lập trình,tài liệu khơng rõ ràng.Thứ hai,COM sữ dụng giao thức nhi phân để giao tiếp giữa những thành phần đối tượng ở xa và khiến cho khĩ sữ dụng thành phần COM ở bất kỳ nơi đâu khác ngồi mơi trường Microsoft Windows ra.Việc tích hợp một hệ thống COM với những thành phần sử dụng CORBA hoặc RMI khơng đơn giản chút nào.
Dịch vụ Web giúp đở và giải quyết vấn đề theo hai cách.
Trước hết,ta khơng cần nhiều kiến thức chuyên dụng để viết dịch vụ Web,và rất dễ để cung cấp một giao diện Dịch vụ Web đối với đoạn mã hiện đang tồn tại trước đây.Lợi thế thứ hai là các dịch vụ Web sữ dụng chuẩn dữ liệu và những giao thức internet phục vụ cho việc giao tiếp, vì vậy dễ dàng hơn nhiều khi xây dựng những hệ thống phân tán khơng đồng nhất.
Một dịch vụ Web sẽ phơ diễn một giao diện để triệu gọi một phương thức,hàm trên một hệ thống,từ một hệ thống khác.Để thực hiện lệnh gọi đến phương thức này,ta dùng một trong ba giao thức Internet :HTTP GET, HTTP POST ,hoặc SOAP.Sau khi triệu gọi phương thức của Web service,mọi dữ liệu cần được trả về đều được nối tiếp hố dưới dạng XML trong thân của thơng điệp SOAP.Mơ hình trao đổi dữ liệu này cho phép mọi đối tượng cĩ thể được nối tiếp hố dưới dạng XML-các chuổi ,các số nguyên, các mảng, ADO.NET Datasets, hoặc thậm chí các đối tượng tùy biến- được trao đỗi giữa bên cung cấp và bên tiêu thụ.
Mơ Hình WebServices
CÁC CHUẨN CHUNG
Do khĩ khăn trong việc trao đổi dữ liệu giữa một hệ thống gốc Java với một hệ thống gốc COM vào thời tiền Web Service.Cơ chế gom chuyển kiểu dữ liệu [data type marshaling] và những điễm khơng tương thích giữa hai hệ thống đã khiến cho tiến trình đĩ gặp khơng ít rắc rối khi thực thi.Do các Web Service dựa vào một loạt các chuẩn chung,chẳng hạn như HTTP,XML,và SOAP ,nên cơng việc trao đổi dữ liệu trở nên dễ dàng. Nhờ các chuẩn chung,ta bảo đảm mọi hệ thống đa dạng cĩ thể trao đổi dữ liệu dễ dàng và suơn sẽ.Sau đây là phần mơ tả khái quát về năm cơng nghệ mà các dịch vụ Web vận dụng : XML, SOAP, WSDL, DISCO và UDDI.
XML
XML (Extensible Markup Language ) đã trở thành một chuẩn Internet được chấp nhận để mơ tả và trao đổi dữ liệu,giống như HTML đã trở thành một chuẩn để hiển thị thơng tin cách đây nhiều năm.Sau hậu trường,các Web service dùng XML làm dạng thức truyền dữ liệu.Khi triệu gọi một phương thức của Web Service ,dữ liệu được trả về ,dẫu nĩ là một chuỗi,một số nguyên,một Dataset ,hoặc một đối tượng tùy biến, sẽ được nối tiếp hĩa dưới dạng XML và được gửi trả về cho bên tiêu thụ.
SOAP
SOAP (Simple Object Access Protocol) là giao thức truy cập đối tượng đơn giản cung cấp cách thức triệu gọi các phương thức thừ xa thơng qua XML và HTTP.Các Web Service cĩ thề dùng SOAP làm bên truyền tải cho dữ liệu XML đang được trao đổi giữa bên cung cấp và bên tiêu thụ dịch vụ Web. Nếu một phương thức dịch vụ Web mong đợi một đối tượng phức hợp, chẳng hạn như một đối tượng tùy biến định nghĩa một sản phẫm cĩ các tính chất mơ tả nĩ,dưới dạng một phần đầu vào của nĩ,một thơng điệp SOAP được yêu cầu để mang tải đối tượng đĩ, được nối tiếp hố dưới dạng XML trong thân thơng điệp SOAP.
SVTH : Lê Phước Hùng Trang 39
WSDL (Web Service Description Language) là một phần mơ tả gốc XML của một dịch vụ Web.Thực tế,WSDL là một giao ước mà bên cung cấp và bên tiêu thụ đồng ý.WSDL mơ tả các giao diện của một dịch vụ Web ,và cách các thơng điệp sẽ được định dạng khi dùng các giao thức HTTP GET, HTTP POST,hoặc SOAP.
DISCO
DISCO (Web Service Discovery) là tiến trình định vị (khám phá ) tập tin WSDL kết hợp với một dịch vụ Web.Tiến trình khám phá [discovery] định danh một dịch vụ Web và vị trí của nĩ.Tiến trình khám phá chủ yếu được dùng bới các cung cụ , như Visual Studio .NET ,để định vị một tập tin WSDL ,và xây dựng các lớp proxy client để cĩ thể triệu gọi các phương thức dịch vụ Web từ xa.
UDDI
UDDI (Universal Description ,Discovery ,and Integration ) là một cơ chế giúp các nhà cung cấp Web Service quảng cáo sự tồn tại của những dịch vụ mà họ đưa ra, và cho phép trình khách client định vị những dịch vụ Web mà chương trình quan tâm.
CUNG VÀ CẦU-Các Bên Cung Cấp và Các Bên Tiêu Thụ Dịch Vụ Web
Các Web Service làm việc bằng cách trao đỗi dữ liệu giữa hai thực thể chính :bên cung cấp dịch vụ Web và bên tiêu thụ dịch vụ Web.Bên cung cấp dịch vụ Web là một ứng dụng phơ diễn một vài phương thức cơng cơng (public) ,mà các ứng dụng khác –bên tiêu thụ dịch vụ Web- sẽ truy cập.Bên cung cấp phơ diễn WSDL mà bên tiêu thụ phải tuân thủ để dùng dịch vụ Web.
Bên tiêu thụ phát hiện dịch vụ Web, bằng cách tìm nĩ trong sổ đăng ký UDDI,hoặc một biện pháp khám phá khác.Sau khi bên tiêu thụ hiểu rõ dịch vụ Web,thơng qua tư liệu WSDL ,một phương thức cĩ thể được triệu gọi ,dùng bất kỳ một trong ba giao thức cĩ thể chấp nhận ,HTTP GET ,HTTP POST, hoặc SOAP. Khi triệu gọi phương thức Web Service bên cung cấp trả về dữ liệu cho bên tiêu thụ dưới dạng một tư liệu XML , như một đáp ứng Web ,hoặc được nhúng trong thơng điệp SOAP.
Sau Đây là sơ đồ giao tiếp với WebServices và Client:
S
Universal Discovery DesCription and Intergration (UDDI)
Web Services Description Language
Retrieve the Web Search Services Description UDDI for
WebServices
Invoke The WebServices
Sơ đồ giao tiếp với WebServices và Client Web Service Namespaces
Dịch vụ Web được hổ trợ bởi một số khơng gian tên namespace trong .NET Framework.
Khơng gian tên Mơ tả
System.Web.Services Chứa các lớp dùng Tạo và triệu gọi WebService
System.Web.Services.Description Chứa các lớp cho phép mơ tả web Service theo WSDL.
System.Web.Services.Discovery Chứa các lớp cho phép truy tìm dịch Vụ Web từ trình khách
System.Web.Services.Protocols Chứa các lớp định nghĩa giao thức truy Cập Web Service.
Khơng gian tên System::Web::Services chứa các lớp bạn cĩ thể dùng để tạo và sử dụng các dịch vụ Web.Đây khơng phải là một khơng gian tên lớp,ba lớp chính được liệt kê trong bảng sau :
Lớp Mơ tả
WebMethod Thuộc tính đánh dấu một phương thức cho phép triệu gọi từ xa.
WebService Một lớp cơ sở tuỳ chọn dùng để xây dựng Web Service.
WebServiceAttribute Một thuộc tính đựơc sữ dụng để Thêm thơng tin bổ sung vào một Lớp cĩ cài dịch vụ Web.
Các lớp dịch vụ Web thường bắt nguồn từ WebService, nhưng điều này chỉ cần thiết khi ta muốn truy cập đến các đối tượng Microsoft ASP.NET được liệt kê trong bảng dưới đây :
Thuộc tính Mơ tả Application Context Server Session User
-Cung cấp truy xuất đến các biến được lưu trong đối tượng Application bên trong ASP.NET.Đây là một thuộc tính tắt của Context.Application.
-Cung cấp truy xuất đến tất cả dữ liệu được cung cấp bên trong ASP.NET.Bao gồm các đối tượng Request và Response,đối tượng Cache ,và các thuộc tính khác của các yêu cầu.
-Cung cấp truy xuất đến đối tượng Server.Đối tượng naỳ được sử dụng để truy vấn Web Server cĩ đặt Web Service,hoặc chuyển mã các thơng điệp.(Ví dụ,để chuyển một một chuỗi sang một câu QueryString).Đây là thuộc tính tắt của Context.Server.
-Cung cấp truy xuất đến các biến lưu trong đối tượng Session bên trong ASP.NET.Đây là thuộc tính tắt của Context.Session.
-Trả về một đối tượng ASP.NET đại diện cho người dùng hiện hành.Đối tượng này cĩ thể sử dụng cho các mục đích chứng thực.
Bảng thuộc tính của WebService
CÁC BƯỚC CƠ BẢN XÂY DỰNG MỘT DỊCH VỤ WEB
Dưới đây là các bước để xây dựng một dịch vụ web :
1.Xây dựng một lớp public kế thừa từ System.Web.Services.WebService
2.Tạo một phương thức public
4.Tạo một tập tin dịch vụ web dùng đuơi .asmx (ví dụ MyWebService.asmx)
5.Bổ sung thuộc tính @Webservice vào tập tin .asmx và thừa kế từ lớp được định nghĩa trong bước 1 .
Mã sau đây nêu một lớp cơ bản diễn một phương pháp ,phương pháp Add : Using System ;
Using System.Web ; Namespace Test
{
public class TestService { public int Add(int a,int b) { return (a+b);
} } }
Từ lớp cơ bản trên dưạ vaị các bước trên ta được một WebService như sau : Using System ;
Using System.Web ; Namespace Test
{
[WebService(Decription=”Đây là Dịch vụ Web Cơ bản “)] public class TestService : System.Web.Service.WebService { [WebMethod(Decription =”Cộng 2 số”)]
public int Add(int a,int b) { return (a+b);
} } }
Các phương pháp mà ta đang phơ diễn dưới dạng các phương pháp WebService(dùng thuộc tính WebMethod) phải được khai báo dưới dạng public
Và phải nằm trong một lớp public . Tạo một Webservice đơn giản
Với Visual Studio .NET ta dễ dàng tạo một ứng dụng Webservice bằng cách thêm một project WebService vào solution,hoặc tạo mới một solution chứa một project Webservice.
Tạo một project WebService mới Tạo Project
Trong Visual Studio .NET , chọn New | New Project ,Chọn ASP.NET WebService.Đặt tên cho Webservice.
Sau khi project được tạo ,một số file được tạo sẳn trong project :
Web.config :
Đây là file để trình thơng dịch ASP.NET lấy các thơng số cấu hình của WebService .Người lập trình cĩ thể sử dụng nĩ để thay đổi các thơng số cho các thư mục aỏ
( virtual directory ) được sử dụng cho webservice này.
Global.asax :
Đây là file được sử dụng bơì trình thơng dịch ASP.NET để bắt các sự kiện.Người lập trình cĩ thể sử dụng file này để viết code được thực hiện khi các sự kiện quan trọng xảy ra trên ứng dụng Web.
Đây là file DISCO của WebService.Nĩ cho phép client phát hiện ra các webservice đặt trong thư mục ảo.File DISCO được tạo trong project này là file DISCO động.
Service1.asmx :
Đây là file mà người lập trình phải thay đổi để tạo chức năng cho web service.
XÂY DỰNG MỘT BÊN TIÊU THỤ CƠ BẢN (WebService Client)
Ứng dụng tiêu thụ cĩ thể truy cập dịch vụ Web theo một trong ba giao thức ,HTTP GET ,HTTP POST ,hoặc SOAP .Mỗi giao thức cĩ các ưu và nhược điểm được liệt kê dưới đây :
Giao thức Các Ưu điểm Các nhược điểm
HTTP GET Dễ thực thi -Mọi giá trị nhập sẽ được Chuyền vào chuỗi
Truy vấn.Khơng thể trao đổi các kiểu dữ liệu phức hợp.
HTTP POST Dễ thực thi -Khơng thể trao đổi các kiểu dữ liệu Phức hợp.
SOAP Cĩ thể trao đỗi các kiểu -Dùng nhiều băng thơng hơn. Dữ liệu phức hợp.
Các Web Service cho phép bên tiêu thụ cĩ bất kỳ kiểu giao diện người dùng
nào cần thiết ,bao gồm một ứng dụng Web hoặc để bàn [destop] (windows).Dịch vụ Web sẽ được truy cập bằng mã, và sau đĩ dữ liệu trả về cĩ thể được định dạng và xuất hiện khi thích hợp.
Để Xây dựng một bên tiêu thụ truy cập dịch vụ web dùng http GET hoặc http POST ,ta chỉ bổ sung một thẻ gán <form> vào một trang Web html ,dùng Get hoặc Post làm Method và URL dịch vu web làm Action :