1. MØI LÝ DO TẠI SAO PHẢI HỌC ASP.NET Với mục đích cung cấp những giải pháp từ cơ bản đến phức tạp để xây dựng ứng dụng thương mại điện tử hoàn chỉnh, chúng ta chọn ứng dụng bán hàng qua mạng để làm quen trong suốt quá trình thiết kế các ví dụ và ứng dụng đính kèm theo sách. Trong tập hai, chúng tôi chọn ngôn ngữ Visual Basic.NET để lập trình trong các trang ví dụ ASP.NET và ứng dụng đính kèm. Hy vọng trong thời gian tới, chúng tôi tiếp tục ra mắt bạn đọc cuốn sách với chủ đề tương tự nhưng được trình bày bằng ngôn ngữ C Sharp. Sau đây là 10 lý do tại sao bạn thích làm quen với lập trình Web bằng công nghệ ASP.NET. • Trang ASP.NET chạy nhanh do dùng cơ chế chỉ biên dòch ra tập tin DLL lần đâu tiên triệu gọi (khác với ASP 3.0 mỗi lần triệu gọi thì mỗi lần biên dòch trang ASP). • Triển khai và nâng cấp các ứng dụng đang dùng bằng XCOPY. • Hỗ trợ nhiều công cụ lập trình và cho phép sử dụng lại các tài nguyên đang sử dụng. • Tự động dò tìm và khắt phục lỗi phát sinh, bạn có thể sử dụng cấu trúc try ..catch .. end try. • Quản lý trạng thái giao dòch (Session State) ở trên phạm vi nhiều Server (Web farms). • Sử dụng bộ nhớ truy cập nhanh. • Hỗ trợ lập trình trên các loại thiết bò điện thoại di động. • Sử dụng ngôn ngữ biên dòch trang ASP.NET thay vì thông dòch như đã sử dụng trong ASP 3.0. • Xây dựng và triển khai các ứng dụng dòch vụ Web (Web Service) dễ dàng, bạn có thể thay thế Web Service cho các ứng dụng DLL, COM, DCOM trước đây. • Mô hình Page rất đơn giản trong trang ASP.NET. Với 10 lý do trên, bạn sẽ tìm thấy những đặc điểm nổi bật dưới nhiều góc độ khác nhau trong phần giới thiệu những đặc điểm mới của ASP.NET và các ví dụ được trình bày chi tiết qua từng chương.
2. GIỚI THIỆU ASP.NET Hiện tại ASP 3.0 (.asp) đã và đang trở thành kòch bản được nhiều người sử dụng để thiết kế ứng dụng thương mại điện tử dưới nhiều hình thức khác nhau. Chúng được sự hỗ trợ mạnh của ngôn ngữ lập trình Visual Basic 6.0 và cơ sở dữ liệu SQL Server cùng với sự ra đời của công nghệ COM và
DCOM, ứng dụng trở nên hoàn hảo và ưu việt hơn trong quá trình trao đổi thông tin trên mạng Internet và Intranet. Tuy nhiên, Microsoft đã và đang nổ lực cho một công nghệ Web xử lý phía máy chủ hoàn toàn mới đó là ASP.NET, độc lập với mọi trình duyệt. Điều này có nghóa là trình duyệt không cần phải cài đặc bất kỳ công cụ hỗ trợ nào để duyệt trang Web dạng ASP.NET (.aspx). Với kỹ thuật cho phép mọi thực thi đều nằm trên trình chủ (Server), có nghóa là trình chủ phải xử lý nhiều vấn đề cùng một lúc cho nhiều người dùng, chính vì vậy đòi hỏi cấu hình máy chủ có cấu hình mạnh và đòi hỏi băng thông có khả năng truyền dữ liệu với khối lượng lớn và tốc độ truy cập nhanh. ASP.NET được thiết kế tương thích với các phiên bản ASP trước đó. Bạn có thể triển khai ứng dụng phát triển bằng ASP.NET chung với ứng dụng phát triển bằng ASP 3.0 trên cùng một máy chủ Windows 2000 mà không cần thay đổi cấu hình của ứng dụng ASP. ASP.NET và ASP hoạt động độc lập với nhau tuy chúng cùng chạy trên cùng một trình chủ Web. Khi bạn cài ASP.NET từ bộ cài đặt .NET SDK Framework, Microsoft sẽ không nâng cấp hay đè
chồng lên phiên bản ASP trước đó. Thay vào đó, .NET Framework được cài thêm vào hệ điều hành để tích hợp trình chủ Web và IIS như là một tuỳ chọn hoạt động chung với ASP. Những ngôn ngữ được dùng để viết ASP.NET là VBScript (mã Visual Basic.NET), JScript (mã J++), C# (mã C#). Tuỳ thuộc vào khai báo chỉ mục trong đối tượng chỉ dẫn đầu trang ASP.NET, bạn có thể chỉ rõ ngôn ngữ lập trình bạn sử dụng để xây dựng trang ASP.NET (tên mở rộng của trang ASP.NET là ASPX).
3. TẠI SAO CHÚNG TA PHẢI DÙNG ASP.NET 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 bạn 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ấu trúc rõ ràng, do mã ASP được viết chèn lẫn lộn với mã HTML. Đôi khi, bạn sử dụng các phát biểu include để chèn tập tin vào trang ASP nhưng bạn phải giải quyết một số vấn đề để tránh sự xáo trộn cấu trúc HTML và mã ASP của trang mà bạn khai báo chèn. Trang ASP được thông dòch lại toà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. Thay vì, chỉ thông dòch lại trang ASP mỗi khi trang này có thay đổi về mặt cấu trúc. Ngoài ra, ASP sử dụng đối tượng ADO để kết nối cơ sở dữ liệu của Microsoft, 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 chưa cao của đối tượng 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 đònh dạng XML. Trong trang ASP, bạn sử dụng hai đối tượng Application và Session, nhưng có quá nhiều vấn đề có thể xảy ra trong quá trình triển khai ứng dụng lớn được thiết kế trên nhiều Server. Trước tiên chúng 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, bạn 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ự như 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 bạn không biên dòch ngôn ngữ, thực hiện tối ưu với các ngôn ngữ kết hợp. • Dễ phát triển (Simplified Development): ASP.NET cho phép bạn khai báo và viết mã và đơn giản hoá vấn đề. • Tách mã và nội dung ra hai phần khác nhau (Separation of code and Content): Trong mỗi Web form bạn có thể khai báp 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 Web Form chứa các đối tượng trực quan mang tính giao diện người dùng. • 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, bạn sẽ không quan tâm đến việc phải viết mã như thế nào để nhận dạng loại trình duyệt của trình khách (Client) do người 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 Web Form (New Web Form Controls): Là những Controls có thể xuất ra mã HTML 3.2 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ư: Wire less phone, palm, pilots, pager và các
thiết bò khác. • Xử lý trên 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 DLL, COM, DCOM trước đây, trong trường hợp ứng dụng sử dụng công nghệ ASP.NET bạn có thể sử dụng dòch vụ tương tự có tên là Web Services.
4. TÓM TẮT CÁC ĐẶC ĐIỂM MỚI CỦA ASP.NET 4.1. Đố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 dộ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.
4.2. 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) .
4.3. 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ư bạn đang viết
một ứng dụng để bàn.
4.4. 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ý yêu cầu ở hậu cảnh. Ví dụ như trong ASP.NET của bạn 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 yêu cầu từ trình khách.
4.5. Cấu hình và phân phối Đơn giản và dễ dàng với các tập tin (web.config) cấu hình theo đònh dạng văn bản XML. Các thành đối tượng không còn phải đăng ký với hệ thống trước khi sử dụng nữa (không còn dùng đến regsvr 32.exe như đã sử dụng COM, DLL, DCOM trong tập 1). Bạn 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ủa bạn đã có thể sẵn sàng để sử dụng.
4.6. Trạng thái Session Tự dộng quản lý trạng thái của đối tượng Session và Application, bạn 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.
4.7. 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, C++, C#. Bạn có thể tạo ra các thành phần đối tượng từ C++, C# và triệu gọi chúng bằng ngôn ngữ Visual Basic.NET theo cùng cú pháp.
4.8. Quản lý bảo mật Quản lý bảo mật (Security mangement), 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.
4.9. Tuỳ biến vù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 Caching) của kiến trúc ASP.NET được quản lý rất linh động. Bạn 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.
4.10. Một tập các đối tượng 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 bao giờ hết. Ví dụ như bạn có thể sử dụng các thành phần đối tượng "Send Mail" để gửi nhận thư, đối tượng mã hoá và giải mã thông tin, đối tượng đếm số người truy cập trang Web (Counter), đố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, … Lưu ý rằng, 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à hoàn toà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.
5. CÀI ĐẶT VS.NET 2003 Để cài đặt VS.NET 2003 bạn sử dụng 4 đóa, đầu tiên đưa đóa thứ nhất sau đó máy tinh yêu cầu đóa kế tiếp bạn cho đóa thứ 3. Sau khi cài đặt đóa thứ 3 xong đóa kế tiếp là đóa thứ 2. Nếu có cài đặt MSDN thì cài tiếp đóa thứ 4. Tuy nhiên, để cài đặt VS.NET trên hệ điều hành Windows 2000 thì bạn cần ca SP3 trở về sau.
Ngoài ra, trong khi cài đặt đóa thứ 3 nếu có phát sinh lỗi và yêu cầu xuất hiện là retry hay irgnore thì bạn rút đóa đó ra đưa đóa khác vào và nhấn retry, xs lại xuất hiện bây giờ bạn đưa đóa đang cài đặt trở lại và nhấn retry để bỏ qua các tập tin bò thiếu. Khi cài đặt VS.NET 2003, nếu sử dụng VB.NET thì bạn không nên cài đặt C#, C++ và J# để giảm bớt dung lượng cài đặt. Lưu ý rằng, chúng ta cần cài đặt .NET Framework vì đó là kernel chính của .NET.
6. CẤU HÌNH ỨNG DỤNG TRONG IIS Windows 2000, bằng cách chọn menu có tên Internet Information Service, cửa sổ IIS xuất hiện như hình 20-7.
Hình: Cửa sổ IIS Trong IIS luôn luôn tồn tại hai Web Site là Administration Web Site (dùng cho việc cấu hình IIS), Default Web Site (ứng dụng Web mặc đònh). Default Web Site được cấu hình mặc đònh ứng với thư mục gốc, trong trường hợp này chính là thư mục C:\inetpub\wwwroot\. Tuy nhiên, bạn có thể thay đổi thư mục mặc đònh này bằng cách cấu hình trong IIS. Mặt khác, sau khi bạn cài đặt IIS xong, trên trình duyệt Web (IE chẳng hạn), bạn có thể sử dụng các trang Web mặc đònh của Windows bằng cách gõ: http://localhost/ (cùng với thư mục con) như hay http://servername/. Trong trường hợp máy của bạn có cấu hình card mạng với đòa chỉ IP, bạn cũng có thể gọi trang Web bằng cách gõ như sau: http://192.168.101.207/. Để khởi động một ứng dụng Web Site trong IIS đang ở chế độ dừng hay ngừng hoạt động, bạn có thể chọn tên ứng dụng Web đó và bấm nút Start như hình sau.
Hình: Start một ứng dụng Web Site Tuy nhiên, tương tự như vậy trong trường hợp muốn ngừng một ứng dụng Web Site đang chạy, bạn có thể chọn tên Web Site và chọn nút Stop hay Pause như hình sau.
Hình: Dừng một ứng dụng Để cập nhật lại một số thông số của ứng dụng Web Site trong IIS, bạn chọn tên ứng dụng và RClick | Properties, giả sử trong trường hợp này chúng ta chọn tên ứng dụng có tên là ASPNET cửa sổ xuất hiện như hình sau.
Hình: Cập nhật cấu hình của ứng dụng ASPNET
6.1. Thông tin của Web Site Cửa sổ này bao gồm 10 ngăn, ngăn thứ nhất còn gọi là Web Site, ngăn này bao gồm các thông tin như sau:
6.1.1. Description Tên của ứng dụng dùng để tham khảo. Trong trường hợp ứng dụng đính kèm, chúng ta cung cấp giá trò cho Description là Intershop.
6.1.2. IP Address Đòa chỉ card mạng của trình chủ, tên của Server hay bạn có thể cung cấp localhost. Trong trường hợp Server của bạn có nhiều IP, bạn cũng có thể chọn All Unassigned thay vì chỉ đònh một đòa chỉ IP như trên.
6.1.3. Port Port (Cổng) chuẩn cho ứng dụng Web là 80, điều này có nghóa là khi người dùng gõ đòa chỉ trên trình duyệt http://localhost/, http://192.168.101.207/ hay gõ tên miền
như . Trong trường hợp bạn cấu hình Port khác với Port chuẩn, chẳng hạn Port có số là 81, trên trình duyệt người dùng phải gõ tương ứng: http://localhost:81, http://192.168.101.207:81/ hay gõ tên miền như :81/.
6.1.4. Connections Bạn có thể giới hạn số kết nối (Connections) từ người dùng vào ứng dụng bằng cách chọn số cụ thể trong phần này. Giá trò mặc đònh là không giới hạn (Unlimited). Thêm vào đó, bạn cũng có thể khai báo tham số thời gian kết nối (mặc đònh 900 giây).
6.1.5. SSL Port Ngoài ra, trong phần này còn có tham số SSL Port (Security Socket Layer), để tham khảo chi tiết về SSL, bạn có thể tìm đọc phần cấu hình SSL đối với trình khách và trình chủ trong tập 2 sắp phát hành.
6.2. Home Directory Phần thư mục ứng dụng (Home Directory) bao gồm các bước cấu hình ứng dụng Web, bằng việc trỏ đến thư mục chứa tập tin (Web Folder), trong trường hợp này là thư mục intershop trong thư mục C:\Inetpub\wwwroot\ chẳng hạn. Ngoài ra, trong phần này chúng ta cần xác đònh các quyền truy cập trên ứng dụng như hình sau.
Hình: Home Directory
6.2.1. Local Path Local Path (đường dẫn cục bộ) là vò trí của thư mục của ứng dụng mà bạn cần khai báo. Điều này có nghóa là những tập tin ASP, HTML, JS, CSS và tập tin hình ảnh cũng như các tập tin khác có thể gọi trên trình duyệt đều được đặt trong thư mục này. Trong trường hợp này,
C:\inetpub\wwwroot\intershop\.
chúng
tôi
đang
sử
dụng
thư
mục
mặc
đònh
là
Để thay đổi thư mục ứng dụng, bạn có thể chọn nút Browse.., lập tức cửa sổ liệt kê thư mục trên máy xuất hiện như hình sau.
Hình: Danh sách thư mục Trong trường hợp thư mục của ứng dụng nằm trên mạng cục bộ, bạn có thể chọn tuỳ chọn thứ hai trong Home Directory và cung cấp tên server, tên thư mục chia sẻ (share) như hình sau.
Hình: Thư mục ứng dụng trên mạng
6.2.2. Các tuỳ chọn khác Trong thời gian thiết kế ứng dụng, nếu bạn trình bày danh sách thư mục cũng như tập tin trên trình duyệt như các trình bày trong Windows Explorer như hình sau, bạn có thể chọn tuỳ chọn Directory Browsing.
Hình: Danh sách thư mục và file trên trình duyệt Tuy nhiên, sau khi ứng dụng đi vào hoạt động, bạn cần bỏ tuỳ chọn này. Khi đó, trình duyệt sẽ trình bày thông tin dưới dạng trang Web (trang mặc đònh) cho dù họ không gõ đích danh tên trang Web. Chẳng hạn, mặc đònh của homepage là trang index.asp, nếu bạn không gõ trang này mà chỉ gọi như: http://localhost/, lập tức trang index.asp xuất hiện như hình sau thay vì như hình 20-15 (nếu chọn tuỳ chọn Directory Browsing).
Hình: Không chọn tuỳ chọn Directory Browsing Ngoài ra, nếu bạn muốn cho phép người dùng ghi tập tin vào thư mục Web từ phía trình khách (trình duyệt), bạn có thể chọn vào tuỳ chọn Write. Tuy nhiên, bạn cẩn thận khi cung cấp tuỳ chọn này, bởi vì đây là một trong những đường mà một số Hacker tấn công ứng dụng Web.
6.3. Documents Nếu bạn muốn trình bày một trang mặc đònh mỗi khi người sử dụng được triệu gọi ứng dụng Web Site, bạn có thể khai báo chúng trong phần Documents như hình sau.
Hình: Cấu hình Documents Nếu bạn muốn thêm trang mặc đònh, bạn có thể chọn nút Add và cung cấp tên tập tin mặc đònh như hình.
Hình: Thêm trang mặc đònh của ứng dụng
Để cấu hình ứng dụng Web trong IIS, bạn có thể thực hiện các bước như trình bày trong tập 1. Nếu bạn sử dụng hệ điều hành Windows Server 2003, bạn có thể tham khảo cách cấu hình ứng dụng Web trong IIS 6.0 trong chương cấu hình ứng dụng Web. Trong trường hợp này, chúng tôi sử dụng thư mục có tên myaspx trong thư mục wwwroot và cấu hình thư mục như ứng dụng mặc đònh như hình 2-16. Điều này có nghóa là cho phép người sử dụng gọi chúng trên trình duyệt bằng cách gõ http://localhost/.
Hình 2-16: Cấu hình myaspx trong IIS 5.0 Sau đó, bạn có thể khai báo trang hello.aspx với nội dung cơ bản nhất như ví dụ 2-1. Ví dụ 2-1: Nội dung trang Hello.aspx <script runat="server"> Sub Page_Load(sender As Object, e As EventArgs) ‘ Xuất chuỗi Welcome to Code of ASPX. Ra trình duyệt Response.Write("Welcome to Code of ASPX.") End Sub </script> <html> <head> <title>ASPX Testing</title> content="text/html; charset=utf-8"> </head> <body>
‘ Xuất chuỗi Welcome to ASPX Page. Ra trình duyệt Welcome to ASPX Page.
</body> </html>
Kiểm tra chúng có thực thi hay không bằng cách triệu gọi nó trên trình duyệt (http://localhost/hello.aspx) kết quả xuất hiện như hình 2-17.
Hình 2-17: Kết quả của trang hello.aspx
BÀI 2:.NET FRAMEWORK VÀ TRANG ASP.NET
1. GIỚI THIỆU .NET FRAMEWORK .NET Framework là cơ sở hạ tầng bằng việc cung cấp cho người dùng cách thức sử dụng đa ngôn ngữ lập trình để truy cập thông tin, file, hoặc các chương trình của họ ở mọi lúc mọi nơi trên mọi cấu hình phần cứng và thiết bò. Tâm điểm của .NET Framework là CLR (Comm Language Runtime) và tập phân cấp các bộ thư viện hợp nhất và ASP.NET. CLR quản lý sự thực thi của đoạn mã .NET và cung cấp các dòch vụ tạo quá trình phát triển chương trình ứng dụng dễ dàng hơn. Các trình biên dòch và các công cụ làm cho chức năng của thư viện thực thi runtime trở nên phong phú và hiệu quả hơn. Ngoài ra, dòch vụ Web trong .NET Framework cho phép bạn phát triển ứng dụng Internet hay Intranet trong hiện tại lẫn tương lai bằng bất cứ ngôn ngữ lập trình và truy cập đến hệ thống bất kỳ. CLR cung cấp sự dễ dàng cho các nhà phát triển Visual Basic .NET khi thiết kế và xây dựng ứng dụng mà những đối tượng của chúng có thể tương tác với các đối tượng được viết bằng ngôn ngữ khác. Sự tương tác này có thể bởi vì các trình biên dòch ngôn ngữ và các công cụ phát triển hướng đến sử dụng CLR với một hệ thống kiểu dữ liệu chung đònh nghóa bởi thư viện runtime như hình sau. NET Framework Visual Basic
C ++
C#
...
CLS – Common Language Speciftcation Web Service
User Interface
Data and XML
Visual Studio .NET
Base Class Library
CLR – Common Language Runtime
Hình 2-1: Kiến trúc .NET Framework Bạn có thể tham khảo tất cả những thành phần cấu thành trong .NET Framework như hình 2-1, mức trên cùng là trình biên dòch Visual Basic hoặc các trình biên dòch của các ngôn ngữ khác trong bộ Visual Studio .NET. Trong hình 2-1, cũng cho biết bạn có thể sử dụng Visual Studio.NET kết hợp với môi trường phát triển (Intergrated Development Environment – IDE) để lập trình ASP.NET.
.NET Framework còn kết hợp mô hình lập trình đơn giản, dễ sử dụng với các giao thức mở và biến đổi được của Internet. Để đạt được điều này, .NET Framework bao gồm các đặt điểm sau: Sự hợp nhất thông qua các chuẩn Internet và hỗ trợ các chuẩn Web Service: Cho phép giao tiếp với mọi ứng dụng phát triển trên cơ sở hạ tầng bất kỳ mà không cần biết đến chi tiết bên trong cơ sở hạ tầng đó thông qua đònh dạng XML bằng nghi thức SOAP (Simple Object Access Protocol).
Khả năng biến đổi được: Đa số các hệ thống lớn đang sử dụng trên thế giới được xây dựng trên kiến trúc không đồng bộ. .NET Framework cho phép chúng ta xây dựng ứng dụng có khả năng biến đổi và giao tiếp với nhau giữa các kiến trúc khác nhau.
Hỗ trợ nhiều ngôn ngữ: Những nhóm lập trình sử dụng ngôn ngữ lập trình khác nhau để phát triển ứng dụng do chúng có những tính ưu việc của từng loại. .NET Framework cho phép trao đổi và giao tiếp giữa các hệ thống được xây dựng trên các ngôn ngữ lập trình khác nhau. Ngoài ra, chúng ta có thể sử dụng lại những ứng dụng đang tồn tại mà không cần phải xây dựng lại từ đầu. Bảo mật tốt hơn: Bảo mật là một trong những vấn đề gây mất nhiều thời gian của người làm tin học. Kiến trúc bảo mật của .NET Framework được thiết kế từ dưới lên để đảm bảo các ứng dụng và dữ liệu được bảo vệ tinh vi dựa trên mô hình evedencebase (bằng chứng). Kế thừa những dòch vụ của hệ điều hành: .NET Framework tận dụng lợi thế đa dạng và phong phú của các thành phần trong hệ điều hành đang có để cung cấp cho người sử dụng theo cách thân thiện và dễ sử dụng hơn. Tách biệt giữa mã nguồn (code behind) và thành phần là một phần quan trọng của .NET Framework. Ngoài ra, .NET Framework biên dòch trang ASP.NET thành tập tin DLL (Dynamic Link Library) khi được gọi lần đầu như hình 2-2, thay vì thông dòch chúng như từng thực hiện trong ASP 3.0.
2. BIÊN DỊCH TRANG ASPX
Khi người sử dụng gọi trang ASPX lần đầu tiên, IIS triệu gọi trình biên dòch dòch trang ASPX (trang Code-bihind) thành tập tin Class. Kế tiếp, tập tin Class này được biên dòch thành tập tin DLL. Sau đó, trang DLL thực thi và trả về kết quả cho người sử dụng.
Parse
Request
Tập tin ASPX
ASPX Engine
Instantiate
Request
Compile
Respons
Respons
Codebehind Class
Generate
Tập tin Class
Tập tin DLL Instantiate Process and Render
Hình 2-2: Quá trình biên dòch trang ASP.NET Trong trường hợp người sử dụng gọi lại trang ASPX lần kế tiếp, thì tập tin DLL sẽ được gọi và thực thi để trả kết quả về cho người sử dụng. Như vậy, trang ASPX sẽ biên dòch lại tập tin DLL khi chúng tìm thấy cấu trúc của nó thay đổi hoặc chúng không tìm thấy tập tin DLL tương ứng trong thư mục có tên Temporary ASP.NET Files như hình 2-3. Tóm lại, khi người sử dụng truy cập trang ASPX vào lần đầu tiên thường chậm, nhưng nếu người sử dụng truy cập trang ASP.NET đó lần kế tiếp thì quá trình này sẽ xảy ra nhanh chóng. Lưu ý rằng, bạn có thể tìm thấy các tập tin DLL được biên dòch từ trang ASPX tương ứng như hình 2-2 trong thư mục Temporary ASP.NET Files thuộc thư mục Microsoft.NET.
Hình 2-3: Vò trí của các tập tin DLL
3. CÀI ĐẶT .NET FRAMEWORK 3.1. Yêu cầu phần cứng và phần mềm .NET Framework 1.0 chỉ hỗ trợ trên hệ điều hành Windows 2000 (Professional và Server), Windows XP không hỗ trợ cho hệ điều hành Windows 4.0 và Windows 9x. Bạn có thể sử dụng .NET Framework 1.1 SDK tích hợp trong hệ điều hành Windows Server 2003.
nhất.
Để cài đặt .NET Framework 1.0 SDK, bạn cần có cấu hình phần cứng và phần mềm nhỏ
Processor Operating System
Server 133-MHz Intel Pentium-class processor. .NET Framework 1.0 SDK có thể cài đặt trên hệ điều hành:
•
Windows 2000, với Windows service pack 2.0.
•
Windows XP.
Lưu ý: .NET Framework SDK không hỗ trợ trên Windows Millennium Edition và Microsoft Windows NT® 4.0. Memory
128 MB RAM ( tốt nhất 256 MB)
Hard Disk
660 MB đóa cứng, 190 MB cho các yêu cầu khác tức là khoản (850 MB total)
Display
800 x 600 hay độ phân giải cao hơn với 256 màu.
Để truy cập ASP.NET, bạn cần cài đặt Internet Information Services (IIS) với .NET Framework. Trong trường hợp IIS cài đặt sau .NET Framework, ASP.NET sẽ không thể thực thi, bạn cần đăng ký Aspnet_isapi.dll bằng cách sử dụng Regsvr32.exe. Nếu hệ điều hành là Windows Server 2003, bạn không cần cài đặt .NET Framework, bởi vì .NET Framework 1.1 đã được tích hợp sẵn. Trong trường hợp bạn muốn sử dụng .NET Framework 1.1 với hệ điều hành Windows 2000, bạn cần cài đặt Service Pack mới nhất.
3.2. Cài đặt .NET Framework Nếu bạn đang danh sách hệ điều hành Windows 2000, bạn có thể cài đặt .NET Framework 1.0 bằng cách chọn đóa thứ 5 của bộ Visual Studio.NET (7 đóa). Sau khi bạn kết thúc cài đặt và cấu hình .NET Framework trong IIS, bạn có thể kiểm tra bằng cách chọn ứng dụng trong IIS (5.0) | R-Click | Properties | Home Directories | Configuration, cửa sổ xuất hiện như hình 2-4 sau.
Hình 2-4: Cấu hình trong IIS
4. CẤU HÌNH ỨNG DỤNG TRONG IIS 5.0 Để cấu hình ứng dụng Web trong IIS 5.0, chún ta sử dụng thư mục có tên myaspx trong thư mục wwwroot và cấu hình thư mục như ứng dụng mặc đònh như hình 2-5. Điều này có nghóa là cho phép người sử dụng gọi chúng trên trình duyệt bằng cách gõ http://localhost/.
Hình 2-5: Cấu hình myaspx trong IIS 5.0
Sau đó, bạn có thể khai báo trang hello.aspx với nội dung cơ bản nhất như ví dụ sau. Nội dung trang Hello.aspx ------------------------------------------------------------------<script runat="server"> Sub Page_Load(sender As Object, e As EventArgs) ‘ Xuất chuỗi Welcome to Code of ASPX. Ra trình duyệt Response.Write("Welcome to Code of ASPX.") End Sub </script> <html> <head> <title>ASPX Testing</title> content="text/html; charset=utf-8"> </head> <body>
‘ Xuất chuỗi Welcome to ASPX Page. Ra trình duyệt Welcome to ASPX Page. </body> </html>
Kiểm tra chúng có thực thi hay không bằng cách triệu gọi nó trên trình duyệt (http://localhost/hello.aspx) kết quả xuất hiện như hình 2-6.
Hình 2-6: Kết quả của trang hello.aspx
Bài 3: Các đối tượng trong ASP.NET 1. ĐỐI TƯNG REQUEST
Tương tự như đối tượng Session, đối tượng Request được cài đặt trong lớp HttpRequest thuộc không gian tên System.Web. Tất cả thuộc tính và phương thức đang tồn tại trong ASP đều được hỗ trợ trên ASP.NET. Tương tự như trong đối tượng Session, cấu trúc của đối tượng Request có một vài thay đổi cùng với một số thuộc tính và phương thức mới. Nếu bạn muốn sử dụng đối tượng Request như ASP trong trang ASP.NET, bạn có thể khai báo như trong ví dụ 3-7. Ví dụ 3-7: Khai báo đối tượng Request trong ASP.NET <script runat="server"> Sub Page_Load(sender As Object, e As EventArgs) Dim US As String ‘ Lấy giá trò từ Form US=Request.Form("username") Response.Write("UserName is ") Response.Write(US) Response.Write("<Br>") ‘ Lấy giá trò từ chuỗi QueryString US=Request.QueryString("email") Response.Write("Email is ") Response.Write(US+" ") ‘ Lấy giá trò từ Form hay từ QueryString US=Request("fullname") Response.Write("FullName is ") Response.Write(US) End sub </script> <html> <head><title> Welcome to ASP.NET 's Objects </title>
Sau khi bạn Submit trang ex7.aspx trên trình duyệt, kết quả sẽ xuất hiện như hình 3-2.
Hình 3-2: Khai báo và sử dụng Request (ASP) trong ASP.NET Tuy chúng ta có thể khai báo và sử dụng đối tượng Request của ASP trong trang ASP.NET, nhưng bạn cũng nên sử dụng các thuộc tính, thuộc tính được thay đổi và thêm mới của đối tượng này trong trang ASP.NET để có một quá trình xử lý phù hợp và tốt hơn. Bảng 3-3: Thuộc tính và phương thức của Request
----------------------------------------------Thuộc tính/ Diễn giải phương thức --------------------------------------------FilePath Trả về đường dẫn ảo của yêu cầu, thuộc tính này tương đương vơi SCRIPT_NAME trong ASP. Files Trả về HttpFileCollection của tập nhiều tập tin được tải lên Server (sử dụng cho dạng multi-part/forms). Form Trả về một tập dữ liệu của nội dung từ Form (NameValueCollection). Cách truy cập tập dữ liệu này khác với truy cập tập dữ liệu từ Form của ASP. Tham khảo Request Collection trong phần kế tiếp. của form. Params Như trình bày trong chương trước, thuộc tính này sử dụng để lấy giá trò của phương thức trong Form, QueryString, ServerVariable hay Cookie. Path Đường dẫn ảo của yêu cầu, tương đương với PATH_INFO trong ASP. PathInfo Đường dẫn ảo của yêu cầu, tương đương với PATH_INFO trong ASP. PhysicalApplicationPath
Đường dẫn vật lý của thư mục gốc, tương đương với APPL_PHYSICAL_PATH. PhysicalPath Đường dẫn vật lý của yêu cầu, tương đương với PATH_TRANSLATED trong ASP. QueryString Trả về một tập dữ liệu của nội dung từ
2
QueryString (NameValueCollection). Cách truy cập tập dữ liệu này khác với truy cập tập dữ liệu từ Form của ASP. Tham khảo Request Collection trong phần kế tiếp. TotalBytes Dung lượng của Stream trong luồng dữ liệu. Url Đối tượng Url chứa đựng chi tiết của yêu cầu. Đối tượng Url (từ không gian tên System) bao gồm các thông tin chi tiết như Port, DNS,... UserHostAddress Đòa chỉ IP của người sử dụng, tương đương với REMOTE_ADDR trong ASP. UserHostName Tên DNS của người sử dụng, tương đương với REMOTE_NAME trong ASP. MapPath Chuyển đổi đường dẫn ảo thành đường dẫn
vật lý. SaveAS Lưu yêu cầu HTTP vào đóa. -----------------------------------------------
1.1.1. Request Collection trong ASP Đối tượng Request cho phép truy cập đến nội dung của Form hay QueryString, trong đó bao gồm các phần tử cùng tên như trong các trình bày chúng ta sử dụng thẻ checkbox, radio,... cùng tên và khác giá trò như ví dụ 3-8. Ví dụ 3-8: Danh sách Industry <html> <head><title>Welcome to ASP's Objects</title> content="text/html; charset=UTF-8"> </head> <body> <form action=ex8.asp method=post> <table> <tr> <td valign=top> Industry:</td><td> <select name=lstIndu multiple> <option value="AUT"> Auto</option> <option value="ENG"> Engineering</option> <option value="FOO"> Foods</option> <option value="GAR"> Garment</option> </select> </td></tr><tr><td colspan=2> <input type=submit value="Submit"> Gia tri cua danh sach chon
<% For item=1 To Request.Form("lstindu").Count Response.Write(Request.Form("lstindu")(item)) & " " Next %> </td> </tr> </table> </form> </body> </html>
Sau khi chọn một hay nhiều phần tử trong danh sách Industry, bạn nhấn nút Submit để Submit trang này, kết quả nhận được như Hình 3-3.
3
Hình 3-3: Request trong ASP
1.1.2. Request Collection trong ASP.NET Nếu bạn viết đoạn chương trình trong ví dụ 3-8 trong trang ASP.NET, chúng không thể biên dòch được. Chính vì vậy, bạn có thể khai báo lại như trong ví dụ 3-9. Ví dụ 3-9: Request trong ASP.NET <html> <head><title>Welcome to ASP.NET' s Objects</title> content="text/html; charset=UTF-8"> </head> <body>
Sau khi người sử dụng chọn một hay nhiều Industry, nếu họ nhấn nút Submit, lập tức trang kế tiếp sẽ được triệu gọi, bằng cách sử dụng đối tượng Request cùng với các phương thức và thuộc tính của nó, chúng ta sẽ lấy các giá trò mà người sử dụng chọn như ví dụ 3-10. Ví dụ 3-10: Sử dụng đối tượng Request trong ASP.NET 4
<html>
<head><title>Welcome to ASP.NET' s Objects</title> content="text/html; charset=UTF-8"> </head> <body> Gia tri cua danh sach chon
<table><tr> <td valign=top> Industry:</td><td> <% if Request.Form.GetValues("lstindu").Length-1>0 then Dim item As Integer Dim elements As Integer=0 elements =Request.Form.GetValues("lstindu").Length-1 For item=0 To elements Response.Write(Request.Form.GetValues("lstindu")(item)) Response.Write(" ") Next end if %> </td></tr> </table> </body> </html>
Sử dụng phương thức GetValues ứng với chỉ dẫn của phần tử trong tập phần tử tính từ phần tử thứ 0, bạn có thể đọc giá trò của từng phần tử mà người sử dụng đã chọn.
2. ĐỐI TƯNG RESPONSE Tương tự như hai đối tượng đã trình bày ở trên, tất cả các thuộc tính và phương thức trước
đây của đối tượng Response đều được sử dụng lại. Tuy nhiên, khi sử dụng đối tượng Response trong ASP.NET, bạn cần quan tm một số thuộc tính và phương thức mới. Lưu ý rằng, trong ASP bạn khai báo đối tượng Response.Write như sau: Response.Write Str
Trong ASP.NET, phát biểu trên viết lại như sau: Response.Write (Str)
Bạn có thể tham khảo chi tiết về đối tượng Response trong ASP 3.0. Bảng 3-4 sau sẽ trình bày một số thuộc tính, phương thức mới và thuộc tính, phương thức thay đổi trong ASP.NET. Bảng 3-4: Thuộc tính và phương thức của Response ----------------------------------------------Thuộc tính/ Diễn giải phương thức --------------------------------------------Expires Mặc dù nó còn hỗ trợ, nhưng nó lại được đối nghòch trong phương thức của HttpCachePolicy. Redirect Chuyển hướng đến đòa chỉ file trong cùng ứg dụng hay URL khác trong lúc thi hành. Write Ghi thông tin từ các kiểu dữ liệu như Char, Object, String, Array ra trang Web. WriteFile Ghi một luồng dữ liệu ra tập tin chỉ đònh. -----------------------------------------------
5
Bài 4: Các đối tượng trong ASP.NET 1. ĐỐI TƯNG APPLICATION Trong ASP, chúng ta sử dụng đối tượng Application để trao đổi thông tin giữa các phiên làm việc của các trình duyệt đối với trình chủ. Ví dụ trong trường hợp bạn muốn sử dụng biến Counter đếm số lần truy cập trang ASP của mọi trình duyệt. Biến này phải có hiệu lực trên toàn ứng dụng. Khi đó, mọi trình duyệt đều có thể lưu trữ và truy cập đến biến này. Chẳng hạn, bạn khởi tạo một biến Application có tên là Counter trong trang ex.asp, nếu đối tượng Application có tên Counter chưa có giá trò, chúng ta khởi tạo giá trò là 1. Ngược lại, chúng ta tăng giá trò của chúng lên 1 như ví dụ 3-1. Ví dụ 3-1: Đối tượng Application trong ASP <html> <head> <title> Welcome to ASP 's Objects </title> content="text/html; charset=UTF-8"> </head> <body> Application Objects
<% ‘ Nếu đối tượng chưa khởi tạo if Application ("Counter")="" then Application ("Counter")=1 Else ‘ Nếu đối tượng đã khởi tạo, tăng giá trò lên 1
Application ("Counter")=Application ("Counter")+1 End if ‘ In giá trò của đối tượng Application Response.Write("Application is Counter: " & Application ("Counter")) %> </body> </html>
Đối tượng Apllication trong ASP.NET được cài đặt trong lớp HttpApplicationState thuộc không gian tên System.Web. Mặc dù, ASP.NET hỗ trợ hầu hết các chức năng của ASP bằng hai Contents và StaticObjects Collections, nhưng chúng cũng có một số khác nhau mà chúng ta cần tìm hiểu. Chẳng hạn, hai phát biểu như sau là tương đương. Application.Contents.Remove("Counter") Application.Remove("Counter")
Trong ASP, để huỷ bỏ một đối tượng Application, bạn có thể khai báo phát biểu thứ nhất như ví dụ 3-2. Ví dụ 3-2: Xoá đối tượng Application trong ASP <html> <head> <title> Welcome to ASP 's Objects </title> content="text/html; charset=UTF-8"> </head> <body> Application Objects