Tạo các ứng dụng .NET bằng C#
C# có thể dùng để tạo các ứng dụng console: các ứng dụng thuần văn bản chạy trên DOS
window. Hầu như bạn chỉ tạo các ứng dụng console khi cần kiểm tra các thư viện lớp,
hoặc cho các tiến trình daemon Unix/Linux. Tât nhiên, bạn cũng có thể dùng C# để tạo
các ứng dụng dùng cho các công nghệ tương thích .NET. Trong phần này, chúng ta xem
qua về các kiểu ứng dụng khác nhau có thể tạo ra bằng C#.
Tạ
o các ứng dụng ASP.NET
ASP là một công nghệ của Microsoft dùng để tạo các trang web có nội dung động. Một
trang ASP thực chất là một file HTML có nhúng các khối server-side VBScript hay
JavaScript. Khi một trình duyệt khách yêu cầu một trang ASP page, web server sẽ sinh ra
mã HTML, xử lí các server-side script khi chúng đến. Thường thì các script sẽ truy cập
vào một cơ sở dữ liệu để lấy dữ liệu, và biểu diễn trên trang HTML. ASP là cách đơn
giản nhất để tạo các ứng dụng browser-based.
ASP tất nhiên cũng có một vài hạn ch
ế. Trước tiên, các trang ASP thỉnh thoảng trở nên
rất chậm bởi vì mã server-side được thông dịch thay vì đựơc biên dịch. Thứ hai, các file
ASP khó bảo trì bởi vì chúng không có cấu trúc; mã server-side ASP và HTML được trộn
lẫn với nhau. Thứ ba, ASP đôi khi kho phát triển bởi nó không quan tâm đến bẫy lỗi và
kiểm tra kiểu. Cụ thể, nếu bạn dùng VBScript và muốn bẫy lỗi trên các trang của bạn,
bạn phải dung câu lệnh On Error Resume Next, và cho phép tất cả các thành phần gọi
thông qua một Err.Number để ch
ắc rằng tất cả đều tốt.
ASP.NET là một phiên bản mới của ASP đã cải tiến rất nhiều các thiếu xót của nó. Nó
không chỉ thay thế ASP; hơn thế, các trang ASP.NET có thể sống chung với các ứng
dụng ASP trên cùng một máy chủ. Tất nhiên bạn có thể lập trình ASP.NET với C#!
Mặt dù các chương (14-16) sẽ bàn kĩ về ASP.NET, nhưng chúng ta cũng nói qua một vài
đặc tính quan trọng của nó.
Các đặc tính của ASP.NET
Trướ
c tiên, và có lẽ là quan trọng nhất, các trang ASP.NET là các trang có cấu trúc. Có
nghĩa là mỗi trang là thực tế là một lớp được thừa kế từ lớp .NET System.Web.UI.Page,
và có thể ghi đè một tập các phương thức sẽ dùng trong thời gian sống của trang web
(bạn hãy tưởng tượng rằng nhữn sự kiện này như là anh em bà con với các sự kiện
OnApplication_Start và OnSession_Start trong file global.asa của ASP cũ.) Bởi vì bạn có
thể chuyển các thao tác của một trang thành các sự kiện sáng nghĩa hơ
n, chính vì thể mà
các tramg ASP.NET dễ hiểu hơn.
Một điểm mạnh khác là các trang ASP.NET có thể được tạo trong VS.NET, cùng chung
môi trường với các thành phần luận lí và dữ liệu sẽ được dùng trong các trang web này.
Một nhóm đề án VS.NET, hoặc solution, chứa tất cả các file liên quan đển một ứng
dụng. Hơn thế nữa bạn có thể bẫy lỗi các trang ASP của bạn ngay trong trình thiết kế;
trước đây, thật là khó khăn để có thể cấu hình InterDev và các đề án web server để thực
hiệ
n bẫy lỗi.
Rõ ràng, đặc tính ASP.NET's code-behind giúp các bạn có thể dễ dàng cấu trúc một trang
web. ASP.NET cho phép bạn tách biệt các chức năng server-side của trang thành một
lớp, biên dịch lớp đó thành một DLL, và đặt DLL đó vào một thư mục bên dưới phần
HTML. Một code-behind chi phối đỉnh của một trang web tương đương với file DLL của
nó. Khi một trình duyệt yêu cầu trang, web server phát ra các sự kiện trong lớp của page's
code-behind DLL.
Cuối cùng không kém phần quan trọng, ASP.NET thật s
ự đáng chú ý với khả năng tăng
cường sự thực thi. Ngược lại với các trang ASP được thông dịch cho mỗi yêu cầu, web
server lưu giữ lại các trang ASP.NET sau quá trình biên dịch. Nghĩa là các yêu cầu sau
của một trang ASP.NET sẽ thực thi nhanh hơn trang đầu tiên.
ASP.NET dễ tạo các trang hơn bởi vì nó được chiếu bởi trình duyệt, bạnc có thể sử dụng
một môi trường mạng intranet. Theo kinh nghiệm truyền thống thì một ứ
ng dụng form-
based thường là tốt hơn một user interface, nhưng cũng khó bảo trì hơn vì nó chạy trên
nhiều máy khác nhau.
Với sự ra đời của Internet Explorer 5 và sự thực thi mơ hồ của Navigator 6, tất nhiên các
đặc tính của ứng dụng form-based bị che mờ. IE 5's hỗ trợ nhất quán và mạnh
mẽconsistent cho DHTML cho phép các nhà lập trình tạo các ứng dụng web-based đẹp là
lớn hơn. Tất nhiên, các ứng dụng này bắt buộc phải theo chuẩn của IE và không đượ
c hỗ
trợ bởi Navigator. Trong nhiều lĩnh vực công nghiệp, chuẩn này đã trở nên phổ biến.
Web Forms
Để dễ dàng cho việc tạo các trang có cấu truc, Visual Studio .NET cung cấp Web Forms.
Chúng cho phép bạn tạo các trang ASP.NET sinh động như cách mà VB 6 hay C++
Builder windows đã làm; nó cách khác, bằng cách kéo các controls từ toolbox vào form,
sau đó sắp xếp cho đẹp, điền mã quản lí sự kiện thích hợp vào control đó. Khi bạn dung
C# để tạo các Web Form, bạn đang tạo một lớp C# được thừa k
ế từ lớp Page base, và một
trang ASP được chỉ định như là code-behind. Tất nhiên, không bắt buộc phải dùng C# để
tạo một Web Form; bạn có thể dùng VB.NET hoặc một ngôn ngữ biết .NET khác.
In the past, the difficulty of web development has discouraged some teams from
attempting it. To succeed in web development, you had to know so many different
technologies, such as VBScript, ASP, DHTML, JavaScript, and so on. By applying the
Form concepts to web pages, Web Forms promise to make web development easier. Only
time will tell, however, how successful Web Forms and Web Controls (which we'll look
at next) will be at insulating the developer from the complexities of web design.
Web Controls
Các control thường được cư trú trên một Web Form không phải là các ActiveX control.
Hơn nữa, chúng là XML tags trong ASP namespace và browser có thể chuyển sang
HTML và client-side script khi một trang được yêu cầu. Đặc biệt hơn, web server có thể
các điều khiển server-side control theo nhiều cách khác nhau, sinh ra sự biến đổi phù hợp
với các yêu cầu của các web browser riêng biệt. Điều này có nghĩa là sẽ dễ dàng viết các
giao diện người dùng tinh vi cho các trang web, đừng bận tâm đến vấn đề tương thích
trình duy
ệt web– bởi vì Web Forms sẽ làm điều đó cho bạn.
Bạnc có thể dùng C# hay VB.NET để mở rộng hộp công cụ Web Form. Việc tạo một
server-side control mới đơn giản là thực thi lớp .NET
System.Web.UI.WebControls.WebControl.
Web Services
Ngày nay, các trang HTML là nguyên nhân của hầu hết các xung đột trên World Wide
Web. Với XML, các máy vi tính có một định dạng device-independent để dùng cho việc
truyền thông với các máy khác trên mạng Web. Trong tương lại, các máy tính có thể sẽ
dùng Web và XML để trao đổi thông tin hơn là dùng các line chuyên dụng và theo những
định dạ
ng riêng như EDI (Electronic Data Interchange). Các Web Service được thiết
kế cho một web hướng dịch vụ, trong đó các máy tính ở xa cung cấp cho nhau các thông
tin động có thể phân tích vàtái định dạng, trước khi trao lại cho người dùng. Một Web
Service là cách đơn giản nhất để một máy tính có thể cung cấp thông tin cho các máy tính
khác trên Web dưới định dạng XML.
Về mặt kĩ thuật, một Web Service trong .NET là một trang ASP.NET theo định dạng
XML thay vì theo định dạng HTML để yêu cầu các client. Các trang này có một code-
behind DLL chứa một lớ
p xuất phát từ lớp WebService. VS.NET IDE cung cấp một cơ
chế để tiện cho việc phát triển Web Service.
Có hai lí do chính để một tổ chức chọn Web Services. Lí do thứ nhất là bởi vì chúng đáng
tin cậy trên HTTP, Web Services có thể dùng các mạng có sẵn (the Web) như một môi
trường cho việc truyền thông. Một lí do khác là bởi vì các Web Service dùng XML, một
định dạng dữ liệu tự mô tả, mang tính phổ biến, và độc lập nền.
Tạo các Windows Form
Mặc dù C#và.NET được thiết kế để phát triển web, nhưng chúng vẫn hỗ trợ mạnh mẽ
cho cái gọi là ứng dụng "fat client", các ứng dụng có thể được cài đặt trên một máy người
dùng cuối. Hỗ trợ này gọi là Windows Forms.
Một Windows Form là câu trả lời của .NET cho VB 6 Form. Dùng để thiết kế một giao
diên window sinh động, bạn chỉ đơn giản kéo các control từ vào trên Windows Form. Để
xác định cách xử của window, bạn viết các thủ
tục quản lí sự kiện cho form
controls. Một đề án Windows Form được dịch thành một EXE phải được cài đặt trong
một môi trường ở máy tính người dùng cuối. Giống như các kiểu đề án .NET khác, đề án
Windows Form được hỗ trợ cho cả VB.NET và C#. Chúng ta sẽ nói kĩ về Windows
Forms trong chương 7.
Windows Controls
Mặc dù Web Forms và Windows Forms được phát triển theo cùng một cách, bạn dùng
các loại khác nhau của controls để định vị chúng. Web Forms dùng Web Controls, và
Windows Forms dùng Windows Controls.
Một Windows Control là một ActiveX control. Đằng sau sự thự
c thi của một Window
control, là sự biên dich sang một DLL để có thể cài đặt trên máy khách. Thật vậy, .NET
SDK cung cấp một tiện ích dùng để tạo một vỏ bọc cho các ActiveX control, vì thể chúng
có thể được đặt trong Windows Forms. Giống trường hợp này các Web Control,
Windows Control được tạo thành từ một lớp khác System.Windows.Forms.Control.
Windows Services
Một Windows Service là một chương trình được thiết kế để chạy trên nền Windows
NT/2000/XP (không hỗ trợ trên Windows 9x). Các dịch vụ này rất hữu ích khi bạn muốn
một chương trình có thể chạy liên tục và sẵn sàng đáp ứng các sự kiện mà không cần
người dùng phải khởi động. Ví dụ như một World Wide Web Service ở trên các web
server luôn lắng nghe các yêu cầu từ trình khách.
Thật dễ dàng để viết các dịch vụ trong C#. Với thư viện lớp cơ sở .NET Framework sẵn
có trong không gian tên System.ServiceProcess namespace chuyên dùng để tổ chức các
tác vụ boilerplate kết hợp với các dịch vụ, ngoài ra, Visual Studio .NET cho phép bạn tạo
mộ
t đề án C# Windows Service, với các mã nguồn cơ bản ban đầu. Chúng ta sẽ khám
cách viết một C# Windows Services trong chương 22.
. ASP .NET với C#!
Mặt dù các chương (14-16) sẽ bàn kĩ về ASP .NET, nhưng chúng ta cũng nói qua một vài
đặc tính quan trọng của nó.
Các đặc tính của ASP .NET. ASP .NET dễ hiểu hơn.
Một điểm mạnh khác là các trang ASP .NET có thể được tạo trong VS .NET, cùng chung
môi trường với các thành phần luận lí và dữ liệu