ASP.NET MVC 5 – Chapter 1

0
435

ASP.NET MVC là gì?

ASP.NET MVC là một khung phát triển (Framework) Web được phát triển từ Microsoft. Nó là sự kết hợp của tính hiệu quả và sự gọn gàng theo mô hình MVC (Model-View-Controller).

Hầu hết các ý tưởng và công nghệ được lấy ý tưởng từ mô hình Agile và các phần tốt nhất của công nghệ ASP.NET. Đây là một mô hình thay thế hoàn toàn cho mô hình Web Forms truyền thống. Cung cấp lợi thế cho tất cả các yêu cầu cơ bản nhất ở các dự án Web thường gặp phải.

Trong chương này, bạn sẽ tìm hiểu lý do tại sao Microsoft tạo ra ASP.NET MVC, có những điểm gì đặc biệt so với người tiền nhiệm, tại sao lại phải lựa chọn nó. Và cuối cùng có cái gì mới trong ASP.NET MVC 5? Những gì được đề cập bên trong nó?

Hiểu về lịch sử của ASP.NET

ASP.NET là một sự thay đổi rất lớn khi lần đầu tiên xuất hiện vào năm 2002. Hình bên dưới minh họa công nghệ của Microsoft khi nó xuất hiện

getting-started-with-mvc-5-and-visual-studio-2013-3-638

Với Web Forms. Microsoft đã cố gắng che giấu giao thức HTTP(with its intrinsic statelessness. Cái này mình giữ nguyên vì không biết dịch thế nào) và HTML (Mà như các bạn đã biết lúc đó HTML đã quá quen thuộc với người dùng rồi) bằng cách sử dụng giao diện người dùng (UI) bằng một hệ thống các object control xử lý ở phía server. Mỗi control sẽ kiểm soát trạng thái của nó theo yêu cầu của người dùng (bằng cách sử dụng ViewState) và sẽ in ra mã HTML khi cần thiết và tự động kết nối các sự kiện ở phía client (Ví dụ, một nút bấm chẳng hạn) với server để xử lý sự kiện tương ứng.

Trong thực tế. Bạn có thể nghĩ rằng Web Forms là một lớp trừu tượng khổng lồ được thiết kế theo hướng cổ điển là kéo thả các control trên Web (Mà cái này dân làm Web cực ghét. Đã làm web thì phải thiết kế và sáng tạo theo ý mình chứ nhỉ. Đâu có phải như làm ứng dụng Windows Forms).

Và mục đích này không có gì khác ngoài việc giúp việc thiêt kế web trong giống như Windows Forms :D. Các lập trình viên không phải làm việc với các requests và responses của giao thức HTTP. Họ chỉ cần nghĩ về trạng thái của giao diện người dùng (UI – Theo mình nghĩ thì ý ở đây là trạng thái của các Control và các event của nó). Và Microsoft liên tục cập nhật các nội dung của Windows Forms lên ứng dụng Web.

Có gì không tốt trong ASP.NET Web Forms?

Truyền thống phát triển ASP.NET Web Forms rất có quy tắc. Tuy nhiên qua thời gian nó đã chứng minh sự phức tạp và nhọc nhằn của mình khi làm việc:

  • Khối lượng hay Dung lượng ViewState: Các cơ chế thực tế để duy trì các trạng thái (yêu cầu nhận gửi dữ liệu) hay còn được gọi là ViewState. Mang trong mình khối lượng lớn các dữ liệu chuyển giao qua lại giữa máy khách và máy chủ. Những thông tin này có thể nặng tới hàng trăm kilobytes trong các ứng dụng web khiếm tốn (các ứng dụng nhỏ. Nếu các ứng dụng web lớn thì sẽ còn tiêu tốn tài nguyên khủng khiếp hơn!). Và nó tồn tại với mọi yêu cầu từ máy khách tới máy chủ. Điều này dẫn đến thời gian đáp ứng chậm hơn và gia tăng nhu cầu băng thông từ máy chủ
  • Chu kỳ sống của 1 trang: Các cơ chế để kết nối sự kiện phía khách hàng với mã xử lý sự kiện phía máy chủ là một phần trong vòng đời một trang. Các cơ chế này cực kỳ phức tạp và nhạy cảm!. Một số developers thành công trong việc thao tác hệ thống, trong thời gian chạy mà không bị lỗi View State hoặc họ sẽ tìm ra một vài sự kiện bí ẩn không được thi hành.
  • Sự sai lầm khi tách thành 2 lớp (Ở đây là lớp giao diện và code-behind): Trong ASP.NET Web Forms bạn sẽ thấy Microsoft cung cấp công cụ để tách code-behind ra khỏi ngôn ngữ đánh dấu HTML. Ngôn ngữ HTML thì một trang riêng và Code-behind (back-end sẽ là 1 trang riêng nữa). Điều này được hoan nghênh rộng rãi khi tách phần logic và giao diện ra với nhau – Nghe có vẻ hợp lý. Tuy nhiên trong thực tế, các nhà phát triển khuyến khích nên trộn lẫn 2 thành phần này với nhau (Tôi nghĩ ý họ là giống như PHP vậy).
  • Giới hạn số control HTML: Các control ở phái server sẽ in ra ngôn ngữ HTML chuẩn khi chạy ở client. Nhưng không hẳn là chuẩn HTML mà bạn muốn. Tôi còn nhớ ở phiên bản đầu tiên của ASP.NET, các đầu ra của HTML không đáp ứng chuẩn của Web và CSS (Cascading Style Sheets). Và điều này dẫn đến một vấn đề là ta không thể đoán trước ở server các control sẽ in ra mã HTML như thế nào và nó gây khó khăn khi giao tiếp với ngôn ngữ Javascripts. Có lẽ Microsoft đã thấy được điều đó nên trong những phiên bản gần đây điều này đã được khắc phục. Tuy nhiên dù thế nào đi nữa thì bạn sẽ khó mà nhận được mã HTML mà bạn mong đợi
  • Leaky abstraction (Rò rỉ lớp trừu tượng): Web Forms cố gắng che giấu các HTML và HTTP ở bất kỳ nơi nào có thể. Điều này làm cho bạn gặp khó khăn khi muốn customs một thứ gì đó?. Và điều này chính là vấn đề gây can trở cho các nhà phát triển Web
  • Khả năng kiểm thử thấp (Low testability): Xin thông báo rằng các nhà phát triển Web Forms đừng mong đợi kiểm tra tự động sẽ trở thành một phần thiết yếu của công nghệ này. Điều này không có gì ngạc nhiên cho lắm. Khi các kiến trúc của họ thiết kế quá quá chặc chẽ và điều này thì không thích hợp để kiểm thử. Tích hợp kiểm thử đúng là một thách thức không hề đơn giản.

Tuy nhiên không hẳn ASP.NET Web Forms không tốt trong mọi trường hợp. Microsoft đã nỗ lực rất nhiều để cải thiện các tiêu chuẩn, đơn giản hóa quá trình phát triển, thậm chí có một số tính năng được lấy từ ASP.NET MVC. Web Forms thật sự vượt trội nếu bạn cần thiết một web nhanh chóng và tiết kiệm thời gian. Bạn có thể tạo một ứng dụng web và chạy nó trong vòng 1 ngày. Nhưng nếu bạn là một người tỉ mỉ và cẩn trọng trong quá trình phát triển, bạn sẽ nhận thấy rằng các ứng dụng mà bạn tạo ra khó kiểm soát và khó duy trì.

**Lưu ý: **Để hiểu kỹ hơn và chi tiết hơn về ASP.NET. Bạn vui lòng đọc quyển sách **PRO ASP.NET 4.5 in C#**[tại đây](http://vnwao.com/2015/08/16/chia-se-mien-phi-ebook-pro-asp-net-4-5-in-c-co-gia-42/). Quyển sách này trình bày đầy đủ về ASP.NET và hướng dẫn thực hành những cách tốt nhât để tránh các lỗi nghiêm trọng trong ASP.NET

Công nghệ Web ngày nay đã có gì?

Ở bên ngoài. Những công nghệ web đã phát triển theo nhiều hướng khác nhau một cách mạnh mẽ kể từ khi công nghệ ASP.NET Web Forms được phát hành lần đầu tiên.

Tiêu chuẩn Web và REST

Dung lượng các ổ đĩa dùng để lưu trữ web đã tăng lên đáng kể trong những năm gần đây (10 năm về trước các bạn chỉ có vài trăm MB là cao rồi. Ngày hôm nay thì lên đến hàng trăm GB thậm chí là TB). Ngoài ra các website bây giờ đã có thể chạy được trên nhiều thiết bị và nhiều trình duyệt khác nhau theo những tiêu chuần Web (Html,Css,JavaScripts và v.v..). làm cho việc duyệt Web ngày càng trở lên dễ dàng và thú vị hơn. Nền tảng Web hiện đại đã phần nào đáp ứng được khả năng kinh doanh trên internet trong nhiều trường hợp và đáp ứng đủ yêu cầu cho các lập trình viên cùng phát triển.

HTML5 cũng đã bắt đầu du nhập vào thế giới web, cung cấp cho các nhà phát triển web những khả năng vô cùng thú vị, điều mà trước đây chỉ được thực hiện bởi máy chủ web. Ngoài ra các thư viện JavaScripts ngày càng lớn mạnh và phát triển. Có thể kể đến những thư viện JavaScripts như: AngularJS, jQuery, jQueryUI và jQuery Mobile. Tất cả các điều trên đã đang góp phần làm cho các ứng dụng Web ngày càng phong phú hơn

**Lưu ý: **Tôi có để cập đến HTML5 và jQuery ở đây trong chương này.  Nhưng tôi không đi sâu vào nó. Vì đây là những chủ để mà chúng ta sẽ thảo luận ở một quyển sách riêng. Nếu bạn muốn tìm hiểu kỹ hơn những chủ để này. Xin vui lòng đọc những quyển sách sau: AngularJS Pro, Pro jQuery 2.0, Pro Javascripts for Web Apps và The Definitive Guide to HTML5

LEAVE A REPLY

Please enter your comment!
Please enter your name here