T?ng quan v? ASP.NET MVC

ID c?a bài: 2645095 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

V? tác gi?

Thu g?n b?ng nàyBung r?ng b?ng này
Thu g?n h?nh ?nh nàyBung r?ng h?nh ?nh này
2401266
Bài vi?t này đư?c cung c?p b?i MVP Lê Hoàng D?ng. Microsoft chân thành c?m ơn nh?ng MVP đ? chia x? nh?ng kinh nghi?m chuyên môn c?a m?nh v?i nh?ng ngư?i s? d?ng khác. Bài vi?t này s? đư?c đăng trên website ho?c blog c?a MVP sau đây. N?u b?n mu?n xem các bài vi?t khác đư?c chia x? b?i MVP, vui l?ng nháy chu?t vào đây.

Tóm t?t thông tin

T?ng quan v? ASP.NET MVC

M?u ki?n trúc Model – View – Controller đư?c s? d?ng nh?m chi ?ng d?ng thành ba thành ph?n chính: model, view và controller. N?n t?ng ASP.NET MVC giúp cho chúng ta có th? t?o đư?c các ?ng d?ng web áp d?ng mô h?nh MVC thay v? t?o ?ng d?ng theo m?u ASP.NET Web Forsm. N?n t?ng ASP.NET MVC có đ?c đi?m n?i b?t là nh? (lighweigt), d? ki?m th? ph?n giao di?n (so v?i ?ng d?ng Web Forms), tích h?p các tính năng có s?n c?a ASP.NET. N?n t?ng ASP.NET MVC đư?c đ?nh ngh?a trong namespace System.Web.Mvc và là m?t ph?n c?a name space System.Web.

MVC là m?t m?u thi?t k? (design pattern) chu?n mà nhi?u l?p tr?nh viên đ? quen thu?c. M?t s? lo?i ?ng d?ng web s? thích h?p v?i ki?n trúc MVC. M?t s? khác v?n thích h?p v?i ASP.NET Web Forms và cơ ch? postbacks. Đôi khi có nh?ng ?ng d?ng k?t h?p c? hai ki?n trúc trên.

N?n t?ng MVC bao g?m các thành ph?n dư?i đây:

Thu g?n h?nh ?nh nàyBung r?ng h?nh ?nh này
Mô h?nh MVC


H?nh 01: M?u Model – View – Controller

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 Product (s?n ph?m) 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 Products ? 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 Products 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 Product.

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.

M?u MVC giúp b?n t?o đư?c các ?ng d?ng mà chúng phân tách r?ch r?i các khía c?nh c?a ?ng d?ng (logic v? nh?p li?u, logic x? l? tác v? và logic v? giao di?n). M?u MVC ch? ra m?i lo?i logic k? trên nên đư?c thi?p l?p ? đâu trên ?ng d?ng. Logic giao di?n (UI logic) thu?c v? views. Logic nh?p li?u (input logic) thu?c v? controller. Và logic tác v? (Business logic – là logic x? l? thông tin, m?c đích chính c?a ?ng d?ng) thu?c v? model. S? phân chia này giúp b?n gi?m b?t đư?c s? ph?c t?p c?a ?ng d?ng và ch? t?p trung vào m?i khía c?nh c?n đư?c cài đ?t ? m?i th?i đi?m. Ví d? như b?n ch? c?n t?p trung vào giao di?n (views) mà không ph?i quan tâm đ?n logic x? l? thông tin c?a ?ng d?ng.

Đ? qu?n l? s? ph?c t?p c?a ?ng d?ng, m?u MVC giúp cho chúng ta có th? ki?m th? ?ng d?ng d? dàng hơn h?n so v?i khi áp d?ng m?u Web Forms. Ví d?, trong m?t ?ng d?ng ASP.NET Web Forms, m?t l?p thư?ng đư?c s? d?ng đ? hi?n th? thông tin xu?t ra cho ngư?i dùng và đ?ng th?i x? l? thông tin ngư?i dùng nh?p. Vi?c xây d?ng các b? test t? đ?ng cho ?ng d?ng Web Forms là r?t ph?c t?p, b?i đ? ki?m th? m?i trang web, b?n ph?i kh?i t?o đ?i tư?ng trang, kh?i t?o t?t c? các control đư?c s? d?ng trong trang và các l?p ph? thu?c trong ?ng d?ng. Và b?i v? có quá nhi?u l?p c?n đư?c kh?i t?o đ? ch?y đư?c trang, th?t khó đ? có th? vi?t các test ch? t?p trung vào m?t khía c?nh nào đó c?a ?ng d?ng. Và v? th?, ki?m th? đ?i v?i các ?ng d?ng d?a trên n?n t?ng Web Forms s? khó khăn hơn nhi?u so v?i khi áp d?ng trên ?ng d?ng MVC. Hơn th? n?a, vi?c ki?m th? trên n?n t?ng Web Forms yêu c?u ph?i s? d?ng đ?n web server. N?n t?ng MVC phân tách các thành ph?n và s? d?ng các interface (khái ni?m giao di?n trong l?p tr?nh hư?ng đ?i tư?ng), và nh? đó có th? ki?m th? các thành ph?n riêng bi?t trong t?nh tr?ng phân l?p v?i các y?u t? c?n l?i c?a ?ng d?ng.

S? phân tách r?ch r?i ba thành ph?n c?a ?ng d?ng MVC c?n giúp cho vi?c l?p tr?nh di?n ra song song. Ví d? như m?t l?p tr?nh viên làm vi?c v?i view, l?p tr?nh viên th? hai lo cài đ?t logic c?a controller và l?p tr?nh viên th? ba có th? t?p trung vào logic tác v? c?a model t?i cùng m?t th?i đi?m.

L?a ch?n áp d?ng MVC trong xây d?ng ?ng d?ng

B?n c?n ph?i xem xét k? càng vi?c áp d?ng mô h?nh ASP.NET MVC hay mô h?nh ASP.NET Web Forms khi xây d?ng m?t ?ng d?ng. Mô h?nh MVC không ph?i là mô h?nh thay th? cho Web Forms, b?n có th? dùng m?t trong hai mô h?nh.

Trư?c khi quy?t đ?nh s? d?ng MVC hay Web Forms cho m?t web site c? th?, b?n c?n ph?i phân tích l?i ích khi ch?n m?t trong hai hư?ng.

L?i ích c?a ?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:
  • 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
  • Nó không s? d?ng view state ho?c server-based form. Đi?u này t?t cho nh?ng l?p tr?nh viên mu?n qu?n l? h?t các khía c?nh c?a m?t ?ng d?ng.
  • Nó s? d?ng m?u Front Controller, m?u này giúp qu?n l? các requests (yêu c?u) ch? thông qua m?t Controller. Nh? đó b?n có th? thi?t k? m?t h? t?ng qu?n l? đ?nh tuy?n. Đ? có nhi?u thông tin hơn, b?n nên xem ph?n Front Controller trên web site MSDN
  • H? tr? t?t hơn cho mô h?nh phát tri?n ?ng d?ng hư?ng ki?m th? (TDD)
  • Nó 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
L?i ích c?a ?ng d?ng đư?c xây d?ng trên n?n t?ng Web Forms

  • Nó h? tr? cách l?p tr?nh hư?ng s? ki?n, qu?n l? tr?ng thái trên giao th?c HTTP, ti?n d?ng cho vi?c phát tri?n các ?ng d?ng Web ph?c v? kinh doanh. Các ?ng d?ng trên n?n t?ng Web Forms cung c?p hàng tá các s? ki?n đư?c h? tr? b?i hàng trăm các server controls.
  • S? d?ng m?u Page Controller. Xem thêm ? m?c Page Controller trên MSDN
  • Mô h?nh này s? d?ng view state ho?c server-based form, nh? đó s? giúp cho vi?c qu?n l? tr?ng thái các trang web d? dàng.
  • Nó r?t phù h?p v?i các nhóm l?p tr?nh viên quy mô nh? và các thi?t k?, nh?ng ngư?i mu?n t?n d?ng các thành ph?n giúp xây d?ng ?ng d?ng m?t cách nhanh chóng.
  • Nói tóm l?i, áp d?ng Web Forms giúp gi?m b?t s? ph?c t?p trong xây d?ng ?ng d?ng, b?i v? các thành ph?n (l?p Page, controls,…) đư?c tích h?p ch?c ch? và thư?ng th? giúp b?n vi?t ít code hơn là áp d?ng theo mô h?nh MVC.

Các tính năng c?a n?n t?ng 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? s? d?ng đ?c t? (các th?) c?a các trang ASP.NET(.aspx), đi?u khi?n ngư?i dùng (.ascx) và trang master page (.marter). B?n có th? s? d?ng các tính năng có s?n c?a ASP.NET như là s? d?ng l?ng các trang master page, s? d?ng in-line expression (<%= %>), s? d?ng server controls, m?u, data-binding, đ?a phương hóa (localization) và hơn th? n?a.
  • 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 3 c?n b? sung m?t view engine m?i là 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.



Tuyên b? Không ch?u trách nhi?m N?i dung Gi?i pháp C?ng đ?ng

CÔNG TY MICROSOFT VÀ/HO?C CÁC NHÀ CUNG C?P C?A H? KHÔNG B?O Đ?M V? TÍNH PHÙ H?P, Đ? TIN C?Y HO?C TÍNH CHÍNH XÁC C?A THÔNG TIN VÀ H?NH ?NH LIÊN QUAN ? ĐÂY. M?I THÔNG TIN VÀ H?NH ?NH NHƯ V?Y ĐƯ?C CUNG C?P “NHƯ NGUYÊN M?U” MÀ KHÔNG CÓ B?T K? B?O Đ?M NÀO. MICROSOFT VÀ/HO?C CÁC NHÀ CUNG C?P C?A H? KHÔNG CH?U TRÁCH NHI?M Đ?I V?I M?I B?O Đ?M VÀ ĐI?U KI?N V? THÔNG TIN VÀ H?NH ?NH LIÊN QUAN NÀY, BAO G?M C? M?I B?O Đ?M VÀ ĐI?U KI?N LIÊN QUAN V? TÍNH THƯƠNG M?I, PHÙ H?P CHO M?T M?C ĐÍCH Đ?C BI?T, N? L?C C?A CÔNG VI?C, TƯ CÁCH VÀ CAM K?T KHÔNG VI PH?M. B?N Đ?NG ? M?T CÁCH C? TH? LÀ KHÔNG CÓ TRƯ?NG H?P NÀO MÀ MICROSOFT VÀ/HO?C CÁC NHÀ CUNG C?P C?A H? B? RÀNG BU?C VÀO B?T K? THI?T H?I TR?C TI?P, GIÁN TI?P, TR?NG PH?T, T?NH C?, Đ?C BI?T, H? QU? HO?C B?T K? THI?T H?I D?NG NÀO, BAO G?M NHƯNG KHÔNG GI?I H?N THI?T H?I DO M?T MÁT, D? LI?U HO?C L?I ÍCH, X?Y RA HO?C TRONG M?I CÁCH LIÊN QUAN Đ?N VI?C S? D?NG HO?C KHÔNG TH? S? D?NG THÔNG TIN VÀ H?NH ?NH LIÊN QUAN CÓ ? ĐÂY, DÙ LÀ D?A VÀO H?P Đ?NG, L?I GÂY THI?T H?I, SƠ SU?T, NGH?A V? PHÁP L? HO?C B?T K? CƠ S? NÀO KHÁC, NGAY C? N?U MICROSOFT HO?C B?T K? NHÀ CUNG C?P NÀO C?A H? Đ? ĐƯ?C TƯ V?N V? KH? NĂNG B? THI?T H?I.

Thu?c tính

ID c?a bài: 2645095 - L?n xem xét sau cùng: 14 Tháng Mười Hai 2011 - Xem xét l?i: 1.0
Áp d?ng
  • Microsoft ASP.NET MVC 2
  • Microsoft ASP.NET MVC 3
T? khóa: 
kbprb kbtshoot kbstepbystep kbgraphxlink kbmvp KB2645095

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com