Tải bản đầy đủ (.pdf) (16 trang)

1 chuong 01 tủ tài liệu bách khoa

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (422.16 KB, 16 trang )

CHAPTER 1
Đặt ASP.NET MVC vào bối cảnh
ASP.NET MVC là một nền tảng phát triển Web của Microsoft kết hợp sự hiệu
quả của mô hình cấu trúc model-view-controller (MVC),các ý tưởng mới nhất
và các kĩ thuật phát triển linh hoạt,và những gì tốt nhất của nền tảng
ASP.NET hiện tại.Đây là một thay thế hoàn chỉnh cho các dạng Web Form
ASP.NET truyền thống,đem đến nhiều ưu điểm nhưng chủ yếu dành cho các
dự án phát triển Web.Trong chương này,bạn sẽ tìm hiểu tại sao Microsoft tạo
ra ASP.NET MVC,so sánh với người tiền nhiệm và các thay thế của
nó,và,cuối cùng là những điểm mới trong ASP.NET MVC 5 và những thứ
được đề cập trong cuốn sách này
Hiểu rõ về lịch sử của Asp.net
ASP.NET là một sự thay đổi to lớn khi được xuất hiện lần đầu tiên vào năm
2002.Hình 1-1 minh hoạ các lớp công nghệ của Microsoft đã xuất hiện

Hình 1-1.Các tầng công nghệ của ASP.NET Web Forms


Với các Web Form,Microsoft cố gắng che đi HTTP ( cùng bản chất vô
định của nó) và HTML (thứ tại thời điểm đó chưa quen thuộc với nhà phát
triển) bằng việc mô hình hoá giao diện người dùng (UI) thành một bậc của đối
tượng điều khiển về phía server.Mỗi một control sẽ theo dõi trạng thái của nó
thông qua các yêu cầu (sử dụng chức năng View State),trình bày nó dưới dạng
HTML khi cần thiết và tự động liên kết các sự kiện bên phía client(lấy ví
dụ,một button click) với code handler của sự kiện phản hồi tương ứng từ phía
server.Về mặt hiệu ứng,Web Forms là một lớp trừu tượng khổng lồ được thiết
kế để cung cấp giao diện đồ hoạ người dùng theo hướng sự kiện trên Web
Ý tưởng đề ra là khiến cho phát triển Web cũng giống như với phát
triển Windows Forms.Các nhà phát triển không cần phải làm việc với một loạt
các yêu cầu HTTP độc lập và phản hồi.Họ có thể nghĩ về một giao diện người
dùng trạng thái,và Microsoft có thể liên tục chuyển giao nguồn nhân lực từ


các nhà phát triển trên Windows vào thế giới của ứng dụng web
Điều gì không ổn với ASP.NET Web Forms ?
Sự phát triển của ASP.NET Web Forms truyền thống rất tốt về mặt nguyên
tắc,nhưng thực tế chứng minh lại phức tạp hơn nhiều:
+ Tầm quan trọng của View State: Cơ chế thực cho việc duy trì trạng
thái thông qua các yêu cầu (View State) hình thành một khối lượng dữ
liệu được truyền phát giữa client và server.Dữ liệu này có thể lên tới
hàng trăm kilobyte ngay cả trong những ứng dụng Web nhỏ,và nó di
chuyển qua lại với mỗi một yêu cầu,dẫn đến làm chậm thời gian phản
hồi và tăng nhu cầu băng thông của server
+ Chu kì tồn tại của trang:cơ chế kết nối các sự kiện bên phía client với
bộ code quản lý sự kiện bên server,từng phần của chu kì tồn tại,có thể
bất thường.Một số ít nhà phát triển đã vận dụng thành công hệ thống
điều khiển theo bậc tại thời gian khởi chạy mà không gặp lỗi bên View
State hay phát hiện bất cứ xử lý sự kiện gặp lỗi khi khởi chạy


+ Cảm giác về phân chia của các vấn đề sai: mô hình mã code nằm
phía sau của ASP.NET Web Forms cung cấp phương tiện để lấy phần
code ứng dụng ra khỏi ngôn ngữ đánh dấu trong HTML của nó và đưa
vào một lớp code nền đằng sau.Kết quả cuối có thể hơi khó hiểu
+ Giới hạn kiểm soát trong HTMLL: các control của server biểu hiện
chính nó dưới dạng HTML,nhưng không nhất thiết phải là HTML mà
bạn muốn.Trong các phiên bản trước của ASP.NET,HTML đầu ra
không đáp ứng tiêu chuẩn Web hay tận dụng tốt CSS (Cascading Style
Sheets),các control của server được khởi tạo không lường trước và các
giá trị thuộc tính ID phức tạp khó tiếp cận bằng Javascript.Những vấn
đề đó được cải thiện phần lớn trong Web Form phát hành gần
đây,nhưng vẫn khó khăn để có được HTML mà bạn mong muốn
+ Sự trừu tượng sai,lệch lạc:Web Form cố giấu đi HTML và HTTP ở

bất cứ nơi nào có thể.Khi bạn cố gắng cài đặt một hành vi tuỳ chỉnh,bạn
thường đi xa khỏi tưởng tượng ,buộc bạn phải đảo ngược cơ chế sự kiện
hoặc thực hiện các hành vi khó hiểu để làm nó sinh ra mã HTML mong
muốn.Thêm vào đó,tất cả khái niệm trừu tượng này có thể đóng vai trò
như một rào cản gây khó chịu cho các nhà phát triển thông thạo
+ Khả năng nghiệm thu kém:các nhà phát triển Web Form không hề biết
trước được rằng kiểm nghiệm tự động sẻ trở thành một thành phần thiết
yếu của quá trình phát triển phần mềm.Không hề ngạc nhiên lắm,kiến
trúc gắn kết chặt chẽ mà họ thiết kế không phù hợp cho các bài kiểm
nghiệm chi tiết.Kiểm nghiệm tính tương thích,hoà hợp cũng biến thành
một thử thách khó khăn
Web Forms không phải tất cả đều kèm,xấu và Microsoft đã bỏ nhiều
công sức vào việc phát triển các tiêu chuẩn,đơn giản hoá quá trình phát
triển,và thêm vào đó lấy thêm các tính năng từ ASP.NET MVC
Việc phát triển Web hiện nay
Bên ngoài Microsoft,công nghệ phát triển web đã phát triển nhanh chóng,liên
tục và theo nhiều chiều hướng khác nhau kể từ khi Web Form lần đầu xuất
hiện
Các tiêu chuẩn về web và REST
Sự phát triển trong các tiêu chuẩn Web đã tăng vào các năm gần đây.Các
website được truy cập trên nhiều thiết bị khác nhau và trình duyệt nhiều hơn
so với trước đây,và các chuẩn Web (HTML,CSS,JavaScript,và nhiều thứ
khác) vẫn là niềm hy vọng lớn để tận hưởng trai nghiệm duyệt web phù
hợp.Các nền tảng web hiện đại không thể bỏ qua các mục đích kinh doanh và
tầm quan trọng của niềm đam mê,quan tâm của các nhà phát triển dành cho
các tiêu chuẩn Web


HTML5 đã bắt đầu du nhập vào trào lưu sử dụng và cung cấp những
khả năng tiềm tàng cho nhà phát triển Web,cho phép client có thể đảm nhận

được công việc trước đây vốn là trách nhiệm của riêng server.Những khả
năng mới và sự phát triển ngày càng tăng của các thư viện Javascript như
AngularJS,jQuery,jQuery Ui,và jQuery Mobile chứng tỏ rằng những tiêu
chuẩn đó đã trở nên quan trọng hơn và hình thành một nền tảng quan trọng
cho nhiều ứng dụng Web hơn
Ghi chú: tôi đã làm việc trên HTML5,jQuery,và các người anh em
của nó trong cuốn sách này,nhưng tôi không đi vào chuyên sâu bởi vì sẽ có
những chủ đề riêng của chúng.Nếu bạn muốn nội dung hoàn chỉnh,thì Apress
đã phát hành những cuốn sách của tôi cho những chủ đề này : Pro AngularJS,
Pro jQuery 2.0, Pro JavaScript for Web Apps, and The Definitive Guide to
HTML5.
Tại thời điểm đó, giao thức truyền thông hai chiều-Representational State
Transfer (REST đã trở thành kiến trúc chủ đạo cho các ứng dụng tương tác
trên HTTP,hoàn toàn che mờ đi SOAP (công nghệ đằng sau sự giao tiếp
truyền thống của ASP.NET đến dịch vụ Web),REST mô tả một ứng dụng
dưới định nghĩa của các tài nguyên (Urls) đại diện chỉ các thực thể và hoạt
động tiêu chuẩn (phương thức HTTP) đại diện cho các thao tác có sẵn trên
nguồn tài nguyên đó.Lấy ví dụ,bạn có ĐẶT một urls mới
XOÁ đi:
/>
Các ứng dụng Web hiện nay không chỉ hỗ trợ cho HTML.Thông
thường,chúng còn hỗ trợ JSON hay dữ liệu XML kết nối với công nghệ client
như AJAX và các ứng dụng điện thoại thông minh.Điều nay diễn ra môt cách
tự nhiên với REST,loại bỏ sự phân biệt giữa dịch vụ Web và ứng dụng
Web,nhưng đòi hỏi sự tiếp cận đến HTTP và xử lý URL,những thứ không còn
được hỗ trợ dễ dàng trên nền ASP.NET Web Forms
Sự phát triển kiểm thử,linh hoạt
Không chỉ phát triển Web đã trưởng thành. Phát triển phần mềm như một khối
trọn vẹn đã thay đổi theo hướng phương pháp linh hoạt. Điều này có ý nghĩa
với rất nhiều thứ khác nhau, nhưng nó phần lớn là về việc chạy dự án phần

mềm quy trình như các tiến trình thích nghi khám phá và hạn chế kế hoạch
chuyển tiếp thừa. Sự linh hoạt trong phương pháp agile hướng đến kết hợp với
một tập hợp các ứng dụng phát triển và công cụ (thường là mã nguồn mở)
nhằm thúc đẩy và hỗ trợ các ứng dụng này.


Hướng phát triển kiểm thử (TDD),và các mối quan hệ chặt chẽ với nó,phát
triển hành vi định hướng (BDD).là hai ví dụ.Ý tưởng để thiết kế phần mềm
của bạn bắt đầu bằng việc đầu tiên là mô tả ví dụ về hành vi mong muốn( còn
gọi là kiểm tra hoặc thông số kĩ thuật),vì vậy tại bất cứ lúc nào,bạn cũng có
thể xác minh tính ổn định và chính xác của ứng dưng bằng cách chạy bài test
trong quá trình cài đặt,triển khai.Không hề thiếu công cụ .Net để hỗ trợ
TDD/BDD.nhưng các công cụ này không làm việc tốt với Web Forms :
+ Công cụ kiểm tra đơn vị cho phép bạn xác định hành vi của các lớp
cụ thể hoặc thành phần code nhỏ khác trong sự cô lập riêng biết. Đây
chỉ có thể được áp dụng hiệu quả cho phần mềm đã được thiết kế dưới
dạng một tập hợp các mô-đun độc lập, do đó mỗi bài kiểm tra có thể
được chạy độc lập. Đáng tiếc,chỉ vài ứng dụng Web Forms có thể được
kiểm tra theo cách này.
+ Công cụ tự động hóa giao diện người dùng cho phép bạn mô phỏng
một loạt các tương tác người dùng trong một phiên khởi chạy hoàn
chỉnh của ứng dụng. Công cụ này có thể được sử dụng với Web Forms,
nhưng chúng có thể ngưng hoạt động bất cứ khi nào bạn thực hiện một
thay nhỏ đến bố cục trang. Nếu không có sự chú trọng đặc biệt, Web
Forms sẽ thay đổi cấu trúc HTML và thành phần ID, làm hỏng các bộ
thử nghiệm.
Các nhà cung cấp mã nguồn mở .NET và phần mềm độc lập (công đồng
ISV đã không ngừng đưa ra frameworks thử nghiệm chất lượng đơn vị hàng
đầu (NUnit và xUnit), Mocking frameworks (Moq và Rhino Mocks),
container đảo ngược cơ chế điều khiển (Ninject và AutoFac), máy chủ tích

hợp liên tục (Cruise Control và TeamCity), bản đồ đối tượng quan hệ
(NHibernate và Subsonic), ASP.NET Web Forms truyền thống sẽ không
tuân theo những công cụ và kỹ thuật vì thiết kế nguyên khối của nó, và từ đó
Web Forms nhận được ít nhiều sự quan tâm từ các dự án này
Ruby on Rails
Năm 2004, Ruby on Rails là một đóng góp mã nguồn mở,khá kín tiếng từ
một người ẩn danh. Đột nhiên gây sự chú ý, chuyển hoá các quy tắc của phát
triển Web.Ruby on Rails không hề chứa công nghệ mang tính cách mạng,
nhưng cách mà ý tưởng này chọn những thành phần sẵn có và trộn lẫn cùng
nhau môt cách thuyết phục và cuốn hút đã khiến các nền tảng tương tự hiện
tại phải cảm thấy xấu hổ
Ruby on Rails (hay Rails,như cách nó thường được gọi),nắm giữ kiến
trúc MVC,thứ mà tôi sẽ miêu tả trong chương 3.Bằng việc áp dụng MVC và
làm việc với các điều chỉnh giao thức HTTP,bằng cách giới thiệu các quy ước
thay cho các yêu cầu tuỳ chỉnh,và việc tích hợp ánh xạ quan hệ đối
tượng(công cụ ORM trong cốt lõi),các ứng dụng Rails ít nhiều đều đi đúng
hướng mà không cần nhiều nỗ lực.Nó sẽ là vậy nếu đó từng là cách phát triển


Web từ lâu.Rails cho thấy các tiêu chuẩn tuân thu Web và sự hoàn chỉnh
REST không cần phải quá khó.Nó cũng cho thấy khả năng phát triển linh
động và TDD hoạt động tốt nhất khi nền tảng framework được thiết kế để hỗ
trợ chúng.Phần còn lại của thế giới phát triển Web đã đuổi kịp từ bao giờ
Node.js
Một xu hướng khác đó là việc chuyển sang sử dụng JavaScript làm ngôn ngữ
lập trình chính.AJAX lần đầu tiên chỉ ra rằng JaveScript rất quan
trong;jQuery cho chúng ta được sự mạnh mẽ và tinh tế;và mở nguồn mở V8
JavaScript của Google cho thấy rằng nó rất nhanh.Ngày nay,JavaScipt đang
dần trở thành một ngôn ngữ lập trình hướng server chính thức.Nó còn là ngôn
ngữ truy xuất dữ liệu cho một vài cơ sở dữ liệu không quan hệ,bao gồm

CouchDB và Mongo,và nó được dùng làm ngôn ngữ chính trong nền tảng
server như Node,js,Node,js đã xuất hiện từ năm 2009 và dần được chấp nhận
nhanh chóng.Các đổi mới chủ chốt được liệt kê như sau:
+ Sử dụng JavaScript:Các nhà phát triển chỉ cần làm việc trên một loại
ngôn ngữ,từ code trên client,thông qua logic server,và thậm chí trong
logic truy xuất dữ liệu qua CouchDB hoặc tương tự
+ Không đồng bộ hoàn toàn:hàm API của Node.js không để lộ ra bất kì
cách nào ngăn chặn một luồng trong khi chờ dữ liệu input/output (I/O)
hoặc bất kì hoạt động khác.Tất cả I/O được cài đặt ngay khi bắt đầu tiến
trình và sau đó nhận tin gọi ngược lại khi I/O hoàn thành.Điều này có
nghĩa Node.js tận dụng hiệu quả tài nguyên hệ thống và có thể xử lý
10000 yêu cầu cùng lúc trên mỗi CPU.(nền tảng thay thế có xu hướng
giới hạn còn khoảng 100 yêu cầu trên mỗi CPU)
Node.js vẫn là một công nghệ thích hợp.Đóng góp to lớn của nó đối với
phát triển ứng dụng web đã,đang dần cung cấp một bộ công cụ JavaScript phù
hợp mà dựa vào đó các công cụ phát triển có thể được viết ra.Nhiều nền tảng
JavaScript từ phía Client mới nổi,như AngularJS,có những hỗ trợ công cụ
dựa trên việc dùng Node.js
Sự chấp nhận dành cho Node.js trong phát triển ứng dụng Web đã chậm
hơn.Hầu hết các ứng dụng kinh doanh thực tế trong khung thời gian giới hạn
thông thường cần cơ sở hạ tầng trong nền tảng gói gọn đầy đủ như Ruby on
Rails và ASP.NET MVC.Node.js được đề cập ở đây chỉ để đưa vài thiết kế
ASP.NET MVC vào trong phạm vi theo xu hướng công nghiệp.Ví
dụ,ASP.NET MVC bao gồm các controller không đồng bộ (Điều mà tôi sẽ nói
trong chương 19).Đây là cách để xử lý yêu cầu HTTP cùng I/O không bị chặn
và mở rộng để xử lý nhiều yêu cầu cho mỗi CPU
Lợi ích quan trọng của ASP.NET MVC
Trong tháng 10/2007,Microsoft công bố một nền tảng phát triển MVC
Web,được xây dựng dựa trên cốt lỗi của nên tảng ASP.NET,được thiết kế rõ



ràng để đối trọng trực tiếp với sự phát triển của công nghệ như Rails và đáp
lại những chỉ trích phê bình của Web Forms.Phần tiếp theo sẽ mô tả làm thế
nào nền tảng mới vượt qua giới hạn của Web Forms và đem ASP.NET ra khỏi
bờ vực bị loại bỏ
Cấu trúc MVC
Điều quan trọng là phải phân biệt giữa mô hình kiến trúc MVC và ASP.NET
MVC Framwork.Các mô hình MVC không phải là mới – nó có mặt từ năm
1978 và trong dự án Smalltalk at Xeror PARC-nhưng nó đã trở nên phổ biến
rộng rãi ngày nay như là một mô hình cho các ứng dụng web,vì những lí do
sau:
+ Tương tác người dùng với một ứng dụng MVC tuân theo một chu kì
tự nhiên:người dùng thực hiện một hành động,và để đáp ứng thì ứng
dụng sẽ thay đổi mô hình dữ liệu và đưa ra một view đã được cập nhật
đến người dùng.Và chu kì tiếp tục lặp lại.Đó là sự phù hơp thuận tiện
cho các ứng dụng Web khi cung cấp một loạt yêu cầu HTTP và phản
hồi
+ Các ứng dụng web đòi hỏi cần phải kết hợp một vài công nghệ (cơ sở
dữ liệu,HTML,mã thực thi),thường được chia thành các tầng hay
lớp.Các mô hình phát sinh từ những bản đồ kết hợp tự nhiện dựa trên
khái niệm trong MVC
ASP.NET MVC Framework thực hiện mô hình MVC và trong lúc làm
vậy,cung cấp sự cải thiện trong phân chia của quan hệ.Trong thức
tế,ASP.NET MVC cung cấp một biến thể hiện đại của mô hình MVC,nó đặc
biệt thích hợp cho ứng dụng Web.Bạn sẽ tìm hiểu thêm về lý thuyết và thực
hành của kiến trúc này ở chương 3
Bằng cách nắm bắt và thích ứng với mô hình MVC,ASP.NET MVC
Framework tạo ra sự cạnh tranh mạnh mẽ với Ruby on Rails và các nền tảng
tương tự,và đưa mô hình MVC vào xu hướng chủ đạo của thế giới .NET.Bằng
cách tận dụng kinh nghiệm và thực tiễn được khám phá bởi nhà phát triển sử

dụng các nền tảng khác,ASP.NET MVC đã,bằng nhiều cách,đã tiến xa hơn
những gì Rails đạt được
Khả năng mở rộng
MVC Framework được xây dựng như một loạt các thành phần độc lập đáp
ứng giao diện .NET hay được xây dựng trên một lớp cơ sở trừu tượng.Bạn có
thể dễ dàng thay thế các thành phần,như hệ thống định tuyến,cơ chế view,và
controller,với từng thứ khác tuỳ vào thiết lập của bạn.Nói chung,the MVC
Framework đưa ra cho bạn 3 lựa chọn cho mỗi một thành phần:
+ Sử dụng các cài đặt mặc định của các thành phần (gần đủ cho hầu hết
các ứng dụng)


+ Rút ra một lớp con của cài đặt mặc định để tinh chỉnh hành vi hoạt
động của nó
+ Thay thế hoàn toàn thành phần với thiết lập cài đặt mới của giao diện
hay lớp cơ sở trừu tượng logic
Bạn sẽ tìm hiểu tất cả về các thành phần khác nhau,và cách thức,tại sao
bạn muốn tinh chỉnh hay thay thế mỗi thứ trong đó,bắt đầu trong chương 14
Kiểm soát chặt chẽ hơn đối với HTML và HTTP
ASP.NET MVC tạo ra tiêu chuẩn đánh dấu rõ ràng phù hợp.Phương pháp tích
hợp hỗ trợ HTML của nó tạo ra chuẩn output,nhưng có một sự thay đổi đáng
kể so với Web Forms.Thay vì tạo ra khoảng không cho HTML mà bạn có ít
quyền kiểm soát,MVC Framework khuyến khích bạn tạo ra đánh dấu đơn giản
với phong cách của CSS
Tất nhiên,nếu bạn muốn ném vào một vài phụ tùng có sẵn cho các yếu
tố giao diện phức tạp như chọn ngày hay dạng menu tầng,cách tiếp cận
“không theo yêu cầu đặc biệt” của ASP.NET MVC để đánh dấu khiến công
việc dễ hơn bằng sử dụng các thư viện giao diện lai tạo tốt nhất như jQuery
UI hay thư viện Bootstrap CSS.ASP.NET MVC ăn khớp tốt với jQuery,ví
dụ,Microsoft chuyển jQuery thành một phần tích hợp trong mẫu dự án mặc

định ASP.NET MVC trong Visual Studio,kèm theo các thư viện phổ biến
khac,như Bootstrap,Knockout and Modernizr
Tip 1: Tôi không quan tâm chi tiết của thư viện JavaScript trong cuốn
sách này vì chúng không phải là cốt lõi của MVC Framework và làm việc
trong trình duyệt.Phát triển bên Client dành cho ứng dụng MVC Framework
là một chủ đề quan trong,tuy nhiên,bạn có thể tìm hiểu thêm trong cuốn sách
của tôi Pro ASP.NET MVC 5 Client,sẽ được phát hành bởi Apress vào năm
2014.Có một số thư viện,cung cấp hỗ trợ cho tính năng cốt lõi như xác nhận
và yêu cầu Ajax,và tôi mô tả chúng trong phần 2 của cuốn sách này.Tôi mô tả
Knockout trong chương 27 và tôi dùng Bootstrap (mặc dụ không giới thiệu
chi tiết) xuyên suốt cuốn sách
Các trang khởi tạo của ASP.NET MVC không chứa bất kì dữ liệu về
View State,nên chúng nhỏ hơn trang thông thường từ ASP.NET Web
Forms.Dù cho có các kết nối nhanh chóng hiện nay.ngành công nghiệp băng
thông này vẫn mang lại một trải nghiệm cải thiện cho người dùng cuối và
giúp giảm chi phí vận hành một ứng dụng web phổ biến
ASP.NET MVC làm việc phối hợp cùng HTTP.Bạn có quyền kiểm soát
trên các yêu cầu đi qua giữa trình duyệt và server,nên bạn có để điều chỉnh
trải nghiệm của người dùng theo ý mình.AJAX được thực hiện dễ dàng,và
không có bất kì postbacks tự động nào để can thiệp với trang thái client
Khả năng kiểm nghiệm


Kiến trúc MVC cho bạn một khởi đầu tố trong việc tạo nên một ứng dụng duy
trì và kiểm tra được vì bạn chia các mối liên quan,quan hệ thành các phần độc
lập.Tuy nhiên,các nhà thiết kế ASP.NET MVC không chỉ dừng lại ở đó.Để hỗ
trợ kiểm nghiệm chi tiết,họ đã lấy thiết kế thành phần hướng đối tượng của
framework và đảm bảo rằng từng phần riêng biệt được cấu trúc để thoả mãn
yêu cầu của việc kiểm nghiệm và các công cụ liên kết
Họ thêm trình thuật sĩ Visual Studio để tạo ra các dự án thử nghiệm

thay cho bạn,có thể được tích hợp với công cụ kiểm nghiệm mã nguồn mở
như Nunit và xUnit cũng như các công cụ test đi kèm trong Visual Studio,thứ
mà tôi giới thiệu trong chương 6.Ngay cả khi bạn chưa bao giờ viết một bài
test,bạn cũng sẽ có một khởi đầu thuận lợi
Trong cuốn sách này,bạn sẽ thấy các ví dụ về cách viết các bài test gọn
gàng ,đơn giản cho bộ điều khiển của ASP.NET MVC và tác dụng cung cấp
cài đặt triển khai của các thành phần framework để mô phỏng bất cứ trường
hợp nào,sử dụng một loạt các bài test và chiến lược mô phỏng tính năng
Khả năng kiểm thử không chỉ là vấn đề của unit-testing.Ứng dụng
ASP.NET MVC cũng làm việc tốt với công cụ thử nghiệm giao diện người
dùng tự động hoá.Bạn có thể viết kịch bản kiểm tra mô phỏng các tương tác
người dùng mà không cần đoán xem cấu trúc thành phần HTML,các lớp
CSS,hay IDs mà framework sẽ tạo ra,và bạn không phải lo về sự thay đổi cấu
trúc bất ngờ
Hệ thống định tuyến mạnh mẽ
Phong cách của URLs đã tiến hoá khi công nghệ web ứng dụng phát
triển.URLs dạng :
/App_v2/User/Page.aspx?action=show%20prop&prop_id=82
742
đang trở hiếm dần,được thay thế bằng định dạng dễ hơn,gọn hơn giống như:
/to-rent/chicago/2303-silver-street
Có một số lý do tốt khi quan tâm về cấu trúc URLs.Đầu tiên,bộ máy tìm
kiếm giao trọng trách cho từ khoá trong URL.Một tìm kiếm cho từ “rent in
Chicago” có nhiều khả năng hiển thị đường đẫn URL đơn giản hơn.Thứ
2,nhiều người dùng Web hiện nay đủ hiểu biết về một URL,và đánh giá cao
lựa chọn cho việc điều hướng bằng cách đánh nó vào thanh địa chỉ trình duyệt
của họ.Thứ 3,khi ai đó hiểu cấu trúc URL,họ dễ liên kết đến nó hơn,chia sẽ nó
với một người bạn,hay thậm chí đọc lớn nó qua điện thoại.Thứ 4,nó không
hiện chi tiết kĩ thuật,thư mục,cấu trúc tên file ứng dụng của bạn với mạng
internet chung,nên bạn có thể tự dọ thay đổi cài đặt phía dưới mà không phá

vỡ tất cả liên kết sắp tới


Một URL gọn rất khó để thực hiện trong nền tảng trước,nhưng
ASP.NET MVC dùng một tính năng gọi là định tuyến URL để tạo ra đường
dẫn URL ngắn gọn theo mặc dịnh.Điều này cho phép bạn kiểm soát lược đồ
đường dẫn URL của bạn và mối quan hệ của chúng với ứng dụng của bạn,cho
bạn sự tự do để tạo ra một mô hình đường dẫn có ý nghĩa và tiện ích cho
người dùng,không cần thiết phải thoả theo một mô hình định trước.Và,tất
nhiên,điều này có nghĩa là bạn có thể dễ dàng định hình một lược đồ URL
theo hướng REST hiện đại nếu bạn muốn.Bạn sẽ tìm thay mô tả kĩ lưỡng của
định tuyến URL trong chương 15 và 16
Xây dựng dựa trên những phần tốt nhất của nền tảng ASP.NET
Nền tảng Microsoft ASP.NET hiện tại cung cấp một bộ các thành phần hiệu
quả được kiểm chứng và công cụ để phát triển hiệu quả ứng dụng Web.Đầu
tiên và rõ ràng nhất,vì ASP.NET MVC dựa trên nền tảng .NET,bạn có sự linh
hoạt để viết code với bất kì ngôn ngữ .NET và tiếp cận với cùng tính năng
API-không chỉ nằm trong MVC mà còn thư viện lớp .NET rộng lớn và các hệ
sinh thái của thư viện .NET của bên thứ ba
Thứ hai,tính năng tạo sẵn của nền tảng ASP.NET – như chứng
thực,thành viên,vai trò,cấu hình,và toàn cầu hoá-có thể làm giảm khối lượng
code bạn cần để phát triển và duy trì bất kì ứng dụng Web nào.và những tính
năng này cũng rất hiệu quả khi được dùng trong nền tảng MVC Framework vì
chúng là dự án Web Form cổ điển.Các nền tảng bên dưới ASP.NET cung cấp
một bộ công cụ phong phú có thể dựa trện đó để xây dựng ứng dụng Web với
MVC Framework
Ghi chú:Tôi diễn tả phần lớn tính năng được sử dụng của nền tảng ASP.NET
vì chúng liên quan đến sự phát triển MVC trong cuốn sách này,nhưng nền
tảng bản thân nó đã là một chủ đề.Để có chi tiết đầy đũ của các chức năng
mạnh mẽ cung cấp bởi ASP.NET ,hãy đón xem trong cuốn sách Pro ASP.NET

MVC 5 Platform,sẽ được phát hành bởi Apress vào năm 2014
API hiện đại
Nền tảng .Net của Microsoft đã tiến hoá,phát triển cùng mỗi bản phát hành
lớn,hỗ trợ-và thậm chí xác định-hình thái của khía cạnh của lập trình hiện
đại..ASP.NET MVC 5 được thiết kế cho .NET 4.5.1,nên các hàm API có thể
thừa hưởng tất cả ưu điểm của các ngôn ngữ gần đây và các bước đột phá thời
gian khởi chạy,bao gồm từ khoá chờ,phương thức mở rộng,định nghĩa
lambdam,file dynamic và ẩn danh,và ngôn ngữ truy xuất tích hợp (LINQLanguage Integrated Query).Nhiều phương thức hàm API của MVC
Framework và mô hình code đi theo một sự tổng hợp tốt hơn,ý nghĩa
hơn.Đừng lo lắng nếu bạn chưa sẵn sàng để bắt kịp tính năng ngôn ngữ C#
mới nhất;Tôi đã làm một bản tóm tắt của phần lớn các tính năng quan trọng
của C# cho phát triển MVC trong chương 4
ASP.NET MVC là mã nguồn mở


Không giống các nền tảng phát triển Web trước đó của Microsoft,bạn được tự
do download mã nguồn nguyên bản cho ASP.NET MVC,thêm vào đó được
tuỳ chỉnh và biên dịch phiên bản cho riêng mình.Điều này rất có giá trị khi
hướng đi debug của bạn hướng đến một thành phần hệ thống và bạn muốn
được vào bên trong code của nó (xem xét những ý kiến ban đầu của nhà lập
trình).Nó cũng hữu ích nếu bạn đang xây dựng một thành phần nâng cao và
muốn xem thử khả năng phát triển có tồn tại,hay tìm hiểu cách mà cách thành
phần đó thực sự làm việc
Ngoài ra,có khả năng nếu bạn không thích cách thứ gì đó làm việc,
hoặc nếu bạn tìm ra bug,hay nếu bạn chỉ muốn truy cập vào thứ gì đó trước
đây không thể tiếp cận.vì bạn có thể đơn giản tự thay đổi nó.Tuy nhiên,bạn sẽ
cần phải theo dõi các thay đỗi của mình và áp dụng lại chúng nếu bạn nâng
cấp lên một phiên bản framework mới hơn.ASP.NET MVC được đăng kí tên
dưới
giấy

phép
của
Microsoft(Ms-PL,
/>giấy
phép chấp nhận của mã nguồn mở (OSI-Open Source Initiative).Như thế có
nghĩa bạn có thể thay đổi mã nguồn,triển khải nó,hay thậm chí công bố
những thay đổi của bạn như một dự án phát sinh mở rộng.Bạn có thể
download

nguồn
MVC
từ

Những điều tôi cần phải biết ?
Để tiếp thu phần lớn cuốn sách,bạn nên làm quen với các điều cơ bản của phát
triển web,có hiểu biết về cách thức HTML và CSS hoạt động và hiểu biết về
C#.Đừng lo,nếu bạn hơi mơ hồ về các chi tiết về Client.Thứ tôi nhấn mạnh là
về phần phát triển phía server trong cuốn sách này và bạn có thể có được
những gì bạn muốn thông qua các ví dụ.Trong chương 4,tôi cung cấp một bản
thống kê phần lớn tính năng của ngôn ngữ C# dành cho MVC,bạn sẽ thấy hữu
ích nếu bạn đang dần chuey6n3 lên nền .NET mới nhất từ các phiên bản cũ
hơn
Cấu trúc của cuốn sách này ?
Cuốn sách này chia thành 2 phần,mỗi một phần sẽ nói về một tập hợp các chủ
đề liên quan
Part 1: Giới thiệu vê ASP.NET MVC 5
Tôi mở đầu cuốn sách bằng cách đề cập ASP.NET MVC Framework trong
bối cảnh hiện nay.Tôi giải thích những lợi ích và những tác động thực tế của
mô hình MVC,cách thức mà MVC Framework phù hợp với phát triển web
hiện đại và mô tả các công cụ và tính năng của ngôn ngữ C# mà mỗi nhà lập

trình MVC Framework đều cần
Trong chương tiếp theo,bạn bắt tay vào tạo một ứng dụng web đơn
giản,và hình dung được những thành phần chính và các khối gắn kết là gì và


cách mà chúng hoà hợp với nhau.Phần lớn phần này của sách,được đưa ra qua
quá trỉnh phát triển của một dự án tên SportStore,qua đó,tôi sẽ cho bạn xem
một quá trình phát triển thức tế từ bước định hình đến phát triển,đụng chạm
tới các chức năng chính của ASP.NET MVC Framework
Part 2: Chi tiết về ASP.NET MVC
Trong part 2,tôi sẽ giải thích các hoạt động bên trong của tính năng MVC mà
tôi đã dùng để xây dưng nên ứng dụng SportStore,Tôi sẽ chỉ cho bạn cách mỗi
tính năng hoạt động,giải thích vai trò mà nó nắm trong MVC Framework và
cho bạn thấy cấu hình và tuỳ chỉnh các tuỳ chọn có sẵn.Sau khi thiết lập bối
cảnh chung trong part 1,tôi sẽ đào sâu vào trong chi tiết ở Part 2
Có điểm gì mới trong ấn bản này ?
Phiên bản 5 của MVC Framework là một nâng cấp tương đối nhỏ và rất nhiều
thay đổi trong cách mà dự án ASP.NET được tạo ra và quản lý trong Visual
Studio.Bảng 1-1 mô tả ngắn gọn tính năng MVC mới và những chi tiết để bạn
tìm kiếm nhiều thông tin về chung trong cuốn sách
Bảng 1-1 Các tính năng mới trong MVC 5
Tính năng

Mô tả
Một dạng bộ lọc mới
được dùng bao gồm các
Authentication Filtersloại xác thực khác nhau
bộ lọc xác thực
trong
cùng

một
controller
Một loại bộ lọc mới
được áp dung cho
phương thức hoạt động
Filter Overrides- Quyền
ngăn cho các bộ lọc định
lọc filter
nghĩa toàn cầu hay nằm
trong controller khỏi bị
ảnh hưởng
Một tập hợp các thuộc
Attribute Routing-Thuộc tính cho phép URL định
tính định tuyến
tuyến dược định nghĩa
trong lớp controller

Chương cần xem

18

18

15,16

ASP.NET 4.5.1,phiên bản mà MVC dựa vào đó để hình thành,đã được
nâng cáp khá tốt.Thay đổi quan trọng nhất là việc thêm vào các hàm
ASP.NET Identity API,thay thế cho hệ thống thành viên để quản lý thông tin
xác thực,uỷ quyền của người dùng.Tôi nhắc đến ASP.NET Identity trong
cuốn sách này,mặc dù tôi có giải thích cơ chế xác thực và uỷ quyền được áp

dụng vào ứng dụng MVC Framework thông qua việc sử dụng tính năng như
bộ lọc


Lưu ý: Tôi sẽ nói đến ASP.NET Identity trong cuốn sách Pro ASP.NET
MVC 5 Platform,sẽ được phát hành vào năm 2014 và viết về tất cả chức năng
mà ASP.NET cung cấp.Điều đó nói rằng,tôi không muốn một cuốn sách thứ
hai để tìm hiểu về một thứ quan trong như bảo mật người dùng,và vì thế
Apress đã đồng ý để phát hành những chương về bảo mật trong sách đó từ
webside không tính phí khi cuốn sách được phát hành.Những chương đó sẽ
không sẵn ngay lập tức vì tôi vẫn chưa viết xong cuốn nền tảng,nhưng đó là
dự án viết sách lớn tiếp theo sau cuốn sách nay và tôi hi vọng khoảng thời
gian chờ đợi không quá lâu
Một ấn bản mới là cơ hôi để viết nhiều hơn về các tính năng mới và tôi
đã có một vài thay đổi cho cuốn sách này.Tôi đã mở rộng ví dụ SportStore để
cho thấy những cơ bản của phát triển ứng dụng web điện thoại,Tôi đã thêm tài
liệu tham khảo nhanh vào phần đầu của tất cả các chương chuyên sau nên bạn
có thể tìm những ví dụ cụ thể dễ dàng,và toi thêm một chương cho thấy cách
một trong những thư viện mã nguồn mở mà Microsoft nắm giữ- Knockout- có
thể kết hớp với chức năng Web API để tạo nên ứng dụng một trang (SPAs Single-Page Applications)
Tôi có thể lấy ví dụ ở đâu ?
Bạn có thể download tất cả ví dụ cho tất cả các chương trong cuốn sách từ
trang Apress.com .File tải về có sẵn miễn phí và bao gồm tất cả các dự án
Visual Studio và nội dung của chúng.Bạn không phải tải code về,nhưng đó là
cách dễ nhất để thử nghiệm với các ví dụ và sao chép vào dự án riêng bạn


Chương trình nào cần thiết cho cuốn sách này ?
Phần mềm duy nhất bạn cần cho phát triển MVC đó là Visual Studio
2013,trong đó chứa tất cả mọi thứ bạn cần để bắt đầu,bao gồm một ứng dụng

server có sẵn cho việc khởi chay và ứng dụng debugging MVC,một phiên bản
quản trị SQL Server miễn phí cho việc phát triển các ứng dụng chạy trên cơ
sở dữ liệu,công cụ để test và,tất nhiên,một bộ biên dịch sửa code và debugger
Có nhiều phiên bản Visual Studio khác nhau,nhưng tôi sẽ sử dụng bản
miễn phí của Microsoft,Visual Studio Express 2013 for Web.Microsoft thêm
một vài tính năng tốt cho các bản thu phí của Visual Studio,nhưng bạn sẽ
không cần chúng cho cuốn sách này và các hình ảnh minh hoạ bạn thấy trong
sách này đều được lấy ra trong khi sử dụng phiên bản Express,phiên bản có
thể tải về từ Có nhiều phiên bản khác nhau của Visual Studio
2013 Express,mỗi bản sử dụng cho mục đích khác nhau.Đảm bảo rằng bạn
chọn phiên bản cho Web,có hỗ trợ ứng dụng ASP.NET
Một khi bạn đã cài đặt Visual Studio,bạn đã sẵn sáng bắt đầu để bắt
đầu.Microsoft đã nâng phạm vi các tính năng trong Visual Studio Express
trong những năm gần đây và không cần gì khác để bạn làm theo trừ cuốn sách
này.Tôi dựa vào những gói phần mềm bổ sung,nhưng chúng đã được cài đặt
trong Visual Studio và không đòi hỏi các bản tải về riêng biệt và cài đặt (và
có sẵn,miễn phí)
Tip: Tôi sử dụng Windows 8.1 xuyên suốt quyển sách này,nhưng bạn
có thể dùng Visual Studio 2013 và phát triển ứng dụng MVC khá dễ dàng trên
các phiên bản Windows trước.Xem qua các yêu cầu hệ thống dành cho Visual
Studio 2013 để biết thêm chi tiết về phiên bản và các bản cập nhật được hỗ trợ
Lời cảm ơn
Trong chương 10,tôi sử dụng một tính năng trong thư viện Bootstrap CSS tên
là Glyphicons Halflings,một tập hợp các biểu tượng thường không có sẵn và
tính phí,nhưng vì người sáng tạo đã đưa ra một điều lệ mở lồng vào
Bootstrap.Yêu cầu duy nhất là URL của tác giả phải được trích dẫn mỗi khi
cần thiết,đây là điều công bằng và hợp lý phải làm.Đây là đường link:




Tóm lược
Trong chương nay,tôi đã giải thích bối cảnh mà MVC Framework tồn tài và
so sánh nó với Web Forms.Tôi mô tả những lợi ích của việc dùng MVC
Framework,cấu trúc của cuốn sách và phần mềm bạn cần có để lần theo các ví
dụ
Bạn đã thấy cách nền tảng ASP.NET MVC chỉ ra các điểm yếu của
ASP.NET Web Forms,và cách mà thiết kế hiện đại mạng lại những ưu điểm
thế mạnh cho những người phát triển muốn code tốt,dễ duy trì.Trong chương
tới,bạn sẽ thấy MVC Framework hoạt động trong một demo đơn giản với các
tính năng đem lại lợi ích đó




×