|
|
|
Số người truy cập: 4.306.754
Số người trực tuyến: 35
|
|
|
| Trang chủ .NET Việt Nam
>
Bài viết
>
Theo ngôn ngữ
>
ASP.NET / ASP.NET 2.0 | Mô hình MVC | Dương Nguyễn Internet or Some Document |
09:45' PM - Chủ nhật, 01/06/2008 | | Bắt đầu vào những năm 70 của thế kỷ 20, tại phòng thí nghiệm Xerox PARC
ở Palo Alto. Sự ra đời của giao diện đồ họa (Graphical User Interface)
và lập trình hướng đối tượng (Object Oriented Programming) cho phép lập
trình viên làm việc với những thành phần đồ họa như những đối tượng đồ
họa có thuộc tính và phương thức riêng của nó. Không dừng lại ở đó,
những nhà nghiên cứu ở Xerox PARC còn đi xa hơn khi cho ra đời cái gọi
là kiến trúc MVC (viết tắt của Model – View – Controller).
Trong
kiến trúc MVC, một đối tượng đồ họa (GUI Component) bao gồm 3 thành
phần cơ bản: Model, View, và Controller. Model có trách nhiệm đối với
toàn bộ dữ liệu cũng như trạng thái của đối tượng đồ họa. View chính là
thể hiện trực quan của Model, hay nói cách khác chính là giao diện của
đối tượng đồ họa. Và Controller điều khiển việc tương tác giữa đối
tượng đồ họa với người sử dụng cũng như những đối tượng khác.
Khi
người sử dụng hoặc những đối tượng khác cần thay đổi trạng thái của đối
tượng đồ họa, nó sẽ tương tác thông qua Controller của đối tượng đồ
họa. Controller sẽ thực hiện việc thay đổi trên Model. Khi có bất kỳ sự
thay đổi nào ở xảy ra ở Model, nó sẽ phát thông điệp (broadcast
message) thông báo cho View và Controller biết. Nhận được thông điệp từ
Model, View sẽ cập nhật lại thể hiện của mình, đảm bảo rằng nó luôn là
thể hiện trực quan chính xác của Model. Còn Controller, khi nhận được
thông điệp từ Model, sẽ có những tương tác cần thiết phản hồi lại người
sử dụng hoặc các đối tượng khác.
Lấy ví dụ một GUI Component đơn
giản là Checkbox. Checkbox có thành phần Model để quản lý trạng thái
của nó là check hay uncheck, thành phần View để thể hiện nó với trạng
thái tương ứng lên màn hình, và thành phần Controller để xử lý những sự
kiện khi có sự tương tác của người sử dụng hoặc các đối tượng khác lên
Checkbox. Khi người sử dụng nhấn chuột vào Checkbox, thành phần
Controller của Checkbox sẽ xử lý sự kiện này, yêu cầu thành phần Model
thay đổi dữ liệu trạng thái. Sau khi thay đổi trạng thái, thành phần
Model phát thông điệp đến thành phần View và Controller. Thành phần
View của Checkbox nhận được thông điệp sẽ cập nhật lại thể hiện của
Checkbox, phản ánh chính xác trạng thái Checkbox do Model lưu giữ.
Thành phần Controller nhận được thông điệp do Model gởi tới sẽ có những
tương tác phản hồi với người sử dụng nếu cần thiết.
Kiến trúc
MVC đã tách biệt (decoupling) sự phụ thuộc giữa các thành phần trong
một đối tượng đồ họa, làm tăng tính linh động (flexibility) và tính tái
sử dụng (reusebility) của đối tượng đồ họa đó. Một đối tượng đồ họa bấy
giờ có thể dễ dàng thay đổi giao diện bằng cách thay đổi thành phần
View của nó trong khi cách thức lưu trữ (Model) cũng như xử lý
(Controller) không hề thay đổi. Tương tự, ta có thể thay đổi cách thức
lưu trữ (Model) hoặc xử lý (Controller) của đối tượng đồ họa mà những
thành phần còn lại vẫn giữ nguyên.
Kiến trúc MVC đã được ứng
dụng để xây dựng rất nhiều framework và thư viện đồ họa khác nhau. Tiêu
biểu là bộ thư viện đồ họa của ngôn ngữ lập trình hướng đối tượng
SmallTalk (cũng do Xerox PARC nghiên cứu và phát triển vào thập niên 70
của thế kỷ 20). Các Swing Components của Java cũng được xây dựng dựa
trên kiến trúc MVC. Ví dụ đi cùng với JButton là ButtonUI (thành phần
View) và ButtonModel (thành phần Model). Ta hoàn toàn có thể viết
MyButtonUI hoặc YourButtonUI để thay đổi giao diện của JButton theo ý
mình (tương tự cho ButtonModel). Một điểm khá thú vị đối với Swing
Components là nó cho phép ta chỉ thay đổi giao diện một phần nào đó của
component. Ví dụ ta có thể thay đổi thể hiện của list item trong JList
thông qua ListCellRenderer.
Ngay cả Microsoft Visual C++ (VC++)
cũng ứng dụng MVC để xây dựng Document View Architecture. Bạn nào đã
từng tạo một project MDI trong VC++ đều thấy rằng VC++ sẽ tạo ra các
lớp CXXXDoc và CXXXView (XXX là tên project của chúng ta). CXXXDoc
chính là thành phần Model và CXXXView là thành phần View của chương
trình. Như vậy nếu theo đúng kiến trúc MVC thì tất cả những xử lý liên
quan đến lưu trữ dữ liệu của chương trình phải được đặt ở CXXXDoc, còn
những xử lý liên quan đến việc thể hiện phải được đặt ở CXXXView. Khi
có sự thay đổi dữ liệu ở CXXXDoc, cần cập nhật lại hiển thị ở CXXXView,
CXXXDoc sẽ gọi hàm UpdateAllView của nó để phát thông điệp thông báo
cho tất cả các View gắn kết với nó. Tại CXXXView ta bắt sự kiện
OnUpdate để cập nhật lại hiển thị của View. Hồi đó mỗi lần làm chương
trình VC++, tchya đặt tất cả xử lý ở CXXXView, xong rồi ở CXXXDoc hay
CMainFrame cần gọi cái gì đó của CXXXView thì cứ việc khai báo một con
trỏ pView trỏ đến CXXXView. hì hì, giờ nghĩ lại thấy “bưởi” quá. Vì như
vậy vô tình ta đã làm cho CXXXDoc và CMainFrame phụ thuộc (coupling)
vào CXXXView, khi muốn thay đổi View thì rất khó khăn.
Khi cài đặt kiến trúc MVC ta cần lưu ý những điểm sau:
-
Thành phần Model không cần thiết phải biết đến các View và Controller
cụ thể gắn kết với nó. Khi có thay đổi, Model chỉ việc phát thông điệp
cho những ai đăng ký với nó. Điều này có thể được thực hiện thông qua
Observer Pattern. - Nên áp dụng Facade Pattern để kết hợp Model,
View, và Controller lại với nhau thành “3 trong 1” cho dễ quản lý và
thao tác đối với người sử dụng. - Kiến trúc MVC không phải là kiến
trúc 3 tầng (3-Tiers Architecture). Mặc dù giữa 2 kiến trúc này có
nhiều điểm tương đồng nhưng chúng nói về 2 khía cạnh khác nhau.
Mô hình MVC đơn giản

 Mô hình MVC phức tạp hơn 1 tí

Về .net, bác Bill đã xây dựng tương đối ok về mô hình này rồi, nên việc cần làm là áp dụng sao cho đúng cách là dc.
Theo
Internet or Some Document Số lượt đọc:
1019
-
Cập nhật lần cuối:
01/06/2008 09:45:42 PM | SharePoint Server 2007 (MOSS 2007) 27/08/2008 06:47' PM Tìm hiểu các đặc điểm nổi bật của MOSS
Working with XML and JavaScript 15/06/2008 01:11' AM As noted previously, Version 6 JavaScript browsers seem to be coming
together over the W3C DOM. Several key methods and properties in JavaScript
can help in getting information from an XML file. In the section, a very
simple XML file is used to demonstrate pulling data from XML into an HTML
page using JavaScript to parse (interpret) the XML file Xem mã của 1 trang aspnet 06/06/2008 07:03' PM Mô tả cấu trúc chung của 1 file aspnet
Giới thiệu ASP.NET 06/06/2008 07:01' PM ASP.NET là Active Server Pages .NET (.NET ở đây là .NET framework). Nói
đơn giản, ngắn và gọn thì ASP.NET là một công nghệ có tính cách mạng
dùng để phát triển các ứng dụng về mạng hiện nay cũng như trong tương
lai (ASP.NET is a revolutionary technology for developing web
applications) Xây dựng ứng dụng tin tức đơn giản bằng ASP.NET 2.0 06/06/2008 04:29' PM xây
dựng một ứng dụng quản lý tin tức đơn giản nhưng được phát triển trên
một mô hình chuẩn 3 lớp logíc. Loạt bài viết sẽ hướng dẫn bạn các bước
cơ bản trong quá trình phát triển một ứng dụng: từ bước phân tích yêu
cầu, phân tích chức năng, thiết kế hệ thống và hiện thực. Tổng quan,
loạt bài viết sẽ gồm các phần sau đây:
Giới thiệu ứng dụng tin tức, phân tích yêu cầu và chức năng Phân tích và thiết kế ứng dụng theo mô hình 3 lớp logíc Phát triển ứng dụng, phần quản lý Phát triển ứng dụng, phần trình bày tin tức Tổng kết và hướng phát triển
Bài đã đăng: Tăng tốc độ hiển thị web28/04/2008 05:22' PM- Tại server: Giảm thiểu những tính toán trên server, tối ưu CSDL, tạo bộ đệm, tối ưu chương trình...
- Đường truyền: Giảm thiểu dữ liệu truyền trên mạng bằng cách giảm
kích thước các file hình, giảm yêu cầu trao đổi dữ liệu giữa server và
client...
- Tại máy client: tối ưu mã html để trình duyệt hiển thị nhanh.
Với chiến lược trên, dưới đây là 10 thủ thuật có thể giúp tăng tốc độ hiển thị trang web.
ASP.NET Page Life Cycle 27/04/2008 12:54' AM This article describes the
life cycle of the page from the moment the URL is hit from the web
browser till the HTML code is generated and sent to the web browser.
Let us start by looking at some keywords that are involved in the life
cycle of the page. Aspect-Oriented Programming và bảo mật 25/04/2008 09:44' AM Aspect-Oriented
Programming (AOP) là một kiểu lập trình mới nhanh chóng thu hút được
các nhà phát triển trong giới CNTT. Một trong các lý do phổ biến là vì
nó được phân nhánh ra từ tính phổ biến của Java Spring framework, mọi
người bắt đầu hiểu những lợi ích trọng yếu mà AOP mang lại cho vấn đề
phát triển ứng dụng. Trong bài viết này chúng tôi muốn giới thiệu đến
đông bảo mọi người về AOP. Trước hết chúng ta hãy đặt câu hỏi AOP là
gì. 10 điều bạn nên biết về Silverlight25/04/2008 09:35' AMXây
dựng chiến lược Web là nhiệm vụ rất quan trọng đối với bất kỳ một doanh
nghiệp thành đạt nào. Tuy nhiên, việc thực hiện chiến lược đó với các
ứng dụng Internet phong phú không phải lúc nào cũng dễ dàng. Để giảm đi những khó khăn đó, gần đây như các bạn đã biết gã khổng lồ Microsoft đã đưa ra sản phẩm Silverlight,
một plug-in hoạt động trên đa nền tảng, đa trình duyệt cho các chuyên
gia phát triển ứng dụng. Plug-in này có thể cho phép phát triển các ứng
dụng một cách phong phú gồm có media, khả năng tương tác và hoạt ảnh.
Silverlight plug-in có thể làm việc trên các trình duyệt Internet
Explorer và Firefox trong Windows và Firefox cũng như trình duyệt
Safari trên hệ điều hành Mac. Building Web Parts (Part 2) 20/04/2008 04:01' PM In part one of this three-part series of articles, I discussed how to create Web Parts and how to configure them to look good and nice. But I have not really touched on the most important feature of Web Parts; that is, how to let users move the Web Parts from one zone to another. In this article, I will show you how to move Web Parts and how you can also configure Web Parts to make use of SQL Server 2000.
Building Web Parts (Part 1) 20/04/2008 03:59' PM
Websites today contain a wealth of information; so much that a poorly designed
site can easily overwhelm users. To better help users cope, portal websites
today (such as MSN) often organize their data into discrete units that support
a degree of personalization. Information is organized into standalone parts,
and users can rearrange those parts to suit their individual working styles.
Such personalization also lets users hide the parts that contain information in
which they have no interest. What's more, users can save their settings so that
the site will remember their preferences the next time they visit the site. In
ASP.NET 2.0, you can now build web portals that offer this kind of
modularization of information and personalization using the new Web Parts
framework. Hướng dẫn tạo website với Dynamic Theme 17/04/2008 12:34' AM Tình hình là site nào cũng cần change cái giao diện thường xuyên, nhìn cho đỡ nhàm, kiếm dc bài post lên cho anh em xem lun
|
|
|
|