- Bộ phân tích tập (Collection analysis module) hoạt động dựa vào các thuộc tính của bộ
GIỚI THIỆU CÔNG NGHỆ ASP.NET VÀ NET FRAMEWORK
1.3 Công nghệ ASP.NET có gì mới so với ASP 3.0 ?
ASP là một mơ hình tối ưu và dễ sử dụng với nhiều ứng dụng Web trên nền Windows, chúng cho phép xây dựng một ứng dụng Web có quy mơ lớn. Tuy nhiên, nó có nhiều thiếu sót như mã khơng có cấu trúc rõ ràng, do mã ASP được viết chèn lẫn lộn với HTML. Chẳng hạn khi sử dụng các phát biểu include để chèn tập tin vào trang ASP dẫn đến vấn đề xáo trộn cấu trúc HTML và mã ASP của trang mà khai báo chèn.
Trang ASP được thơng dịch lại tồn bộ khi người sử dụng triệu gọi đến chúng. Điều này có nghĩa là trang ASP không thay đổi cấu trúc nhưng vẫn phải thông dịch lại mỗi khi người sử dụng triệu gọi. Ngoài ra ASP sử dụng đối tưọng ADO để kết nối nhiều loại cơ sở dữ liệu bao gồm các cơ sở dữ liệu thông dụng như: Microsoft Access, Microsoft SQL Server,… tính bảo mật của đối tượng ADO này chưa cao. Thêm vào đó, đối tượng ADO khơng thể kết
nối cơ sở dữ liệu có định dạng XML, trong khi XML đang trở thành một chuẩn dùng định dạng dữ liệu trong các ứng dụng Internet và mạng.
Trong trang ASP, sử dụng hai đối tượng Application và Session, nhưng có q nhiều vấn đề xảy ra trong q trình triển khai ứng dụng lớn được thiết kế trên nhiều Server. Trước tiên các đối tượng này sẽ tạo ra dung lượng lớn trên Server khi có hàng ngàn người truy cập. Đồng thời, trong trường hợp có nhiều Server cho một ứng dụng Web, khơng biết trang kế tiếp trên trình duyệt được thực hiện trên máy nào và khả năng quản lý trạng thái session không thể thực hiện trên nhiều Server.
Xuất phát từ các điểm yếu tương tự trên, cơng nghệ ASP.NET sẽ hướng các lập trình viên Web vào quỹ đạo của chúng bằng các lí do như:
- Độc lập ngôn ngữ (Language Independence): ASP.NET cho phép biên dịch không phụ
thuộc ngôn ngữ, thực hiện tối ưu việc kết hợp các ngơn ngữ khác nhau. Có thể dùng VB.NET, C++ để xây dựng trang ASP.NET.
- Dễ phát triển (Simplified Development): ASP.NET cho phép khai báo và viết mã đơn
giản.
- Tách mã và nội dung thành hai phần khác nhau (Separation of code and Content):
trong mỗi Webform có thể khai báo một số thủ tục trên tập tin với các tên mở rộng .vb, trang này được gọi là “Code behind the Page” chứa đựng nội dung mã nguồn. Trong khi Webform chứa các đối tưọng trực quan mang tính giao diện người dùng (interface).
- Tính mềm dẻo và khả năng nâng cấp (Improved Scalability): Cho phép chúng ta quản
lý trạng thái của các Session và tạo Form trên một ứng dụng sử dụng hệ thống nhiều Server. - Hỗ trợ cho nhiều trình khách (Support for multi client): ASP.NET Controls (điều khiển
ASP.NET) có thể tự động nhận dạng trình khách để hiển thị cho phù hợp. Chính vì vậy, sẽ khơng quan tâm đến việc phải viết mã thế nào để nhận dạng loại trình duyệt của trình khách (Client) khi người ta sử dụng triệu gọi trang ASP.NET.
- Các Controls hay còn gọi là điều khiển của WebForm (New Web Form Controls): là
những Controls có thể xuất ra mã HTML trên trình duyệt. Tuy nhiên, chúng cho phép xuất ra tất cả các điều khiển của các Platform khác như: Wireless phone, palm, pilots, pager và các thiết bị khác.
- Xử lý phía trình chủ (Server Side processing): ASP.NET thay đổi trang Web như một
đối tượng trên Server Side, nhiều thuộc tính, phương thức, đối tượng và biến cố sử dụng để tự động tạo ra nội dung trong mã nguồn bằng phát biểu “Runat = Server”.
- Thay vì sử dụng mơ hình tích hợp DLL, COM, DCOM trước đây, với cơng nghệ ASP.NET có thể sử dụng dịch vụ tương tự nhưng đơn giản hơn đó là Web Services.
- Đối tượng Pages
Page (trang ứng dụng) sử dụng các thành phần điều khiển có khả năng hoạt động và tương tác với nhau ngay trên trình chủ Web Server. Với đặc điểm này, chúng ta đã giảm thiểu quá trình viết mã tương tác giữa các trang.
Lập trình trong mơi trường ASP.NET tương tự như lập trình thiết kế trong .NET Windows Forms. Do đó, các ứng dụng ASP.NET cịn gọi là Web Forms.
- HTML Server Side Controls
Các thành phần điều khiển HTML (HtmlControl) có khả năng xử lý ngay trên trình chủ dựa vào thuộc tính và phương thức tương tự các hoạt động của chúng phía trình khách (sử dụng thuộc tính runat = “server”).
Những thành phần điều khiển này còn cho phép kết hợp mã xử lý của trang ASP.NET với một sự kiện nào đó phát sinh phía trình khách được xem như đang diễn dịch trên trình chủ (mơ hình chuyển giao - delegate).
- Rich Control
Rich Control là tập các thành phần điều khiển đa năng, chúng chạy trên Server và có thể tạo ra các phần tử cũng như đối tượng HTML phức hợp cho trình khách.
Chẳng hạn, Rich Control tạo ra khung lưới (datagrid), lịch (calendar), bảng (table), khung nhìn (list view). Rich Control cịn cho phép ràng buộc dữ liệu và xử lý dữ liệu tương tự như đang viết một ứng dụng để bàn.
- Web Services (các dịch vụ Web)
Web Services (các dịch vụ Web) có thể thay thế cho DLL, COM, DCOM trước đây. Trang ASP.NET có thể khơng cần hiển thị kết xuất cho trình khách. Chúng hoạt động như những chương trình xử lý u cầu ở hậu cảnh.
Ví dụ như trong ASP.NET, có thể là một lớp đối tượng cung cấp phương thức trả về giá trị nào đó khi nhận được u cầu từ trình khách. Web Services sử dụng giao thức HTTP và XML nơi có khả năng trao đổi dữ liệu và xuyên suốt trong mơi trường mạng Internet, mạng khơng dây.
- Cấu hình và phân phối
File cấu hình đơn giản và dễ dàng với các tập tin (web.config) theo định dạng văn bản XML. Các thành phần đối tượng khơng cịn phải đăng ký với hệ thông trước khi sử dụng nữa. Chỉ cần copy các trang ASP.NET hay các đối tượng lên máy chủ, chỉ ra vị trí của chúng, chương trình cũng như dịch vụ đã có thể sẵn sàng sử dụng.
Tự động quản lý trạng thái của đối tượng Session và Application, có thể lưu nội dung của Session hay Application của một ứng dụng đặc thù nào đó xuống các file trên đĩa để sử dụng lại.
- Xử lý lỗi
Xử lý lỗi (debug) và lần vết (tracing) các công cụ gỡ lỗi lần vết thông tin được nâng cấp và đáng tin cậy hơn. Mỗi trang tài liệu có thể sử dụng một trang xử lý lỗi riêng biệt và kết xuất nội dung của biến để theo dõi ngay trong quá trình thực thi trang.
Các trình gỡ lỗi debug được tích hợp sử dụng cho mơi trường đa ngơn ngữ Visual
Basic.NET, C++.NET, C#. Có thể tạo ra các thành phần đối tượng từ C++.NET, C# và triệu gọi chúng bằng ngôn ngữ Visual Basic.NET theo cùng cú pháp.
- Quản lý bảo mật
Quản lý bảo mật (security management), chúng ta có thể tận dụng các dịch vụ đăng nhập (login) tuỳ biến cho trang tài liệu ASP.NET theo phong cách của Web hoặc cơ chế đăng nhập và kiểm tra quyền xuất dựa trên hệ thống bảo mật của hệ điều hành.
- Tuỳ biến cùng đệm trên trình chủ
Bằng cách sử dụng tuỳ biến vùng đệm trên trình chủ (custom server catching) của kiến trúc ASP.NET được quản lý rất linh động. Có thể tự tạo các vùng đệm riêng chứa một kiểu giá trị và đối tượng trong quá trình hoạt động của trang nhằm tăng tốc cho ứng dụng.
- Một tập các đối tượng phong phú
ASP.NET hỗ trợ một tập phong phú các thư viện, lớp và đối tượng, nhằm phục vụ cho hầu hết những gì mà các nhà phát triển ứng dụng cần đến khi làm việc với ASP.NET.
Bằng các thư viện này, công việc viết ứng dụng cho Web trở nên dễ dàng và đơn giản hơn. Ví dụ như có thể sử dụng các thành phần đối tượng “Send Mail” để nhận gửi thư, đối tượng mã hố và giải mã thơng tin, đối tượng đếm số người truy cập trang Web , đối tượng truy xuất dữ liệu ADO, đối tượng truy cập các dịch vụ mạng, đối tượng đọc ghi trên hệ thống NTFS, đối tượng ghi ra logfile của hệ điều hành,..
Các đối tượng nội tại khác nhau như: Request, Response, Form, Cookies, Server Variables đều được giữ lại và hồn tồn tương thích với ASP. Tuy nhiên ASP.NET đã cung cấp thêm cho những đối tượng này rất nhiều thuộc tính và phương thức mới giúp nâng cao khả năng xử lý cho ứng dụng.
Kiến trúc ASP.NET cung cấp một tập hợp các sự kiện và có thể đặt mã điều khiển bên trong các sự kiện này thay vì trộn lẫn mã với các thẻ định dạng HTML, thứ tự phát sinh sự kiện trong trang ASP.NET như sau:
Hình 18. Cơ chế xử lý của trang ASP.NET
Trong đó, biến cố Page_load ln phát sinh đầu tiên mỗi khi trang .aspx được triệu gọi từ xa bởi trình khách. Tiếp đến, các biến cố khác của các thành phần điều khiển bên trong trang. Sau cùng, khi bộ diễn dịch thực thi xong các yêu cầu của trang, trang sẽ được giải phóng, lúc này biến cố Page_unload sẽ được triệu gọi.
Các biến cố Page_load, Page_unload của trang ASP.NET tương đương với Form_load và Form_unload trong ngơn ngữ lập trình Visual Basic. Chính vì vậy,các trang ứng dụng ASP.NET sau này cịn mang tên khác là Web Form.
- Lập trình với mã ẩn
Do xuất phát từ khái niệm tách trang ASP thành hai trang riêng biệt, trang giao diện người sử dụng và trang mã .NET hay còn gọi là “Code Behind”. Trong bất kì trang ASP.NET dạng Web Form, bao giờ cũng có phát biểu sau trên phần đầu trang Web.
<%@Page Language = “vb” Auto Event Wireup = “false” Codebehind = “newuser. aspx.vb” Inherits = “aspnet.newuser”%>
Phát biểu này còn gọi là chỉ dẫn với từ khai báo là @Page, chỉ cho ta thấy rằng mỗi Web Form được xây dựng trên ASP.NET. Điều này có nghĩa là Web Form là một đối tượng của ASP.NET Page.
Page_init
Page_load
Sự kiện đặc trưng của các thành phần điều khiển (Control specific events)
Đối tượng Page, cũng chứa các Control khi người sử dụng yêu cầu trang Web Form từ trình chủ, đối tượng Page sẽ thực thi đối tượng Web Form cùng cới các Control trên trang
ASP.NET.
Sau đó, chúng chuyển đổi kết xuất của đối tượng Page cùng với các Control thành mã HTML để trả về cho trình duyệt.
- Quan hệ giữa các tập tin Web Form
Ngoài khai báo tập tin mã ẩn, chỉ dẫn Page cịn định nghĩa đặc tính của trang Web như khai báo Language bằng VB, Auto Event Wire Up quan tâm đến kết nối tự động giữa kiểm soát biến cố Page_load, giá trị thiết lập False cho biết khi kiểm soát biến cố phải cung cấp đoạn mã chương trình.
Phát biểu kế tiếp là Code-behind = “newuser. aspx.vb”, tất cả các mã nguồn của Web Form đều lưu trữ trong trang Code-behind có tên newusser. aspx.vb.
Ngồi ra, tất cả các thẻ trên trình chủ đều được khai báo thuộc tính runat = “server” trong cú pháp của cấu trúc thẻ.
1.6 Các thành phần điều khiển trong ASP.NET
Như trình bày ở trên, đối tượng chính của trang ASP.NET là đối tượng Page. Trên đối tượng này có 4 loại điều khiển chính sau:
- Điều khiển nội tại (intrinsic control) - Điều khiển danh sách (list control) - Điều khiển đa năng (rich control) - Điều khiển kiểm tra (validate control).
1.6.1 Điều khiển nội tại
Các điều khiển này sẽ tạo ra những phần tử theo kiểu HTML phía trình khách. Có thể dựa vào điều khiển nội tại để tạo ra các phần tử HTML phía trình khách.
Có thể dùng điều khiển nội tại để tạo ra các điều khiển HTML thơng minh có khả năng quản lý trạng thái của chính nó hay những phần tử chỉ phần HTML khơng cần quản lý trạng thái.
1.6.2 Điều khiển danh sách
Thành phần điều khiển danh sách(list control) cho phép hiển thị mọi loại dữ liệu kiểu danh sách. Ví dụ, như bảng dữ liệu (table), khung hình (view, liệt kê),…
Điều khiển danh sách cịn cho phép ràng buộc với các thành phần dữ liệu Server. Sử dụng List Control ta có thể hiển thị và sắp xếp dữ liệu theo cách đơn giản dưới nhiều góc nhìn khác nhau và ít phải viết mã lệnh nhất.
1.6.3 Điều khiển đa năng
Những điều khiển đa năng (rich control) trên Server sẽ sinh ra mã là tổ hợp của nhiều phần tử HTML đôi khi kèm theo mã điều khiển Javascript để chạy phía trình khách.
Rich Control cung cấp cho nhiều giao diện rất bắt mắt và độc đáo. Tuỳ theo trình duyệt phía trình khách mà mã HTML và Javascript do Rich control tạo ra trở nên tương thích.
1.6.4 Điều khiển kiểm tra
Các điều khiển kiểm tra (valicate control) thường khơng nhìn thấy. chúng hoạt động phía hậu cảnh ở cả 2 phía trình khách (client) và trình chủ (server) tuỳ thuộc vào giá trị True hay False mà cung cấp cho thuộc tính EnableClientscript và Enabled.
mục đích của thành phần điều khiển là cho phép kiểm tra khuôn dnạg của dữ liệu nhập vào trước khi trình khách gởi ngược (postback) dữ liệu về trình chủ hoặc trình chủ đưa dữ liệu trở về trình khách.