Tìm kiếm Blog này

Thứ Bảy, 15 tháng 1, 2011

ASP.NET - MVC - ASP và MVC Chapter 3 - Part 1

1 Tại sao sử dụng ASP.NET MVC

1.1 ASP.NET MVC là gì

1.1.1 Mô hình MVC cơ bản

MVC viết tắt của các chữ cái đầu của Models, Views, Controllers. MVC chia giao diện UI thành 3 phần tương ứng: đầu vào của controller là các điều khiển thông qua HTTP request, model chứa các miền logic, view là những thứ được sinh ra trả về cho trình duyệt.

Figure 1. Mô hình MVC cơ bản
Lợi ích của việc dùng phương pháp MVC là sự phân đoạn rõ ràng giữa models, views, controllers bên trong ứng dụng. Cấu trúc sạch sẽ giúp cho việc kiểm tra lỗi ứng dụng trở nên dễ dàng hơn.

1.1.2 Một vài đặc tính trong ASP.NET MVC


  • Tách rõ ràng các mối liên quan, mở khả năng test TDD (test driven developer). Có thể test unit trong ứng dụng mà không cần phải chạy Controllers cùng với tiến trình của ASP.NET và có thể dùng bất kỳ một unit testing framework nào như NUnit, MBUnit, MS Test, v.v…
  • Có khả năng mở rộng, mọi thứ trong MVC được thiết kế cho phép dễ dàng thay thế/tùy biến ( ví dụ: có thể lựa chọn sử dụng engine view riêng, routing policy, parameter serialization, v.v…).
  • Bao gồm một ánh xạ URL mạnh mẽ cho phép xây dựng ứng dụng với những URL sạch, các URL không cần cs phần mở rộng ( ví dụ: có thể ánh xạ địa chỉ /Products/Edit/4 để thực hiện hành động “Edit” của lớp điều khiển ProductControllers hoặc ánh xạ địa chỉ /Blog/SomeTopic để thực hiện hành động “Display Topic” của lớp điều khiển BlogEngineController )
  • ASP.NET MVC Framework cũng hỗ trợ những file ASP.NET như .ASPX .ASCX và .Master, đánh dấu các tập tin này như một “view template” ( có thể dễ dàng dùng các tính năng của ASP.NET như lồng các trang Master, " <%= %> "snippets, mô tả server controls, template, data-binding, localization, v.v… ). Tuy nhiên sẽ không còn postback và interactive back server và thay vào đó là interactive end-user tới một Controller class ( không còn viewstate, page lifecycle )
  • ASP.NET MVC Framework hỗ trợ đầy đủ các tính năng bảo mật của ASP.NET như forms/windows authenticate, URL authorization, membership/roles, output và data caching, session/profile state, configuration system, provider architecture v.v…

1.2 Sự khác biệt với WebForm

ASP.NET WebForm sử dụng ViewState để quản lý, các trang ASP.NET đều có lifecycle, postback và dùng các web controls, các events để thực hiện các hành động cho UI khi có sự tương tác với người dùng nên hầu hết ASP.NET WebForm xử lý chậm.
ASP.NET MVC Framework chia ra thành 3 phần: Models, Views, Controllers. Mọi tương tác của người dùng với Views sẽ được thực hiện hành động trong Controllers, không còn postback, không còn lifecycle không còn events. Việc kiểm tra ( test ), gỡ lỗi ( debug ) với ASP.NET đều phải chạy tất cả các tiến trình của ASP.NET và mọi sự thay đổi ID của bất kỳ controls nào cũng ảnh hưởng đến ứng dụng. Đối với ASP.NET MVC Framework thì việc có thể sử dụng các unit test có thể thẩm định rất dễ dàng các Controller thực hiện như thế nào.

Tính năng

ASP.NET 2.0

ASP.NET MVC

Kiến trúc chương trình

Kiến  trúc  mô  hình  WebForm  à
Business à Database

Kiến trúc sử dụng việc phân chia chương   trình   thành   Controllers, Models, Views

Cú pháp chương trình

Sử dụng cú pháp của webform, tất các  sự kiện và controls do server quản lý

Các sự kiện được điều khiển bởi controllers, các controls không do server do server quản lý

Truy cập dữ liệu

Sử dụng hầu hết các công nghệ truy cập dữ liệu trong ứng dụng

Phần lớn dùng LINQ to SQL class
để tạo mô hình truy cập đối tượng

Debug

Debug chương trình phải thực hiện tất cả bao gồm các lớp truy cập dữ liệu,  sự  hiển  thị,  điều  khiển  các controls

Debug có thể sử dụng các unit test kiểm tra các phương thức trong controller

Tốc độ phân tải

Tốc  độ  phân  tải  chậm  khi  trong trang có quá nhiều các controls vì ViewState quá lớn

Phân tải nhanh hơn do không phải quản lý ViewState để quản lý các control trong trang

Tương tác với javascript

Tương tác với javascript khó khăn vì các controls được điều khiển bởi server

Tương tác với javascript dễ dàng vì các đối tượng không do server quản lý điều khiển không khó

URL Address

Cấu  trúc  địa  chỉ  URL  có  dạng
<filename>.aspx?&<các tham số>

Cấu  trúc  địa  chỉ  rành  mạch  theo dạng Controllers/Action/Id

2 Ví dụ xây dựng ứng dụng với ASP.NET MVC Framework

Tính năng ASP.NET MVC Framework hiện giờ mới là bản Beta trong .NET Framework 3.5. Để xây dựng ứng dụng với ASP.NET MVC Framework cần có môi trường hoạt động .NET Framework 3.5 ( cụ thể chương trình sau sẽ xây dựng với Visual Studio 2008 ), tiếp theo cần một MVC Framework. Mặc định trong Visual Studio 2008 chưa có sẵn ASP.NET MVC Web Applications. Có thể download ASP.NET MVC Framework tại địa chỉ http://www.microsoft.com/downloads/details.aspx?FamilyId=A24D1E00-CD35-4F66-BAA0- 2362BDDE0766&displaylang=en. Cài đặt Visual Studio 2008 sau đó cài đặt ASP.NET MVC Framework. Bây giờ có thể bắt đầu xây dựng ứng dụng với MVC.

2.1 Tạo Project vơi ASP.NET MVC Web Application

Trong chương trình Visual Studio 2008 đã cài đặt ASP.NET MVC Framework: File  New Project  Windows C#  ASP.NET MVC Web Application ( xem Figure 2).
Figure 2. Tạo một Projects ASP.NET MVC
Khi tạo một ASP.NET MVC Framework thì một hộp thoại Unit Test xuất hiện. Chọn Yes nếu muốn tạo một Project Test, chọn No nếu không muốn tạo một Unit Test. ( xem Figure 3)
Figure 3. Tạo Unit Test cho ASP.NET MVC
Sau khi một ứng dụng ASP.NET MVC Web Application được tạo, nhìn vào trong mục Solution Explorer sẽ thấy xuất hiện mặc định 3 thư mục: Models, Views, Controllers chứa các đối tượng tương ứng với các thành phần Models, Views, Controllers trong mô hình MVC. Mở rộng folder Controllers sẽ thấy HomeController.cs, mở rộng Views sẽ thấy folder Home, Shared và Account. Mở rộng folder Home sẽ thấy About.aspx và Index.aspx ( xem hình Figure 4 )
 
Figure 4. Solution Explorer MVC
Chạy ứng dụng bằng cách ấn F5. Nếu là ứng dụng mới tạo lần đầu thì sẽ có thông báo hỏi có cho phép mở chế độ Debug hay không? Nếu đồng ý chọn “Modify the Web.config file to enable debugging”, ko muốn debug chọn “Run without debugging”. ( xem Figure 5).
Figure 5. Mở Debug trong Web.config ASP.NET MVC
Kết quả khi chạy ứng dụng ( xem Figure 6) là ứng dụng được load vào browser. Trong ví dụ này chỉ có 2 trang là Index và About.
Figure 6. Thực thi ứng dụng mẫu ASP.NET MVC

2.2 Tìm hiểu định tuyến URL

Browser yêu cầu một địa chỉ từ controller action trong ASP.NET MVC Framework được gọi là định tuyến URL ( URL routing). Url routing sẽ chỉ định request tới controller action. URL routing sử dụng một bảng định tuyến để điều khiển các request. Bảng định tuyến được tạo khi ứng dụng bắt đầu được chạy lần đầu tiên. Bảng định tuyến được thiết lập trong file Global.asax
01.using System;
02.using System.Collections.Generic;
03.using System.Linq; using System.Web; using System.Web.Mvc;
04.using System.Web.Routing;
05.namespace HiTest
06.{
07.// Note: For instructions on enabling IIS6 or IIS7 classic mode,
09.public class MvcApplication : System.Web.HttpApplication
10.{
11.public static void RegisterRoutes(RouteCollection routes)
12.{
13.routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
14. 
15.routes.MapRoute(
16."Default"// Route name
17."{controller}/{action}/{id}"// URL with
18.new { controller = "Home", action = "Index", id = "" // Parameter defaults
19.);
20.}
21.protected void Application_Start()
22.{
23.RegisterRoutes(RouteTable.Routes);
24.}
25.}
26.}
Khi ứng dụng chạy lần đầu tiên, phương thức Application_Start() được gọi, phương thức này gọi một phương thức khác RegisterRoutes(RouteTable.Routes) để tạo ra bảng định tuyến. Định tuyến mặc định chia một request thành 3 phân đoạn, mỗi phân đoạn nằm giữa 2 dấu “/”. Phân đoạn đầu tiên chứa tên một controller, phân đoạn thứ 2 chứa tên controller action, phân đoạn thứ 3 là tham số đầu vào của controller action.
Ví dụ: với địa chỉ /Product/Details/3 được hiểu là:
 Controller = ProductController Action = Detail Id = 3 Controller mặc định sẽ là HomeController,
Action mặc định là Index,
Id mặc định là “” 
http://localhost:1727/ Ví dụ: với địa chỉ /Employee: Controller = EmployeeController Action = Index Id = “”

2.3 Xây dưng mô hinh dư liêu

2.3.1 Tạo cơ sở dữ liệu

Tư App_Data click phai chuôt chon Add  New Item  SQL Server Database đăt tên Database.mdf
 
Figure 7. Tạo cơ sở dữ liệu Database.mdf trong App_Data
Trong cơ sơ dư liêu Database.mdf tao 2 table: ( xem Figure 8, Figure 9 )
 
 Figure 8. Bảng SanPham trong cơ sơ dư liêu Database.mdf
 
Figure 9. Bảng LoaiSanPham trong cơ sở dữ liệu Database.mdf

Không có nhận xét nào:

Đăng nhận xét