Các ứng
dụng web là các chương trình thực thi trên máy chủ web (Web server) và truy cập
và tương tác với người sử dụng thông qua trình duyệt web. Khái niệm này được
người sử dụng thừa nhận rộng rãi, tuy nhiên ngày nay CNTT phát triển mạnh mẽ,
một loạt các nền tảng công nghệ ra đời, ứng dụng web hoàn toàn có thể không cần
phải tương tác hoặc thực thi trên máy chủ web, có nghĩa là ứng dụng web này
chạy thuần túy trên trình duyệt duyệt web. Điều đó có nghĩa ứng dụng web
không cần kết nối Internet vẫn có thể chạy được.
Ứng dụng web cho phép người sử dụng có thể chia sẻ và truy cập thông tin thông qua Internet. Lập trình viên có thể tạo các ứng dụng web để phục vụ mục tiêu thương mại ví dụ như các website bán hàng trực tuyến …
Ứng dụng web có thể được nhìn theo nhiều hướng khác nhau: Hướng nhìn của các nhà phát triển ứng dụng, thường chia ứng dụng web thành nhiều các phân tầng khác nhau, mỗi phân tầng đảm nhiệm một số các nhiệm vụ mang tính logic của ứng dụng. Hướng nhìn triển khai ứng dụng, thường phân chia ứng dụng thành các thành phần vật lý khác nhau, các thành phần vật lý này được cài đặt tại các máy tính (các nút mạng) khác nhau trong hệ thống.
1.1. Phân tầng trong ứng dụng Web.
Hướng tiếp cận này phân tách ứng dụng thành các thành phần mang tính logic. Đây là hướng nhìn của các nhà phát triển ứng dụng, thông thường ứng dụng web được phân chia thành các phân tầng sau :
Ứng dụng web cho phép người sử dụng có thể chia sẻ và truy cập thông tin thông qua Internet. Lập trình viên có thể tạo các ứng dụng web để phục vụ mục tiêu thương mại ví dụ như các website bán hàng trực tuyến …
Ứng dụng web có thể được nhìn theo nhiều hướng khác nhau: Hướng nhìn của các nhà phát triển ứng dụng, thường chia ứng dụng web thành nhiều các phân tầng khác nhau, mỗi phân tầng đảm nhiệm một số các nhiệm vụ mang tính logic của ứng dụng. Hướng nhìn triển khai ứng dụng, thường phân chia ứng dụng thành các thành phần vật lý khác nhau, các thành phần vật lý này được cài đặt tại các máy tính (các nút mạng) khác nhau trong hệ thống.
1.1. Phân tầng trong ứng dụng Web.
Hướng tiếp cận này phân tách ứng dụng thành các thành phần mang tính logic. Đây là hướng nhìn của các nhà phát triển ứng dụng, thông thường ứng dụng web được phân chia thành các phân tầng sau :
Hình số 1: Phân tầng trong ứng dụng Web
·
Tầng trình diễn (Presentation
Layer): Thành phần giao diện, là các form của chương trình tương
tác với người sử dụng.
·
Tầng xử lý nghiệp vụ (Business
Logic Layer): Xử lý các nghiệp vụ của chương trình như
tính toán, xử lý hợp lệ và toàn vẹn về mặt dữ liệu.
·
Tầng dữ liệu (Data Layer): Lưu
trữ, xử lý thông tin liên quan tới dữ liệu của chương trình. Thông thường tầng
này bao gồm tầng giao tiếp với các hệ Quản trị CSDL và hệ Quản trị CSDL.
1.2. Kiến trúc ứng dụng web
Theo hướng tiếp cận này, phân chia ứng dụng thành các thành phần vật lý. Đây là hướng nhìn triển khai ứng dụng, ứng dụng web thường được phân chia như sau :
Theo hướng tiếp cận này, phân chia ứng dụng thành các thành phần vật lý. Đây là hướng nhìn triển khai ứng dụng, ứng dụng web thường được phân chia như sau :
·
Single-Tier : Tất
cả các phân tầng (layer) của ứng dụng đều được tích hợp và cài đặt trên 1 máy
tính.
·
Two-Tier :
Theo kiến trúc này cả 3 tầng (layer) được phần bố cài đặt trên 2 tier đó
là client và server, tầng trình diễn cài đặt trên client, 2 tầng (Tầng nghiệp
vụ và tầng dữ liệu) cài đặt trên server.
·
Three-Tier : Theo
kiến trúc này 3 tầng (layer) sẽ được cài đặt tại các máy tính khác nhau, mỗi
layer sẽ giao tiếp với các layer khác nhằm đáp ứng các yêu cầu trao đổi thông
tin giữa chúng thông qua cơ chế (Request/Response).
Hình số 2 : Ví dụ mô hình 3-tier
·
N-Tier : Đây là
kiến trúc mở rộng của kiến trúc Tree-Tier, thay vì phân chia thành 3-tier thì
chúng ta chia thành N-Tier; Tuy nhiên thông thường với các kiến trúc phức tại
chỉ dừng lại ở mức độ 5-tier.
Chú ý : Layer khác
hoàn toàn với Tier. Mọi người thường hay nhầm lẫn giữa chúng. Tier thường gắn
liền với phần cứng (phân chia ứng dụng thành các thành phần vật lý khác nhau,
khái niệm này gắn liền với mô hình Client/Server). Còn layer là các lớp cấu tạo
nên một ứng dụng (Phân chia ứng dụng thành các thành phần Logic khác nhau).
Layer gắn với mô hình phát triển còn Tier gắn với mô hình triển khai.
2. Giới thiệu ASP.Net MVC
2.1. Tổng quát Asp.Net MVC
Asp.Net MVC là một Framework sử dụng .Net Framework cho việc phát triển ứng dụng web động, trước khi Asp.Net MVC ra đời, lập trình viên sử dụng công nghệ Asp.Net Web Form trên nền tảng .Net Framework để phát triển ứng dụng Web động.
Asp.Net MVC phát triển trên mẫu thiết kế chuẩn MVC, cho phép người sử dụng phát triển các ứng dụng phần mềm. MVC là tên một mẫu phát triển ứng dụng, phương pháp này chia nhỏ một ứng dụng thành ba thành phần để cài đặt, mỗi thành phần đóng một vai trò khác nhau và ảnh hưởng lẫn nhau, đó là models, views, và controllers.
Hình vẽ sau đây mô tả mô hình thiết kế MVC.
2. Giới thiệu ASP.Net MVC
2.1. Tổng quát Asp.Net MVC
Asp.Net MVC là một Framework sử dụng .Net Framework cho việc phát triển ứng dụng web động, trước khi Asp.Net MVC ra đời, lập trình viên sử dụng công nghệ Asp.Net Web Form trên nền tảng .Net Framework để phát triển ứng dụng Web động.
Asp.Net MVC phát triển trên mẫu thiết kế chuẩn MVC, cho phép người sử dụng phát triển các ứng dụng phần mềm. MVC là tên một mẫu phát triển ứng dụng, phương pháp này chia nhỏ một ứng dụng thành ba thành phần để cài đặt, mỗi thành phần đóng một vai trò khác nhau và ảnh hưởng lẫn nhau, đó là models, views, và controllers.
Hình vẽ sau đây mô tả mô hình thiết kế MVC.
Hình số 3 : Mẫu thiết kế MVC
Các đặc trưng chính của Model, View và
Controller trong mẫu thiết kế chuẩn MVC.
·
Models: Các đối
tượng Models là một phần của ứng dụng, các đối tượng này thiết lập logic của
phần dữ liệu của ứng dụng. Thông thường, các đối tượng model lấy và lưu trạng
thái của model trong CSDL. Ví dụ như, một đối tượng Employee (nhân viên) sẽ lấy
dữ liệu từ CSDL, thao tác trên dữ liệu và sẽ cập nhật dữ liệu trở lại vào bảng
Eployees ở SQL Server. Trong các ứng dụng nhỏ, model thường là chỉ là một khái
niệm nhằm phân biệt hơn là được cài đặt thực thụ, ví dụ, nếu ứng dụng chỉ đọc
dữ liệu từ CSDL và gởi chúng đến view, ứng dụng khong cần phải có tầng model và
các lớp lien quan. Trong trường hợp này, dữ liệu được lấy như là một đối tượng
model (hơn là tầng model).
Views: Views là các thành phần dùng để hiển thị giao diện người dùng (UI). Thông thường, view được tạo dựa vào thông tin dữ liệu model. Ví dụ như, view dùng để cập nhật bảng Employees sẽ hiển thị các hộp văn bản, drop-down list, và các check box dựa trên trạng thái hiện tại của một đối tượng Employee.
Controllers: Controller là các thành phần dùng để quản lý tương tác người dùng, làm việc với model và chọn view để hiển thị giao diện người dùng. Trong một ứng dụng MVC, view chỉ được dùng để hiển thị thông tin, controller chịu trách nhiệm quản lý và đáp trả nội dung người dùng nhập và tương tác với người dùng. Ví dụ, controller sẽ quản lý các dữ liệu người dùng gởi lên (query-string values) và gởi các giá trị đó đến model, model sẽ lấy dữ liệu từ CSDL nhờ vào các giá trị này.
Views: Views là các thành phần dùng để hiển thị giao diện người dùng (UI). Thông thường, view được tạo dựa vào thông tin dữ liệu model. Ví dụ như, view dùng để cập nhật bảng Employees sẽ hiển thị các hộp văn bản, drop-down list, và các check box dựa trên trạng thái hiện tại của một đối tượng Employee.
Controllers: Controller là các thành phần dùng để quản lý tương tác người dùng, làm việc với model và chọn view để hiển thị giao diện người dùng. Trong một ứng dụng MVC, view chỉ được dùng để hiển thị thông tin, controller chịu trách nhiệm quản lý và đáp trả nội dung người dùng nhập và tương tác với người dùng. Ví dụ, controller sẽ quản lý các dữ liệu người dùng gởi lên (query-string values) và gởi các giá trị đó đến model, model sẽ lấy dữ liệu từ CSDL nhờ vào các giá trị này.
Ví
dụ: sử
dụng biểu đồ tuần tự để mô tả mô hình MVC.
Hình số 4 : Biểu đồ tuần tự mô tả mô hình MVC
2.2. Lợi ích khi xây dựng ứng dụng web dựa trên mô
hình MVC
Nền tảng ASP.NET MVC mang lại những lợi ích sau:
Nền tảng ASP.NET MVC mang lại những lợi ích sau:
·
Dễ dàng quản lý sự phức tạp của ứng dụng bằng cách chia ứng dụng
thành ba thành phần model, view, controller
·
Hỗ trợ tốt hơn cho mô hình phát triển ứng dụng hướng kiểm thử
(TDD)
·
Hỗ trợ tốt cho các ứng dụng được xây dựng bởi những đội có nhiều
lập trình viên và thiết kế mà vẫn quản lý được tính năng của ứng dụng
2.3 Tính năng của ASP.Net MVC
·
Tách bạch các tác vụ của ứng dụng (logic nhập liệu, business
logic, và logic giao diện), dễ dàng kiểm thử và mặc định áp dụng hướng phát
triển TDD. Tất cả các tính năng chính của mô hình MVC được cài đặt dựa trên
interface và được kiểm thử bằng cách sử dụng các đối tượng mocks, mock object
là các đối tượng mô phỏng các tính năng của những đối tượng thực sự trong ứng
dụng. Bạn có thể kiểm thử unit-test cho ứng dụng mà không cần chạy controller
trong tiến trình ASP.NET, và điều đó giúp unit test được áp dụng nhanh chóng và
tiện dụng. Bạn có thể sử dụng bất kỳ nền tảng unit-testing nào tương thích với
nền tảng .NET.
·
MVC là một nền tảng khả mở rộng (extensible) & khả nhúng
(pluggable). Các thành phần của ASP.NET MVC được thiết kể để chúng có thể được
thay thế một cách dễ dàng hoặc dễ dàng tùy chỉnh. Bạn có thể nhúng thêm view
engine, cơ chế định tuyến cho URL, cách kết xuất tham số của action-method và
các thành phần khác. ASP.NET MVC cũng hỗ trợ việc sử dụng Dependency Injection
(DI) và Inversion of Control (IoC). DI cho phép bạn gắn các đối tượng vào một
lớp cho lớp đó sử dụng thay vì buộc lớp đó phải tự mình khởi tạo các đối tượng.
IoC quy định rằng, nếu một đối tượng yêu cầu một đối tượng khác, đối tượng đầu
sẽ lấy đối tượng thứ hai từ một nguồn bên ngoài, ví dụ như từ tập tin cấu hình.
Và nhờ vậy, việc sử dụng DI và IoC sẽ giúp kiểm thử dễ dàng hơn.
·
ASP.NET MVC có thành phần ánh xạ URL mạnh mẽ cho phép bạn xây
dựng những ứng dụng có các địa chỉ URL xúc tích và dễ tìm kiếm. Các địa chỉ URL
không cần phải có phần mở rộng của tên tập tin và được thiết kế để hỗ trợ các
mẫu định dạng tên phù hợp với việc tối ưu hóa tìm kiếm (URL) và phù hợp với lập
địa chỉ theo kiểu REST..
·
Hỗ trợ các tính năng có sẵn của ASP.NET như cơ chế xác thực
người dùng, quản lý thành viên, quyền, output caching và data caching, seession
và profile, quản lý tình trạng ứng dụng, hệ thống cấu hình…
·
ASP.NET MVC sử dụng view engine Razor View Engine cho phép thiết
lập các view nhanh chóng, dễ dàng và tốn ít công sức hơn so với việc sử dụng
Web Forms view engine.
2.4. Lịch sử phát triển của Asp.Net MVC
Asp.Net 1.0 : Phiên bản đầu tiên được phát hành vào tháng 3 năm 2009 trên nền tảng bộ .Net Framework 3.5 bộ Visual Studio 2008.
Asp.Net 2.0 : Phiên bản này được phát hành vào tháng 3 năm 2010 trên bộ .Net Framework 3.5 và .Net Framework 4.0 bộ Visual Studio 2010.
Asp.Net MVC 3 : Phiên bản này được phát hành vào tháng 1 năm 2011 trên nền tảng bộ .Net Framework 4.0, các đặc điểm chính của phiển bản này :
Asp.Net 1.0 : Phiên bản đầu tiên được phát hành vào tháng 3 năm 2009 trên nền tảng bộ .Net Framework 3.5 bộ Visual Studio 2008.
Asp.Net 2.0 : Phiên bản này được phát hành vào tháng 3 năm 2010 trên bộ .Net Framework 3.5 và .Net Framework 4.0 bộ Visual Studio 2010.
Asp.Net MVC 3 : Phiên bản này được phát hành vào tháng 1 năm 2011 trên nền tảng bộ .Net Framework 4.0, các đặc điểm chính của phiển bản này :
·
So với phiên bản ASP.NET MVC2 thì tính năng mới được hỗ trợ thêm
HTML5 và CSS3; tính năng này chỉ hỗ trợ cho những trình duyệt mới;
·
Cải thiện về Model validation;
·
Hỗ trợ 2 View Engine: RAZOR, ASPX, kể cả Open source trong khi
ASP.NET MVC2 chỉ có ASPX;
·
Controller được cải tiến hơn như thuộc tính ViewBag và kiểu
ActionResult;
·
Cải thiện Dependency Injection với IDpendencyResolver (có 2
phần: DependencyResolver và interface IDpendencyResolver)trong ASP.NET MVC3;
đây là lớp thực thi mô hình Service Locator, cho phép framework gọi DIContainer
khi cần làm việc với 1 lớp thực thi từ 1 kiểu cụ thể
·
Cách tiếp cận với JavaScript được hạn chế;
·
Hỗ trợ caching trong Partial page;
Asp.Net
4.0 : Phiên
bản này được phát hành vào tháng 8 năm 2012 trên nền tảng bộ .Net Framework 4.0
và .Net Framework 4.5 trên phiên bản Visual Studio 2010 SP1 and Visual Studio
2012. Phiên bản này có các đặc điểm chính như sau :
·
ASP.NET Web API ra đời, nhằm đơn giản hoá việc lập trình với
HTML hiện đại và đây là một cải tiến mới thay cho WCF Web API;
·
Mặc định của dự án được cải thiện hơn về hình thức bố trí, giúp
dễ nhìn hơn;
·
Mẫu Empty Project là project trống, phù hợp cho những tín đồ
developer muốn nâng cao khả năng lập trình với ASP.NET MVC4;
·
Giới thiệu jQuery Mobile, và mẫu Mobile Project cho dự án;
·
Hỗ trợ Asynchrnous Controller;
·
Kiểm soát Bundling và Minification thông qua web.config
·
Hỗ trợ cho việc đăng nhập OAuth và OpenID bằng cách sử dụng thư
viện DotNetOpenAuth;
·
Phiên bản mới Windows Azure SDK 1.6 được phát hành;
Asp.Net
MVC 5 : Phiên
bản này được phát hành vào tháng 10 năm 2013 trên nền tảng bộ .Net Framework
4.5 và .Net Framework 4.5.1 trên phiên bản Visual Studio 2013. Các đặc điểm
chính của phiên bản này như sau :
·
Với MVC5 thì cải tiến hơn so với ASP.NET MVC4, Bootstrap được
thay thế mẫu MVC mặc định;
·
Chứng thực người dùng Authentication Filter được tuỳ chỉnh hoặc
chứng thực từ hãng thứ 3 cung cấp;
·
Với Filter overrides, chúng ta có thể Filter override trên
Method hoặc Controller;
·
Thuộc tính Routing được tích hợp vào MVC5;
3.
Kiến trúc ứng dụng Asp.Net MVC
3.1 Giao tiếp trong kiến trúc Asp.Net MVC
Các thành phần cơ bản của ứng dụng Asp.Net MVC bao gồm :
3.1 Giao tiếp trong kiến trúc Asp.Net MVC
Các thành phần cơ bản của ứng dụng Asp.Net MVC bao gồm :
·
MVC Framework
·
Route engine
·
Route configuration
·
Control
·
Model
·
View engine
·
View
Các thành phần này giao tiếp với nhau nhằm xử
lý các yêu cầu của ứng dụng Asp.Net MVC. Quá trình xử lý yêu cầu thường liên
quan tới một chuỗi các xử lý, mỗi xử lý sẽ được một component trong Asp.net đảm
nhiệm.
1.
Trình duyệt gửi yêu cầu của ứng dụng Asp.Net MVC
2.
MVC Engine chuyển yêu cầu tới cho Routing engine (Bộ điều hướng)
3.
Routing engine kiểm tra cấu hình điều hướng (route
configuration) của ứng dụng nhằm chuyển đến các controller phù hợp với yêu cầu.
4.
Khi Controller được tìm thấy, control này sẽ được thực thi
5.
Nếu Controller không được tìm thấy, bộ điều hướng sẽ chỉ ra rằng
controller không được tìm thấy và MVC Engine sẽ thông báo lỗi cho trình duyệt.
6.
Controller giao tiếp với model, tầng Model đại diện cho các
Entity bên trong hệ thống, Controller làm việc với tầng model để lấy thông tin
cần cho người dùng.
7.
Controller yêu cầu View engine hiển thị thông tin dựa trên dữ
liệu của tầng model
8.
View engine trả kết quả cho controller
9.
Controller gửi kết quả cho trình duyệt thông qua giao thức Http.
Hình số 5 : Giao tiếp trong kiến trúc Asp.Net MVC
3.2. Các vấn đề cơ bản về Url và Routing
Hầu hết các Web Framework như Asp.net Web Form, jsp … đều ánh xạ url vào 1 file được lưu trữ trên ổ đĩa.
Ví dụ :
Hầu hết các Web Framework như Asp.net Web Form, jsp … đều ánh xạ url vào 1 file được lưu trữ trên ổ đĩa.
Ví dụ :
·
Địa chỉ Url : http://abc.com/default.aspx,
quá trình thực hiện sẽ điều hướng tới file default.aspx trên ổ đĩa vật lý ví dụ
D:\webroot\default.aspx
Asp.net MVC làm việc theo cách khác, thay vì
ánh xạ các file trên ổ đĩa, nó sẽ trực tiếp ánh xạ vào các lớp, đó chính là các
controller.
Ví dụ:
Địa chỉ Url : http://abc.com/admin, quá trình thực hiện sẽ điều hướng controller là admin, Action method mặc định trong controller là Index sẽ được gọi.
4.Tạo ứng dụng Asp.Net MVC trong Visual Studio 2015
Bước 1 : Tạo Project và lựa chọn kiểu ứng dụng Asp.net MVC cần phát triển. Chọn New Project, Sau đó lựa chọn Visual C# phía bên trái, Sau đó chọn Web và lựa chọn ASP.NET Web Application. Đưa tên Ứng dúng Asp.Net MVC vào "MvcFirstApp", chọn thư mục lưu trữ và click OK để chuyển sang màn hình khác.
Ví dụ:
Địa chỉ Url : http://abc.com/admin, quá trình thực hiện sẽ điều hướng controller là admin, Action method mặc định trong controller là Index sẽ được gọi.
4.Tạo ứng dụng Asp.Net MVC trong Visual Studio 2015
Bước 1 : Tạo Project và lựa chọn kiểu ứng dụng Asp.net MVC cần phát triển. Chọn New Project, Sau đó lựa chọn Visual C# phía bên trái, Sau đó chọn Web và lựa chọn ASP.NET Web Application. Đưa tên Ứng dúng Asp.Net MVC vào "MvcFirstApp", chọn thư mục lưu trữ và click OK để chuyển sang màn hình khác.
Hình số 6 : Visual Studio Asp.Net MVC
Bước 2 : Lựa chọn cấu
hình ứng dụng Asp.Net MVC, chúng ta chọn Empty cho ứng dụng đầu tiên này.
Hình số 7 : Chọn mẫu Template ứng dụng Asp.Net MVC
Sau đó chúng ta click OK để tạo Project
Hình số 8 : Danh sách các file và cấu trúc ứng dụng Asp.Net MVC
Bước 3 : Chạy chương
trình sử dụng (F5 hoặc chọn Menu Debug/Start Debugging). Chúng ta sẽ nhìn thấy
thông báo lỗi ở hình số 9, do đây là project rỗng, khi chạy chương trình:
·
Routing engine kiểm tra cấu hình điều hướng trong file
RouteConfig nằm trong thưc mục App_Start của ứng dụng, chuyển đến các
controller “Home” và action “Index” để thực thi
·
Do Home Controller và phương thức Index không được tìm thấy, bộ
điều hướng sẽ chỉ ra rằng controller không được tìm thấy và MVC Engine sẽ thông
báo lỗi cho trình duyệt.
Hình số 9 : Thông báo lỗi khi không tìm thấy Control
Bước 4 : Thêm mới
control Home và phương thức Index để thực hiện chương trình, thông qua các bước
sau :
·
Click phải vào thưc mục Controllers trong thư mục ứng dụng, chọn
Add sau đó lựa chọn Controller từ pop-up menus.
·
Chọn MVC 5 Control-Empty để tạo Control
Hình số 10 : Chọn mẫu Controller
·
Nhập tên Controller vào trong cửa sổ, Chú ý tên controller này
phải chính xác với tên control nằm trong RouteConfig
Hình số 11 : Cập nhật tên Controller
Bước 5 : Chạy lạy
chương trình chương trình. Chúng ta sẽ nhìn thấy thông báo lỗi ở hình số 12, do
đây ASP.Net MVC chưa tìm thấy view tương ứng với Control Home và phương thức
Index.
Hình số 12 : Thông báo lỗi do chưa tìm thấy View
Bước 6 : Tạo mới View,
thông qua các bước sau :
·
Click phải vào phương thức Index trong Controller Home, sau đó
chọn Add View.
·
Bổ sung một số các thuộc tính khi Add View, ví dụ như sử dụng
Layout Page
Hình số 13 : Tạo mới View của Phương thức Index trong Controller
Home
Bước 7 : Xem và chỉnh
sửa nội dung của View. Bổ xung thêm nội dung vào View <h3> Hello World !
</h3>,
Hình số 14 : Hiển thị nội dung View
Bước 8 : Tiến hành chạy
chương trình
Hình số 15 : Kết quả chạy chương trình















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