Lập trình với C#: Chương 1 (Phần VI)

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_StartOnSession_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.