intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Giáo trình Lập trình Web

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:147

20
lượt xem
10
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Giáo trình Lập trình Web cung cấp một cái nhìn tổng quan về nền tảng ASP.NET, giới thiệu đến học viên các thành phần cốt lõi, cách thức hoạt động của ASP.NET Core, cũng như mô hình MVC, làm nền tảng cho việc phát triển web. Sinh viên sẽ được hướng dẫn chi tiết qua từng bài học, từ những khái niệm cơ bản đến các kỹ thuật lập trình nâng cao.

Chủ đề:
Lưu

Nội dung Text: Giáo trình Lập trình Web

  1. BỘ GIÁO DỤC VÀ ĐÀO TẠO ĐẠI HỌC CÔNG NGHỆ TP.HCM LẬP TRÌNH WEB Biên soạn: Nguyễn Đình Ánh Nguyễn Huy cường Mai Ngọc Thu Trần Đăng Khoa Phạm Hữu Kỳ Website: http://www.hutech.edu.vn
  2. LẬP TRÌNH WEB Ấn bản 2023
  3. MỤC LỤC I MỤC LỤC MỤC LỤC ...................................................................................................................I HƯỚNG DẪN ........................................................................................................... VI BÀI 1 TỔNG QUAN VỀ ASP.NET ............................................................................... 8 1.1 TỔNG QUAN ASP.NET .................................................................................... 8 Giới thiệu .................................................................................................... 8 ASP.NET tích hợp với Framework .................................................................... 8 Tính đa ngôn ngữ ......................................................................................... 8 Tính hướng đối tượng .................................................................................... 9 Biên dịch ASP.NET ........................................................................................ 9 Dễ dàng triển khai và cấu hình ..................................................................... 10 1.2 TÍNH NĂNG MỚI TRONG ASP.NET 4.5 .......................................................... 10 Đọc và ghi bất đồng bộ các đối tượng HTTP Request và Response..................... 11 Hỗ trợ cho các các module và handler bất đồng bộ dạng await và task-based (Support for await and Task-Based Asynchronous Modules and Handlers) ......................... 12 Các tính năng mới kiểm tra tính hợp lệ đối với Request ................................... 14 Thư viện Anti-XSS ...................................................................................... 16 Hỗ trợ cho giao thức WebSockets ................................................................. 17 Bundling và Minification ............................................................................... 19 Cải thiện tốc độ cho Web Hosting ................................................................. 19 1.3 TẠO TRANG WEB VỚI VISIUAL STUDIO ....................................................... 19 Tạo dự án mới ............................................................................................ 19 Ví dụ ......................................................................................................... 22 TÓM TẮT ................................................................................................................ 24 BÀI TẬP ................................................................................................................. 25 BÀI 2 CÁC LỚP SỬ DỤNG TRONG ASP.NET ............................................................ 27 2.1 HTTP REQUEST ............................................................................................ 27 Giới thiệu .................................................................................................. 27 Các thuộc tính ............................................................................................ 28 2.2 HTTP RESPONSE ......................................................................................... 28 Giới thiệu .................................................................................................. 28 Các thuộc tính/phương thức ......................................................................... 28 2.3 HTTP SERVER .............................................................................................. 29 2.4 SESSION VÀ COOKIE ................................................................................... 30 Giới thiệu Cookie và Session ........................................................................ 30 Cookie ...................................................................................................... 31 Session ..................................................................................................... 32 TÓM TẮT ................................................................................................................ 33 BÀI TẬP ................................................................................................................. 35
  4. II MỤC LỤC BÀI 3 TRUY CẬP DỮ LIỆU ..................................................................................... 36 3.1 TỔNG QUAN ................................................................................................ 36 3.2 TRUY CẬP DỮ LIỆU ADO.NET ....................................................................... 38 3.3 TRUY CẬP DỮ LIỆU XML ............................................................................... 39 3.4 SQLDATASOURCE ........................................................................................ 40 3.5 TRUY CẬP DỮ LIỆU LINQ ............................................................................. 42 LINQ cơ bản ............................................................................................... 43 Cách làm việc của LINQ ............................................................................... 43 Cú pháp LINQ ............................................................................................ 43 TÓM TẮT ................................................................................................................ 47 BÀI TẬP ................................................................................................................. 48 BÀI 4 LẬP TRÌNH VỚI JQUERY ............................................................................. 49 4.1 JQUERY LÀ GÌ? ............................................................................................ 49 Giới thiệu .................................................................................................. 49 Sử dụng jQuery trong ASP.NET .................................................................... 50 4.2 LẬP TRÌNH VỚI JQUERY .............................................................................. 51 Chạy mã khi trang đã sẵn sàng .................................................................... 51 Hàm $() - function $() ............................................................................... 52 Một số API trong jQuery .............................................................................. 52 TÓM TẮT ................................................................................................................ 59 BÀI TẬP ................................................................................................................. 59 BÀI 5 TỔNG QUAN VỀ ASP.NET MVC ..................................................................... 60 5.1 TỔNG QUAN ASP.NET MVC ........................................................................... 60 Mô hình MVC cơ bản ................................................................................... 60 Đặc tính trong ASP.NET MVC ........................................................................ 61 Khác biệt với Web Form .............................................................................. 61 Lợi ích của ứng dụng web dựa trên mô hình MVC ............................................ 62 5.2 XÂY DỰNG ỨNG DỤNG VỚI ASP.NET MVC .................................................... 64 Tạo Project với ASP.NET MVC Web Application ............................................... 64 5.3 ĐỊNH TUYẾN URL ........................................................................................ 66 Giới thiệu .................................................................................................. 66 Tìm hiểu định tuyến URL ............................................................................. 67 TÓM TẮT ................................................................................................................ 69 BÀI TẬP ................................................................................................................. 69 BÀI 6 TỔNG QUAN VỀ ASP.NET CORE ................................................................... 71 6.1 TỔNG QUAN ASP.NET CORE .......................................................................... 71 Giới thiệu ASP.NET Core .............................................................................. 71 Lý do chọn ASP.NET Core? ........................................................................... 72 Sự khác biệt giữa .NET Framework và .NET Core ............................................ 74 So sánh ASP.NET với ASP.NET Core .............................................................. 74
  5. MỤC LỤC III Mô hình ASP.NET Core MVC ......................................................................... 77 Đặc tính trong ASP.NET Core ....................................................................... 77 Sự khác biệt của ASP.NET Core và ASP.NET ................................................... 78 Lợi ích của ứng dụng web khi xây dựng bằng ASP.NET Core ............................. 79 6.2 XÂY DỰNG ỨNG DỤNG VỚI ASP.NET CORE .................................................... 80 Tạo Project với ASP.NET Core Empty ............................................................. 80 TÓM TẮT ................................................................................................................ 85 BÀI TẬP ................................................................................................................. 86 BÀI 7 TỔNG QUAN VỀ ASP.NET CORE MVC ............................................................ 87 7.1 TỔNG QUAN ASP.NET CORE MVC ................................................................... 87 Giới thiệu ASP.NET CORE MVC...................................................................... 87 TÌM HIỂU VỀ MODEL ................................................................................... 88 TÌM HIỂU VỀ CONTROLLER .......................................................................... 91 TÌM HIỂU VỀ VIEW ..................................................................................... 92 7.2 XÂY DỰNG ỨNG DỤNG VỚI ASP.NET CORE MVC............................................. 94 Tạo Project với ASP.NET Core MVC ............................................................... 94 TÓM TẮT ................................................................................................................ 97 BÀI TẬP ................................................................................................................. 98 BÀI 8 KỸ THUẬT TRUYỀN DỮ LIỆU TRONG ASP.NET CORE MVC .......................... 100 8.1 VIEWBAG TRONG ASP.NET CORE MVC ............................................................. 100 Định nghĩa ViewBag ................................................................................... 100 Tính năng của ViewBag .............................................................................. 101 Cách sử dụng ViewBag ............................................................................... 101 Ví dụ chi tiết ............................................................................................. 101 Kết luận ................................................................................................... 102 8.2 VIEWDATA TRONG ASP.NET CORE MVC ........................................................... 102 Định nghĩa ViewData .................................................................................. 102 Tính năng của ViewData: ............................................................................ 102 Cách sử dụng ViewData .............................................................................. 103 Ví dụ minh họa .......................................................................................... 103 So sánh ViewData với các phương thức truyền dữ liệu khác ............................ 104 Những lưu ý khi sử dụng ‘ViewData’ ............................................................. 104 Kết luận ................................................................................................... 104 8.3 STRONGLY TYPED VIEWS TRONG ASP.NET CORE MVC ......................................... 105 Định nghĩa Strongly Typed Views ................................................................. 105 Đặc điểm của Strongly Typed Views ............................................................. 105 Cách sử dụng Strongly Typed Views ............................................................. 105 Ví dụ chi tiết ............................................................................................. 106 Tóm tắt .................................................................................................... 107 8.4 VIEWMODEL TRONG ASP.NET CORE MVC ......................................................... 108 Định nghĩa ViewModel ................................................................................ 108
  6. IV MỤC LỤC Tại sao sử dụng ViewModel? ....................................................................... 108 Cách tạo ViewModel ................................................................................... 108 Ví dụ chi tiết ............................................................................................. 109 Tóm tắt .................................................................................................... 109 8.5 TEMPDATA TRONG ASP.NET CORE MVC............................................................ 110 Khái niệm TempData.................................................................................. 110 Ưu điểm của TempData .............................................................................. 110 Cách hoạt động của TempData .................................................................... 110 Sử dụng TempData .................................................................................... 110 Lưu ý khi sử dụng TempData ...................................................................... 111 Kết luận ................................................................................................... 111 TÓM TẮT .............................................................................................................. 111 BÀI TẬP ............................................................................................................... 112 BÀI 9 ĐỊNH TUYẾN TRONG ASP.NET CORE MVC .................................................. 114 9.1 GIỚI THIỆU ĐỊNH TUYẾN TRONG ASP.NET CORE MVC ......................................... 114 Định tuyến trong ASP.NET Core MVC là gì? ................................................... 114 Định tuyến hoạt động như thế nào trong ASP.NET Core? ................................ 115 Tìm hiểu định tuyến URL trong ASP.NET Core MVC ........................................ 117 TÓM TẮT .............................................................................................................. 119 BÀI TẬP ............................................................................................................... 120 BÀI 10 QUẢN LÝ TRẠNG THÁI TRONG ASP.NET CORE MVC ................................... 121 10.1 COOKIES IN ASP.NET CORE MVC .................................................................... 121 Định nghĩa............................................................................................. 121 Ví dụ minh họa ...................................................................................... 122 10.2 SESSIONS IN ASP.NET CORE MVC .................................................................. 122 Định nghĩa............................................................................................. 122 Ví dụ minh họa ...................................................................................... 123 TÓM TẮT .............................................................................................................. 124 BÀI TẬP ............................................................................................................... 124 BÀI 11 ENTITY FRAMEWORK CORE ....................................................................... 126 11.1 GIỚI THIỆU VỀ ENTITY FRAMEWORK CORE .......................................................... 126 Entity Framework Core là gì? ................................................................... 127 Khái niệm ORM ...................................................................................... 127 Tại sao lại sử dụng ORM? ........................................................................ 127 Vì sao chọn Entity Framework Core trong các ứng dụng .NET? ..................... 128 11.2 CÁC PHƯƠNG PHÁP TIẾP CẬN TRONG ENTITY FRAMEWORK CORE ............. 128 Code First Approach ............................................................................... 129 Database First Approach ......................................................................... 130 11.3 EF CORE DATABASE PROVIDERS ....................................................................... 130 11.4 ASP.NET CORE MVC SỬ DỤNG EF CORE ........................................................... 130 Thao tác CRUD trong ASP.NET Core MVC với EF Core .................................. 131
  7. MỤC LỤC V Mẫu Thiết kế Repository trong ASP.NET Core MVC sử dụng EF Core .............. 134 TÓM TẮT .............................................................................................................. 135 BÀI TẬP ............................................................................................................... 136 BÀI 12 BẢO MẬT CHO ỨNG DỤNG ASP.NET CORE MVC .......................................... 138 12.1 GIỚI THIỆU ................................................................................................. 138 Xác Thực và Phân Quyền ......................................................................... 139 Ví Dụ Minh Họa: Xác Thực Người Dùng ...................................................... 139 Phân Quyền và Kiểm Soát Truy Cập .......................................................... 140 12.2 ASP.NET CORE IDENTITY .............................................................................. 141 Thiết Lập ASP.NET Core Identity .............................................................. 141 Ví Dụ Minh Họa: Đăng Ký và Đăng Nhập Người Dùng .................................. 142 12.3 KẾT LUẬN .................................................................................................... 143 TÓM TẮT .............................................................................................................. 143 BÀI TẬP ............................................................................................................... 144 TÀI LIỆU THAM KHẢO ........................................................................................... 145
  8. VI HƯỚNG DẪN HƯỚNG DẪN MÔ TẢ MÔN HỌC Môn học trang bị kiến thức nền tảng về cách xây dựng các ứng dụng web đa năng và hiệu suất cao. Môn học cung cấp một cái nhìn tổng quan về nền tảng ASP.NET, giới thiệu đến học viên các thành phần cốt lõi, cách thức hoạt động của ASP.NET Core, cũng như mô hình MVC, làm nền tảng cho việc phát triển web. Sinh viên sẽ được hướng dẫn chi tiết qua từng bài học, từ những khái niệm cơ bản đến các kỹ thuật lập trình nâng cao. Trong quá trình học, không chỉ dừng lại ở lý thuyết, môn học còn chú trọng vào việc thực hành qua việc áp dụng các kiến thức vào dự án thực tế. Học viên sẽ có cơ hội làm việc trực tiếp trên các dự án web, áp dụng kiến thức về Entity Framework Core trong việc tạo và quản lý cơ sở dữ liệu, xây dựng các chức năng định tuyến phức tạp và quản lý trạng thái ứng dụng. Kết thúc môn học, học viên sẽ có đủ khả năng để tự tin xây dựng và triển khai các ứng dụng web chuyên nghiệp với ASP.NET Core MVC. NỘI DUNG MÔN HỌC  Bài 1 TỔNG QUAN VỀ ASP.NET  Bài 2 CÁC LỚP SỬ DỤNG TRONG ASP.NET  Bài 3 TRUY CẬP DỮ LIỆU  Bài 4 LẬP TRÌNH VỚI JQUERY  Bài 5 TỔNG QUAN VỀ ASP.NET MVC  Bài 6 TỔNG QUAN VỀ ASP.NET Core  Bài 7 TỔNG QUAN VỀ ASP.NET CORE MVC  Bài 8 KỸ THUẬT TRUYỀN DỮ LIỆU TRONG ASP.NET CORE MVC  Bài 9 ĐỊNH TUYẾN TRONG ASP.NET CORE MVC  Bài 10 QUẢN LÝ TRẠNG THÁI TRONG ASP.NET CORE MVC  Bài 11 ENTITY FRAMEWORK CORE
  9. HƯỚNG DẪN VII  Bài 12 BẢO MẬT CHO ỨNG DỤNG ASP.NET CORE MVC KIẾN THỨC TIỀN ĐỀ Môn Lập trình web cần kiến thức tiền đề của các môn học sau. - Thiết kế web - Lập trình hướng đối tượng - Lập trình C# trên Windows YÊU CẦU MÔN HỌC Người học vận dụng được kiến thức nền tảng về lập trình web để có thể thiết kế cài đặt các ứng dụng web, như quản lý website, hệ quản trị nội dung, ứng dụng thương mại điện tử, các dịch vụ web. Kỹ năng lập trình, và phân tích thiết kế ứng dụng thành thạo. Người học cần đi học đầy đủ, đọc các nội dung sẽ được học trước khi đến lớp, làm các bài tập về nhà và đảm bảo thời gian tự học ở nhà. CÁCH TIẾP NHẬN NỘI DUNG MÔN HỌC Để học tốt môn này, người học cần đọc trước các nội dung chưa được học trên lớp; tham gia đều đặn và tích cực trên lớp; hiểu các khái niệm, tính chất và ví dụ tại lớp học. Sau khi học xong, cần ôn lại bài đã học và làm các bài tập, câu trắc nghiệm. Tìm đọc thêm các tài liệu khác liên quan đến bài học và làm thêm bài tập. PHƯƠNG PHÁP ĐÁNH GIÁ MÔN HỌC Môn học được đánh giá gồm hai thành phần.  Điểm quá trình (50%): Hình thức và cách đánh giá do giảng viên dạy lý thuyết quyết định được phê duyệt của bộ môn.  Điểm thi cuối kỳ (50%): Hình thức làm đồ án môn học và chấm thi vấn đáp dựa trên nội dung đồ án môn học kết hợp với lý thuyết trong các bài học. Danh sách đồ án do giảng viên quyết định được bộ môn kiểm duyệt và cung cấp vào đầu khóa học.
  10. 8 HƯỚNG DẪN Bài 1 TỔNG QUAN VỀ ASP.NET Học xong bài này người học sẽ nắm được các nội dung sau: - Hiểu được tổng quan về công nghệ ASP.NET, Khái niệm về ASP.NET. - Biết được những tính năng mới của ASP.NET 4.5 so với ASP.NET 2.0. - Biết cách tạo website ASP.NET MVC trong Visual Studio. 1.1 TỔNG QUAN ASP.NET Giới thiệu Trước hết, tên đầy đủ của ASP.NET là Active Server Pages .NET (.NET ở đây là .NET framework). Nói đơn giả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 là một phương pháp tổ chức hay khung tổ chức (framework) để thiết lập các ứng dụng mạnh cho mạng dựa trên CLR (Common Language Runtime). ASP.NET tích hợp với Framework .NET Framework được chia thành bộ các tác vụ cho từng chức năng gồm các lớp (class), các cấu trúc (structures), các giao diện (interfaces) và các lõi (core) thành phần chương trình. Trước khi sử dụng thành phần nào ta phải hiểu cơ bản về chức năng, các tổ chức của nó. Mỗi một trong hàng nghàn các tầng lớp được nhóm theo trình tự logic, thứ bậc được gọi là một namespace. Mỗi namespace cung cấp một tính năng. Tính đa ngôn ngữ Để xây dựng một ứng dụng web chúng ta không chỉ chọn một ngôn ngữ mà có thể chọn nhiều ngôn ngữ khác. Điều quan trọng là các ngôn ngữ chúng ta chọn mã của nó
  11. HƯỚNG DẪN 9 dịch được ra mã IL. Điều đó có nghĩa là IL là ngôn ngữ của .NET và chỉ có CLR nhận biết được IL. Tính hướng đối tượng ASP.NET là ngôn ngữ lập trình hướng đối tượng sử dụng các ngôn ngữ .NET. Nó cung cấp bộ các đối tượng nhỏ và thực sự là một tầng làm việt trên nguyên lý của HTTP và HTML. Mã nguồn của chúng ta không được truy cập toàn bộ các đối tượng trong .NET Framework nhưng có thể khai thác tất cả các quy ước của một môi trường OOP (Object Oriented Programming). Chúng ta có tạo các lớp, giao diện, kế thừa các lớp ... Chúng ta có thể kiểm soát được các đối tượng trong chương trình như hiển thị dữ liệu và các sự kiện của đối tượng. Biên dịch ASP.NET Một ứng dụng ASP.NET luôn luôn được biên dịch, nó không chạy bằng mã của C# hoặc Visual Basic mà không được biên dịch trước. Một ứng dụng ASP.NET thực sự được biên dịch thông qua 2 giai đoạn: - Giai đoạn đầu tiên những các mã (code) ta viết (C#, Visual Basic hoặc ngôn ngữ .NET khác) được dịch bởi Microsoft Intermediate Language (MSIL). Giai đoạn dịch này được dịch tự động khi trang wed đầu tiên yêu cầu. Chúng ta có thể thực hiện dịch trước. Các tập tin được dịch thành mã IL (Intermediate Language Code). Hình 1.1: Kiến trúc .Net Framework - Giai đoạn tiếp theo được dịch trước khi trang Web được thực thi. Tại giai đoạn này mã IL được dịch thành bản mã máy (Native Machine Code). Giai đoạn này được gọi là Just-In-Time (JIT).
  12. 10 HƯỚNG DẪN Khía cạnh quan trọng nhất của công cụ ASP.NET là nó chạy trong môi trường thời gian thực (Runtime) của CLR (Common Language Runtime). CLR là máy ảo (virtual machine) trong Microsoft .NET, do có ngôn ngữ trung gian IL nên khi phát triển ứng dụng trên .NET, chúng ta không bị phụ thuộc vào thiết bị, có nghĩa là theo Microsoft nói thì ứng dụng .NET có thể chạy trên bất kỳ thiết bị nào có .NET Framework. Tất cả các namespace, các ứng dụng, các lớp trong bộ .NET Framework được gọi tắt là bộ quản lý mã. CLR cũng cung cấp các dịch vụ quan trọng khác như: - Quản lý bộ nhớ - Thu nhặt rác - Quản lý các tuyến - Xử lý ngoại lệ - An toàn Dễ dàng triển khai và cấu hình Mọi sự cài đặt .NET Framework đều cung cấp các lớp như nhau. Để triển khai ứng dụng ASP.NET chúng ta chỉ cần sao chép các tập tin vào thư mục ảo trên máy chủ (server) và máy chỉ chỉ cần có .NET Framework. Việc cấu hình dễ dàng đơn giản không phụ thuộc vào IIS (Internet Information Services). Cấu hình trong ASP.NET được đặt trong tập tin web.config. Tập tin web.config được để cùng với thư mực chứa trang web của chúng ta. Tập tin web.config không bao giờ bị khóa, chúng ta có thể truy cập bất kỳ lúc nào, việc sửa tập tin này hoàn toàn dễ dạng vì chúng được lưu dưới dạng XML. 1.2 TÍNH NĂNG MỚI TRONG ASP.NET 4.5 Microsoft phát hành ASP.NET vào ngày 19 tháng 11 năm 2007 cùng với Visual Stutio 2008. Đây là bước tiến hóa từ ASP.NET 2.0 tới ASP.NET 4.5. Nếu chúng ta đang sử dụng ASP.NET 2.0 để sử dụng ASP.NET 4.5 chỉ cần cài đặt thêm các tính năng mới của ASP.NET 4.5. Trong phần này ta sẽ giới thiệu một số tính năng mới trong ASP.NET 4.5
  13. HƯỚNG DẪN 11 Đọc và ghi bất đồng bộ các đối tượng HTTP Request và Response ASP.NET 4 giới thiếu khả năng đọc một thực thể HTTP request như là một stream bằng cách sử dụng phương thức HttpRequest.GetBufferlessInputStream. Phương thức này cung cấp khả năng truy xuất stream cho thực thể request, nhưng nó được thực thi đồng bộ, và như vậy nó sẽ làm nghẽn thread vì phải thực thi việc đọc stream. ASP.NET 4.5 hỗ trợ khả năng đọc stream bất đồng bộ trên thực thể HTTP request, và khả năng flush bất đồng bộ. ASP.NET 4.5 cũng giúp cho bạn có khả năng tăng gấp đôi buffer cho một thực thể HTTP request, điều đó giúp cho việc tích hợp dễ dàng với các các downstream HTTP handlers như là các trang .aspx và các ASP.NET MVC controllers. 1.2.1.1 Các cải tiến cho việc quản lý HttpRequest Stream được tham chiếu bởi HttpRequest.GetBufferlessInputStream trong ASP.NET 4.5 hỗ trợ các phương thức đọc đồng bộ và bất đồng bộ. Đối tượng Stream được trả về từ phương thức GetBufferlessInputStream nay đã cài đặt cho cả hai phương thức BeginRead và EndRead. Các phương thức bất đồng bộ của Stream giúp bạn đọc bất đồng bộ thực thể Request theo từng chunks (từng phần nhỏ), trong khi đó ASP.NET sẽ giải phóng thread hiện tại đối với mỗi vòng lặp của việc đọc bất đồng bộ. ASP.NET cũng thêm vào một phương thực mới cho việc đọc thực thể request theo cách đọc sử dụng bộ đệm là HttpRequest.GetBufferedInputStream. Phương thức nạp chồng mới này cũng giống với phương thức GetBufferlessInputStream, hỗ trợ các phương thức đọc đồng bộ lẫn bất đồng bộ. Tuy nhiên, khi GetBufferedInputStream đọc, nó sao chép tuyên các bytes của thực thể request vào trong bộ đệm nội vi của ASP.NET do đó các downstream modules và các handlers vẫn có thể truy xuất vào đối tượng request. Ví dụ, nếu một số mã upstream đang nằm trong đường ống (pipeline) đã đọc thực thể request sử dụng phương thức GetBufferedInputStream, bạn vẫn có thể sử dụng HttpRequest.Form hoặc HttpRequest.Files. Điều này giúp cho bạn có thể xử lý bất động bộ đến request (ví dụ như vừa streaming một tập tin kích thước lớn đến CSDL), nhưng mà vẫn tiếp tục chạy được các trang .aspx và controllers.
  14. 12 HƯỚNG DẪN 1.2.1.2 Ghi dữ liệu bất đồng bộ lên đối tượng response Gởi các response đến trình HTTP khách có thể làm tốn kém thời gian khi client ở quá xa hoặc có kết nối băng thông hẹp. Bình thường thì ASP.NET sẽ truyền các bytes trả về sau đó gọi lệnh gởi bộ đệm nói trên vào thời điểm kết thúc xử lý request. Nếu nội dung trả về (được buffer) là lớn (ví dụ như gởi về một tập tin lớn cho client), bạn phải lặp lại việc gọi HttpResponse.Fush để gởi về client và giữ mức sử dụng bộ nhớ nằm trong tầm kiểm soát. Tuy nhiên, Flush là một lời gọi đồng bộ, nên việc gọi đi gọi lại Flush sẽ tiêu tốn nhiều thời gian. ASP.NET 4.5 đã có thêm sự hỗ trợ cho việc ghi dữ liệu bất đồng bộ bằng các phương thức BeginFlush và EndFlush của đối tượng HttpResponse. Sử dụng các phương thức này sẽ giúp bạn tạo được các module bất đồng bộ và các hanlder bất động bộ mà chúng sẽ gởi dữ liệu liên tục về client mà không làm chậm các thread của hệ điều hành. Giữa các lời gọi BeginFlush và EndFlush, ASP.NET giải phóng thread hiện tại. Khi sđó nó sẽ giảm bớt lượng các thread cần phải chờ hỗ trợ các lượt tải về tốn nhiều thời gian. Hỗ trợ cho các các module và handler bất đồng bộ dạng await và task-based (Support for await and Task- Based Asynchronous Modules and Handlers) Nền tảng .NET 4 đã giới thiệu đến khái niệm lập trình bất đồng bộ gọi là task. Các task được đại diễn bởi kiểu dữ liệu Task và các kiểu liên quan có trong namespace System.Threading.Tasks. Nền tảng .NET 4.5 tiếp tục cải tiến và giúp cho việc làm việc với các đối tượng Task trở nên đơn giản hơn. Với .NET 4.5, trình biên dịch hỗ trợ hai từ khóa mới đó là await và async. Từ khóa await giúp xác định một đoạn mã lệnh phải chờ đợi bất đồng bộ đến khi một đoạn code khác thực thi xong. Còn từ khóa async thì lại là chỉ dẫn rằng bạn có thể sử dụng các phương thức có từ khóa đó như là các phương thức bất đồng bộ dạng task-based. Sự kết hợp giữa hai từ khóa await, async và đối tượng Task giúp cho bạn có thể dễ dàng viết mã bất đồng bộ trong .NET 4.5. ASP.NET 4.5 hỗ trợ bằng các APIs giúp cho bạn có thể viết các HTTP modules và các HTTP handlers bất đồng bộ sử dụng các cải tiến của trình biên dịch.
  15. HƯỚNG DẪN 13 1.2.2.1 Các module HTTP bất đồng bộ Giả sử bạn muốn thực hiện công việc bất đồng bộ với một phương thức trả về đối tượng Task. Mã ví dụ sau đây định một phương thức bất đồng bộ mà nó thực hiện một lời gọi bất đồng bộ để tải về trang nhà của Microsoft. Đó là tất cả những gì bạn cần viết và nền tảng .NET sẽ tự động quản lý call stack trong khi chờ đợi việc download thực hiện xong, cũng như phục hồi call stack khi việc download hoàn thành. Bây giờ giả như bạn muốn sử dụng phương thức bất đồng bộ trong một ASP.NET HTTP module. ASP.NET 4.5 có một phương thức trợ giúp (EventHandlerTaskAsyncHelper) và một kiểu dữ liệu delegate mới (TaskEventHandler) mà nhớ đó bạn có thể dễ dàng tích hợp các phương thức bất đồng bộ dạng task-based với mô thức lập trình bất động bộ được thực thi bởi ASP.NET pipeline. Ví dụ dưới đây cho thấy cách thực hiện: 1.2.2.2 Các Http handler bất đồng bộ Cách tiếp cận truyền thống để viết các handler bất đồng bộ trong ASP.NET chính là cài đặt interface IHttpAsyncHandler. ASP.NET 4.5 giới thiệu kiểu bất đồng bộ
  16. 14 HƯỚNG DẪN HttpTaskAsyncHandler mà bạn có thể kế thừa, và sẽ giúp việc xây dựng các handler bất đồng bộ dễ dàng hơn. Kiểu HttpTaskAsyncHandler là trừu tượng và yêu cầu bạn phải quá tải phương thức ProcessRequestAsync. ASP.NET sẽ chịu trách nhiệm về việc tích hợp dấu hiệu dạng Task-based được ProcessRequestAsync với mô hình lập trình bất đồng bộ cũ được sử dụng bởi ASP.NET pipeline. Ví dụ dưới đây chỉ dẫn cho bạn cách sử dụng Task và từ khóa await như là một phần của việc cài đặt một HTTP handler bất đồng bộ Các tính năng mới kiểm tra tính hợp lệ đối với Request ASP.NET mặc định thực hiện việc kiểm tra tính hợp lệ đối với request, nó sẽ kiểm tra các request để tìm các thẻ hoặc script trong các trường, header, cookies… Nếu như nó phát hiện được điều gì bất hợp lệ, ASP.NET sẽ ném ngoại lệ. Hành vi này là tuyến phòng ngừa đầu tiên ddooois với lối tấn công cross-site scripting attack. ASP.NET 4.5 giúp cho việc đọc các dữ liệu chưa được kiểm tra dễ dàng hơn. ASP.NET 4.5 cũng mặc định tích hợp thư viện AntiXSS. Các lập trình viên thường yêu cầu cho phép được tuyef chọn tắt việc kiểm tra hợp lệ đối với request trong các ứng dụng của họ. Ví dụ như, nếu ứng dụng của bạn là một diễn đàn, bạn sẽ muốn cho phép người dùng gởi lên các bài viết theo định dạng
  17. HƯỚNG DẪN 15 HTML nhưng vẫn đảm bảo rằng việc kiểm tra tính hợp lệ sẽ được thực hiện ở những nơi còn lại. ASP.NET 4.5 giới thiệu hai tính năng cho phép bạn dễ dàng làm việc với các dữ liệu nhập không được kiểm tra: làm chậm việc kiểm tra tính hợp lệ của request và truy xuất vào dữ liệu chưa được kiểm tra của request. 1.2.3.1 Làm chậm (“lazy”) việc kiểm tra tính hợp lệ của request Trong ASP.NET 4.5, tất cả các dữ liệu request đều phải được kiểm tra tính hợp lệ. Tuy nhiên bạn có thể cấu hình ứng dụng cho phép hoãn kiểm tra tính hợp lệ cho đến khi bạn truy xuất xong dữ liệu của request. Bạn có thể cấu hình ứng dụng để sử dụng kiểm tra hợp lệ chậm (deferred validation) trong Web.config bằng cách gán giá trị cho thuộc tính requestValidationMode trong thẻ httpRuntime là 4.5 như dưới đây: Khi requestValidationMode được quy định là 4.5, việc kiểm tra tính hợp lệ cho request chỉ thực hiện cho từng giá trị cụ thể khi và chỉ khi mã lệnh của bạn truy xuất giá trị đó. Ví dụ như khi bạn lấy giá trị Request.Form["forum_post"], chỉ có phần tử đó được kiểm tra tính hợp lệ mà thôi. Các phần tử khác trong tập hợp Form sẽ không được kiểm tra. Trong phiên bản trước của ASP.NET, kiểm tra hợp lệ cho request sẽ được thực hiện đối với cả tập hợp Form khi có bất kỳ phần tử nào của tập hợp Form được truy xuất. Tính năng mới này giúp cho các thành phần của ứng dụng chỉ khi truy xuất phần tử nó cần sẽ không kích hoạt việc kiểm tra tính hợp lệ dữ liệu của các phần tử khác. 1.2.3.2 Hỗ trợ có các request chưa được kiểm tra tính hợp lệ Kiểm tra hợp lệ dữ liệu cho request “trễ” thực ra chưa giải quyết được nhu cầu cần bỏ qua việc kiểm tra hợp lệ dữ liệu cho một phần tử nào đó của request. Lời gọi Request.Form[“forum_post”] vẫn kích hoạt việc kiểm tra hợp lệ cho giá trị của phần tử đó. Tuy nhiên, thực ra bạn vẫn cần đọc được phần tử này mà không kích hoạt việc kiểm tra tính hợp lệ, bởi vì bạn muốn chấp nhận mã đánh dấu được lưu trong trường đó.
  18. 16 HƯỚNG DẪN Để chấp nhận việc bỏ qua kiểm tra tính hợp lệ, ASP.NET 4.5 bây giờ đã hỗ trợ cho việc bỏ qua kiểm tra hợp lệ bằng cách cung cấp một thuộc tập hợp có tên là Unvalidated trong lớp HttpRequest. Chúng ta có thể sử dụng tập hợp này để truy xuất đến tất cả các giá trị thông dụ như Form, QueryString, Cookies, và Url. Sử dụng cùng với ví dụ trên, để có thể đọc dữ liệu chưa được kiểm tra hợp lệ, bạn cần phải cấu hình ứng dụng để sử dụng cơ chế kiểm tra tính hợp lệ của request mới: Bạn có thể sử dụng thuộc tính HttpRequest.Unvalidated để đọc các giá trị chưa kiểm tra hợp lệ của form: var s = context.Request.Unvalidated.Form["forum_post"]; Lưu ý về bảo mật: Mặc dù ASP.NET 4.5 cho phép bạn truy xuất vào dữ liệu chưa được kiểm tra tính hợp lệ của request, nhưng bạn vẫn cần phải tự mình kiểm tra đối với dữ liệu thô lấy từ request để đảm bảo bạn không gởi mã độc trở lại cho khách hàng. Thư viện Anti-XSS Bởi vì thư viện Microsoft AntiXSS được sử dụng rất phổ biến, ASP.NET 4.5 đã tích hợp tính năng chính của thư viện này (phiên bản 4.0) vào chính nó. Các kỹ thuật mã hóa được cài đặt bởi kiểu AntiXssEncoder trong namespace mới là System.Web.Security.AntiXss. Bạn có thể dụng kiểu AntiXssEncoder trực tiếp bằng cách gọi bất ký phương thức mã hóa tĩnh nào được cài đặt trong kiểu này. Tuy nhiên, phương thực tiếp cận dễ nhất đó là cấu hình ứng dụng ASP.NET để ứng dụng mặc định sử dụng AntiXssEncoder. Để làm được điều đó, bạn cần thêm thuộc tính sau vào tập tin Web.config: Dưới đây là các thành phần của thư viện AntiXSS được tích hợp vào ASP.NET 4.5:  HtmlEncode, HtmlFormUrlEncode, and HtmlAttributeEncode  XmlAttributeEncode and XmlEncode
  19. HƯỚNG DẪN 17  UrlEncode và UrlPathEncode  CssEncode Hỗ trợ cho giao thức WebSockets Giao thức WebSockets là một giao thức mạng chuẩn nhằm định nghĩa cách thiết lập các kết nối hai chiều thời gian thực giữa client và server thông qua giao thức HTTP. Microsoft đã làm việc với các chuẩn IETF và W3C để giúp định nghĩa giao thức này. Giao thức WebSocket được hỗ trợ bởi bất kỳ client nào (không chỉ là browsers). Giao thức WebSockets giúp cho việc gởi nhận dữ liệu trong thời gian dài giữa client và server dễ dàng hơn. Ví dụ, việc xây dựng một ứng dụng chat sẽ dễ dàng hơn nhiều bởi vì bạn có thể thiếp lập một kết nối “thời gian dài” giữa client và server mà không phải mất công giả lập các tính năng của một socker như trước đây nữa. ASP.NET 4.5 và IIS 8 bây giờ đã hỗ trợ WebSockets, cho phép các lập trình viên có thể sử dụng APIs để đọc và ghi bất đồng bộ chuỗi và dữ liệu nhị phân trên một đối tượng WebSockets. ASP.NET 4.5 đã có một namespace mới là System.Web.WebSockets chứa các kiểu dành cho việc lập trình với giao thức WebSockets. Trình duyệt sẽ thiết lập một kết nối WebSockets để tạo một đối tượng DOM là WebSocket mà đối tượng này trỏ đến một URL của ứng dụng ASP.NET, như dưới đây: socket = new WebSocket("ws://contoso.com/MyWebSocketApplication.ashx"); Bạn có thể tạo các endpoint trong ASP.NET bầng bất cứ module hoặc handler nào. Với ví dụ trên thì chúng ta sử dụng tập tin .ashx, bởi vì tập tin .ashx là cách để có thể thiết lập một hanlder nhanh chóng. Để áp dụng giao thức WebSockets, ứng dụng ASP.NET chấp nhận một request dạng WebSockets bằng cách xác định rằng request đó nên được nâng cấp từ một request dạng HTTP GET thành request dạng WebSockets. Xem ví dụ dưới: HttpContext.Current.AcceptWebSocketRequest(// WebSocket delegate ở đây) Phương thức AcceptWebSocketRequest chấp nhật tham số là một delegate bởi vì ASP.NET sẽ bung HTTP request và chuyển quyền điều khiển đến delegate đó. Cách
  20. 18 HƯỚNG DẪN tiếp cận này khá giống với cách bạn dùng System.Threading.Thread, ở đó bạn sẽ định nghĩa một thread-start delegate mà mọi công việc sẽ được thực hiện bên trong delegate đó. Sau khi ASP.NET và client đã hoàn thành xong việc thiết lập kết nối thông qua giao thức WebSockets, ASP.NET gọi delegate của bạn và ứng dụng WebSockets sẽ bắt đầu chạy. Mã lệnh dưới đây mih hoạt mã của một ứng dụng sử dụng tính năng hỗ trợ WebSockets của ASP.NET Từ khóa await và các thao tác dạng task-based hoàn toàn phù hợp để xây dựng các ứng dụng WebSockets. Mã lệnh dưới đây cho thấy một request dạng WebSockets chạy hoàn toàn bất đồng bộ bên trong Asp.NET. Ứng dụng này chờ đợi thông điệp một cách bất đồng bộ từ client bằng cách gọi phương thức socket.ReceiveAsync. Tương tự, bạn có thể gởi thông điệp bất đồng bộ đến client bằng cách gọi await socket.SendAsync. Ở trình duyệt, ứng dụng khách nhận được các thông điệp WebSockets ở hàm onmesssage. Để gởi một thông điệp từ trình duyệt, bạn có thể gọi phương thưng thức send của đối tượng DOM WebSocktet như dưới đây:
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2