Lập trình ứng dụng web với ASP.NET


ASP.NET là một công nghệ dùng để tạo các ứng dụng Web cũng như các trang web động. ASP.NET tương thích và được tích hợp với môi trường .NET. Đây là một công nghệ khác rất nhiều so với ASP. Trước tiên, chúng ta hãy xem xét chúng khác nhau như thế nào.

ASP (Active Server Pages) là một công nghệ cho phép chúng ta tạo các trang web động. Một trang ASP là một tập tin HTML trong đó có chứa những đoạn mã script chạy trên server (server – side script) viết bằng VBScript hay Jscript. Khi người dùng yêu cầu một trang ASP, máy chủ web sẽ trả về những phần HTML tĩnh trong tập tin ASP và thực thi những đoạn script trong đó, sau đó tạo ra kết quả dưới dạng HTML và trả về cho người dùng.Những vấn đề mà ASP gặp phải là:
•Những đoạn script là thông dịch làm chậm đi tốc độ dựng trang.
•Mã HTML và mã script trộn lẫn với nhau trong một tập tin ASP.
•Chúng ta phải viết mã trong ASP cho mọi thức kể cả những việc đơn giản như kiểm tra giá trị các trường trong một form. ASP.NET giải quyết hầu hết những vấn đề mà ASP gặp phải.Trước hết, các trang ASP.NET là biên dịch. Thứ hai, các trang ASP.NET là có cấu trúc, nghĩa là các đoạn mã script chạy trên server và nội dung HTML không bị trộn lẫn vào nhau. Mã script và HTML có thể tách biệt. ASP.NET cung cấp một chức năng gọi là code-behind. Chức năng này cho phép ta tách biệt mã script ra khỏi trang web, và đặt nó vào một tập tin khác. Một tập tin .aspx chứa phần HTML của ứng dụng và một tập tin .cs chứa mã lệnh. Chức năng này cho phép một nhóm có thể tập trung vào việc thiết kế HTML trong khi nhóm còn lại làm việc với những đoạn mã.

KHÁC BIỆT GIỮA ASP.NET VÀ ASP

ASP.NET được phác thảo (re-design) lại từ số không, nó được thay đổi tận gốc rễ và phát triển (develop) phù hợp với yêu cầu hiện nay cũng như vạch một hướng đi vững chắc cho tương lai Tin Học. Lý do chính là Microsoft đã quá chán nãn trong việc thêm thắt và kết hợp các công dụng mới vào các kiểu mẫu lập trình hay thiết kế mạng theo kiểu cổ điển nên Microsoft nghĩ rằng tốt nhất là làm lại một kiểu mẫu hoàn toàn mới thay vì vá víu chổ này chổ nọ vào ASP. Ðó là chưa kể đến nhiều phát minh mới ra đời sau này dựa trên các khái niệm mới mẽ theo xu hướng phát triển hiện nay của công nghệ Tin Học (Information Technology) cần được đưa vào kiểu mẫu phát triển mới đó. Nhờ vậy, ta mới có thể nói … khơi khơi ASP.NET không phải là ASP. Thật vậy , ASP.NET cung cấp một phương pháp hoàn toàn khác biệt với phương pháp của ASP.

Lưu ý:

Mặc dù ASP.NET và ASP khác biệt nhau nhưng chúng có thể hoạt động vui vẽ hài hoà với nhau trong Web Server của bạn (operate side-by-side). Do đó, khi bạn cài ASP.NET engine, bạn không cần lập trình lại các ứng dụng hiện có dưới dạng ASP của bạn tuy rằng, nếu muốn, bạn có thể làm điều đó rất dễ dàng.

SỰ THAY ÐỔI CƠ BẢN
ASP đã và đang thi hành sứ mạng được giao cho nó để phát triển mạng một cách tốt đẹp như vậy thì tại sao ta cần phải đổi mới hoàn toàn? Lý do đơn giản là ASP không còn đáp ứng đủ nhu cầu hiện nay trong lãnh vực phát triển mạng của công nghệ Tin Học. ASP được thiết kế riêng biệt và nằm ở tầng phiá trên hệ điều hànhWindows và InternetInformation Server, do đó các công dụng của nó hết sức rời rạt và giới hạn.

Trong khi đó, ASP.NET là một cơ cấu trong các cơ cấu của hệ điều hành Windows dưới dạng nền hay khung .NET (.NET framework), như vậy ASP.NET không những có thể dùng các object của các ứng dụng cũ mà còn có thể xử dụng tất cả mọi tài nguyên mà Windows có, dễ dàng như … ăn cơm tấm bì sườn chả vậy.

Ta có thể tóm tắc đại khái sự thay đổi như sau:

-Tập tin của ASP.NET (ASP.NET file) có extension là .ASPX, còn tập tin của ASPlà .ASP.
-Tập tin của ASP.NET (ASP.NET file) được phân tích ngữ pháp (parsed) bởi XSPISAPI.DLL, còn tập tin của ASP được phân tích bởi ASP.DLL.
-ASP.NET là kiểu mẫu lập trình phát động bằng sự kiện (event driven), còn các trang ASP được thi hành theo thứ tự tuần tự từ trên xuống dưới.
-ASP.NET xử dụng trình biên dịch (compiled code) nên rất nhanh, còn ASP dùng trình thông dịch (interpreted code) do đó hiệu suất và tốc độ phát triển cũng thua sút hẳn.
-ASP.NET yểm trợ gần 25 ngôn ngữ lập trình mới với .NET và chạy trong môi trường biên dịch (compiled environment), còn ASP chỉ chấp nhận VBScript và JavaScript nên ASP chỉ là một scripted language trong môi trường thông dịch(in the interpreter environment). Không những vậy, ASP.NET còn kết hợp nhuần nhuyễn với XML (Extensible Markup Language) để chuyển vận các thông tin (information) qua mạng.
-ASP.NET yểm trợ tất cả các browser và quan trọng hơn nữa là yểm trợ các thiết bị lưu động (mobile devices). Chính các thiết bị lưu động, mà mỗi ngày càng phổ biến, đã khiến việc dùng ASP tron gviệc phát triển mạng nhằm vươn tới thị trường mới đó trở nên vô cùng khó khăn.

PHƯƠNG PHÁP LÀM VIỆC TRONG MẠNG
Internet đã và đang đem lại nhiều điều kỳ diệu cho đời sống của ta. Thật vậy, nó có khả năng ‘nối vòng tay lớn’ mọi người trên thế giới tưởng chừng như cách biệt xa xôi ngàn dặm bổng dưng lại gần trong gang tất, kỹ thuật này đã mang lại biết bao nhiêu điều mới mẽ đến cho ta tỷ như e-mail, instant messaging hay World Wide Web (hay gọi tắc là WWW hay Web hay mạng) làm việc thông tin liên lạc trở nên dễ dàng, do đó con người cùng đời sống cũng thay đổi nhanh chóng như …’cuốn theo chiều gió’ vậy.

Từ khởi đầu, việc phát triển 1 mạng hết sức là đơn giản, chỉ cần một hay vài trang trong đó ta muốn chia sẽ bất cứ thông tin gì ta thích là chắc chắn cũng có người ghé qua thăm viếng. Tuy vậy, các trang trong thời kỳ khởi nguyên của mạng rất thụ động, nó không cho phép khách vãng lai trao đổi thông tin một cách hổ tương (interact) với ta, nghĩa là thăm thì có thăm nhưng không hỏi hay chia sẽ được gì với nhau.

Dần dà, mạng phát triển thêm nhiều công dụng khác nhau gắn thêm vào nào là hình ảnh, nào là tables, forms và cuối cùng có thể trao đổi thông tin hay tâm tình với khách vãng lai qua các ứng dụng như guestbook, thăm dò ý kiến (user, customer hoặc là client poll) hay các diễn đàn với mọi tiết mục trên trời dưới đất. Sau đó, các chuyên gia phát triển mạng lại thêm thắt và trang điểm cho mạng của mình càng lúc càng đặc sắc hơn, cùng muôn mầu muôn vẽ.

Tất cả những cố gắng đó đã đem tác động hổ tương đến giữa Web Master (hay nhóm quản lý mạng) và khách vãng lai như ta được chứng kiến hiện nay, tuy vậy vẫn còn thiếu hẳn 1 phần quan trọng nhất là phần nội dung cơ động tuỳ biến (dynamic content). Do đó vai trò của phương pháp dịch vụ (server processing) được phát triển để có thể trình bày nội dung được lưu trữ trong các cơ sở dữ liệu (database) tuỳ theo yêu cầu riêng biệt cho từng cá nhân.

CÁC WEB FORM

Các ứng dụng .NET, hay còn gọi là Web Form, mang đến khả năng RAD (Rapid ApplicationDevelopment – quy trình phát triển ứng dụng nhanh) cho các ứng dụng web. Các web form được tạo ra bằng cách nhúng các control vào trong một form, sau đó nhấp đúp vào những control đó và viết các thủ tục quản lý sự kiện (event handler) cho chúng. Những control dùng trong web form được giới thiệu trong thư viện .NET Framework. Một số control chỉ là dạng đơn giản giống như các thẻ HTML. Trong khi số còn lại là những đối tượng UI (User Interface – giao diện người dùng) phức tạp. Chúng ta sẽ xây dựng một web form đơn giản để hiểu rõ hơn cách làm việc của một ứng dụng ASP.NET Web Form.
Trong ứng dụng này, chúng ta sẽ tạo một trang đăng ký đơn giản cho phép sinh viên đăng ký một khóa học trực tuyến.

THỰC HIỆN

Mở Visual Studio .NET. Tạo một ứng dụng ASP.NET tên ‘Registration’ bằng cách chọn ASP.NET Web Application từ danh sách. Làm như vậy, bạn cũng đã tạo ra một thư mục ảo tên là Registration trong IIS và vị trí thực của nó là‘C:InetpubwwwrootRegistration’.
Ngay khi chúng ta tạo mộtproject, những tập tin sau đây sẽ được tạo ra trong thư mục Registration:
• • • • • Global.aspx: chứa các chỉ thị chương trình ở cấp ứng dụng, các trình quản lý cho ứng dụng, các sự kiện ở cấp phiên làm việc và khai báo cho các đối tượng có thể truy xuất toàn cục đối với ứng dụng.
• • • • • Web.config: chứa thông tin cấu hình cho ứng dụng dưới dạng XML.
• • • • • Webform1.aspx: chứa phần HTML của Web Form.
• • • • • Webform1.aspx.cs: chứa mã lệnh viết bằng C#.NET.
• • • • • AssemblyInfo.cs: chứa mã lệnh chuẩn cho phần mô tả về assembly.
• • • • • Webform1.disco: mô tả những dịch vụ web dùng trong project. Trong ứng dụng này, chúng ta chỉ quan tâm đến 2 tập tin Webform1.aspx và Webform1.aspx.cs.

Sau bước khởi tạo, một web form rỗng sẽ được hiển thị ở chế độ design. Chúng ta sẽ thêm một bảng vào form này. Chọn trình đơn Table, Insert | Table, hộp thoại Insert Table xuất hiện. Chọn số hàng (row) là 11 và số cột (column) là 3. Bạn sẽ thấy một bảng dưới dạng lưới được hiển thị trong form. Bạn chèn thêm các control: label, textbox, validation và button như hình bên.
—Chi tiết của các control được cho trong bảng dưới đây:
- Control Name
- TextBox uid
- TextBox pass
- TextBox cpass
- TestBox sname
- TextBox address
- TextBox state
- TextBox zip
- TextBox country
- TextBox mail
- RadioButtonList course
- Button submit
Các control (được khoanh tròn) được gọi là validation control.Quá trình khi nào chúng ta nhập thông tin vào trong form và đăng ký với server gọi là postback. Các validation control cung cấp một phương pháp để kiểm tra dữ liệu nhập từ người dùng mà không cần phải viết mã. Khi xảy ra quá trình postback (ví dụ như khi chúng ta kích vào nút Submit Form) mỗi validation control sẽ kiểm tra dữ liệu nhập của control mà nó nhận nhiệm vụ kiểm tra và thay đổi thuộc tính IsValid của nó. Nếu thuộc tính này là false nghĩa là người dùng đã nhập dữ liệu không hợp lệ. Trong trường hợp này, một thông báo lỗi sẽ xuất hiện. Nếu là true thì quá trình postback sẽ xảy ra. Những validation control chúng ta dùng trong ứng dụng này được cho trong bảng sau:
- Control
- Name
- RequiredFieldValidator reqid
- CompareValidator compass
- RegularExpressionValidator checkmail
Textbox pass dùng để nhập vào password. Nhìn chung password không nên hiển thị ra khi người dùng nhập vào (vì lý do bảo mật), do đó chúng ta cần phải thay đổi thuộc tính Textmode của textbox thành Password. Bây giờ mỗi khi người dùng nhập vào textbox pass các dấu hoa thị ‘*’ sẽ xuất hiện thay vì các ký tự. Tiếp theo chúng ta cần thay đổi thuộc tính của các validation control.

Thay đổi thuộc tính ErrorMessage của control reqid thành dòng thông báo Enter ID, sẽ xuất hiện người dùng không nhập vào User ID (là dòng chữ được khoanh tròn như trong hình trên). Sau đó tương ứng reqid với uid bằng cách thiết lập thuộc tính ControlToValidate của nó thành uid.Tiếp theo thay đổi thuộc tính ControlToValidate của compass thành cpass và thuộc tính ControlToCompare thành pass. Control này dùng để kiểm tra password trong 2 textbox pass và cpass xem có giống nhau hay không. Nếu không giống thì hiện thông báo lỗi Password are not the same. Để thực hiện điều này chúng ta cần thiết lập thuộc tính Errormessage của control này thành dòng thông báo trên.Tương tự, ta thay đổi ErrorMessage của control checkmail thành dòng thông báo Enter Valid email ID.Thiết lập ControlToValidate thành mail. Ở đây ta cần đảm bảo địa chỉ email người dùng nhập vào phải có dạng thức đúng, do đó chúng ta cần thiết lập thuộc tính RegularExpression của control này thành Internet e-mail Format.

Chú ý: 3 control vừa nêu tuy đều là validation control nhưng chúng là 3 kiểu khác nhau và dùng cho 3 mục đích khác nhau, xin các bạn đừng nên nhầm lẫn. Trong ứng dụng này, chúng ta sẽ lưu thông tin của các sinh viên vào cơ sở dữ liệu. Do đó mỗi khi sinh viên nhập xong thông tin và click nút Submit Form, một trình quản lý (handler) cần phải được gọi để ghi những thông tin này vào cơ sở dữ liệu. Thêm sự kiện Add cho nút Submit Form và viết mã như bên dưới:

Code:
Private void Submit_Click ( Objectsender, System.EventArgs e )
{
String constr = @”Provider=Microsoft.Jet.OLEDB.4.0;
Data Source=c:online.mdb” ;
String cmdstr = “SELECT * fromregistration” ;
OleDbDataAdapter da ;
da = new OleDbDataAdapter (cmdstr, constr ) ;
DataSet ds = new DataSet( ) ;
DataTable dt = ds.Tables [ “registration” ] ;
da.Fill ( ds, “registration” ) ;
DataRow row = dt.NewRow( ) ;
row[0]= uid.Text ;
row[1]= pass.Text ;
row[2]= sname.Text ;
row[3]= address.Text ;
row[4]= state.Text ;
row[5]= zip.Text ;
row[6]= country.Text ;
row[7]= mail.Text ;
row[8]=course.SelectedItem.Text;
dt.Rows.Add ( row ) ;
OleDbCommandBuilder
mybuilder ;
mybuilder = new OleDbCommandBuilder ( da ) ;
da.Update ( ds, “registration” ) ;
Response.Redirect ( “Confirm.aspx” );
}

Chúng ta dùng OLEDB .NET Data provider theo cách không kết nối (disconnect) và data source là tập tin online.mdb trên ổ đĩa cục bộ. Trong đoạn mã trên, chúng ta đã tạo một connection string, một command string, một đối tượng OleDbDataAdapter và một đối tượng DataSet. Tiếp theo ta sẽ điền đầy DataSet với bảng từ cơ sở dữ liệu và trích xuất trong đối tượng DataTable tham khảo bởi dt; sau đó tạo một đối tượng DataRow mới. Chúng ta khởi tạo các trường dữ liệu tương ứng với thông tin mà sinh viên đã nhập vào form đăng ký. Tiếp theo ta phải thêm một row vào đối tượng DataTable tham khảo bởi dt; sau đó lại tạo một đối tượng OleDbCommandBuilder và cập nhật cơ sở dữ liệu bằng phương thức Update().

Cuối cùng chúng ta dùng phương thức tĩnh Redirect() của lớp Response để chuyển sang trang khác tên là Confirm.aspx. Ta có thể tạo ra trang này bằng cách thêm một Webform vào project, đặt tên là Confirm.aspx và thêm vào dòng thông báo như trong hình bên dưới.

BIÊN DỊCH

Chúng ta biên dịch chương trình bằng cách chọn Build|Compile. Khi biên dịch các thẻ HTML trong tập tin Webform1.aspx và mã lệnh trong tập tin Webform1.aspx.cs, một tập tin trung gian được tạo ra. Tập tin này chứa một lớp viết bằng C# và được dẫn xuất từ lớp Webform1. Lớp này được biên dịch thành tập tin Registration.dll. Ở đây chúng ta đã chọn để triển khai các tập tin trên máy cục bộ. Nhưng nếu muốn triển khai chúng trên Web Server, chúng ta cần phải copy các tập tin aspx và .aspx.cs vào thư mục ảo. Chúng ta cũng có thể copy cả tập tin Registration.dll. Tuy nhiên điều này là không cần thiết lắm, bởi vì tập tin này sẽ được tạo ra ngay khi có yêu cầu đầu tiên. Quá trình biên dịch có thể mô tả bằng hình bên dưới.

Chúng ta hãy xem tập tin WebForm1.aspx trong chế độ HTML. Tập tin này chứa các thẻ ASP.NET cho ứng dụng của chúng ta. Dòng đầu tiên của tập tin này còn gọi là chỉ thị @page: <%@ Page Language = “C#” Codebehind = “WebForm1.aspx.cs” Inherits = “Registration.WebForm1”%> Chỉ thị này định nghĩa các thuộc tính tổng quát và các thiết lập biên dịch cho các tập tin aspx. Nó cũng xác định tập tin chứa mã và lớp cơ sở trong đó lớp trung gian được dẫn xuất.

GỬI MỘT YÊU CẦU(REQUEST)

Bây giờ, nếu người dùng muốn gửi một yêu cầu để thực thi chương trình, thì có thể khởi động trình duyệt và nhập vào địa chỉ URL sau: 404 Not Found WebForm1.aspx Trình duyệt sẽ gửi một yêu cầu đến server. Trên server, một đối tượng của lớp đại diện bởi registration.dll sẽ được tạo ra và thủ tục quản lý sự kiện Page_Load() sẽ được gọi. Thủ tục này sẽ tạo ra nội dung HTML trả về cho người dùng. Bây giờ mỗi khi sinh viên nhập thông tin vào form đăng ký và click nút Submit Form, anh ta sẽ nhận được trang web thông báo như hình bên.

Theo TRIHUYN DIGIFUNS.NET

VN:F [1.9.12_1141]
Rating: 8.4/10 (8 votes cast)
VN:F [1.9.12_1141]
Rating: +1 (from 1 vote)
Lập trình ứng dụng web với ASP.NET , 8.4 out of 10 based on 8 ratings

Google+ Comments

Tags: ,

About Vinalink Design

Vinalink design là công ty thuộc Vinalink media - Doanh nghiệp 14 năm kinh nghiệm thiết kế web cao cấp cho hơn 1000 công ty trong đó có Yamaha, Lifan, Toyota, Vietinbank, VNPT, Marine Time Bank, Thiên Đường Bảo Sơn, Thể Công, HUD, Lilama, Honda.... Không chỉ đơn giản là thiết kế web, Vinalink Design tư vấn web theo tiêu chuẩn SEO, SMO, CRO, UI, UX... để đảm bảo quý khách sẽ tăng được ít nhất 50% lượng đặt hàng qua website ! Chúng tôi sẵn sàng cam kết điều này nếu quý vị gọi điện đặt lịch tư vấn : 04-382.12345 (Hanoi). TPHCM, Đà nẵng hay ngoài giờ? : 0915157599. Email : vinalink@gmail.com