Chuyên đề Tìm hiểu và xây dựng ứng dụng Web siêu thị trực tuyến với ASP.NET MVC
MỤC LỤC
GIỚI THIỆU CHUNG . . . . 1
CHƯƠNG 1: MỞ ĐẦU . . . . 3
1.1. Tổng quan về ASP.NET MVC. . . 3
1.2. Tổng quan về ứng dụng thương mại siêu thị trực tuyến . . 3
2.1. Yêu cầu đặt ra cho kiến trúc hệ thống . . 4
2.2. Thiết kế kiến trúc hệ thống . . . 4
2.2.1. Thiết kế kiến trúc phân tầng. 5
2.2.2. Lựa chọn lưu trữ dữ liệu và thiết kế tầng truy xuất dữ liệu . 5
2.2.3. Thiết kế tầng logic nghiệp vụ . . . 9
2.2.4. Xây dựng vùng nhớ đệm - caching , sử dụng mạng phân phối nội dung tăng
hiệu năng của hệ thống . . . 10
2.2.5. Tầng trình diễn (UI hay Views) . . 10
CHƯƠNG 2: TÌM HIỂU ASP.NET MVC VÀ LINQ . 12
1.1. ASP.NET MVC là gì? . . . 12
1.1.1. Mô hình MVC cơ bản . 12
1.1.2. Một vài đặc tính của ASP.NET MVC . . 12
1.2. Sự khác biệt so với Web Form . . . 13
1.3. Quá trình thực thi một ứng dụng nền web ASP.NET MVC . 15
2.1. Linq to SQL là gì? . . . 16
2.2. Mô hình hóa CSDL dùng Linq to SQL . . 16
2.3. Tìm hiểu lớp DataContext . 18
2.4. Các ví dụ Linq to SQL . . . 18
2.5. Tổng kết . . . 21
CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ ỨNG DỤNG . . 22
1.1. Thiết kế hệ thống . 22
1.1.1. Các module của hệ thống . . . 22
1.1.2. Mối quan hệ giữa các module . . . 23
1.2. Đặc tả sơ lược các module . 23
1.2.1. Module hồ sơ và thành viên . 23
1.2.2. Module lấy ý kiến khách hàng . 23
1.2.3. Module thương mại . . . 23
1.2.4. Module gửi thư . . . 23
1.2.5. Module diễn đàn . . . 23
1.2.6. Module tìm kiếm siêu thị . . . 24
1.2.7. Module bài báo, tin tức, và blog . . 24
1.2.8. Module quốc tế hóa . . . 24
1.2.9. Module kiểm thử . . . 24
2.1. Tổng quan về module . . . 25
2.2. Sơ đồ chức năng . . . 26
2.3. Các bảng DL của module. . . 26
2.3.1. Tạo bảng DL . . . 26
2.3.2. Cấu hình trong web.config cho membership, role và profile: . 27
2.4. Models . . . . 28
2.4.1. Lớp UserInformation . . . 28
2.4.2. Lớp ProfileInformation . . . 28
2.5. Controllers. . . . 29
2.6. Views . . . . 30
2.7. Sử dụng Javascript . . . 31
2.8. Cấu hình định tuyến. . . 32
2.9. Xử lí xác thực người dùng . 32
3.1. Tổng quan về module . . . 33
3.2. Sơ đồ chức năng . . . 34
3.3. Tìm hiểu , sử dụng Paypal cho chức năng thanh toán (check out). 34
3.3.1. Tạo tài khoản ảo cho mục đích kiểm thử . . 35
3.3.2. Quá trình thanh toán với Paypal từ website thương mại . 35
3.4. Các bảng dữ liệu của module . 37
3.5. Lớp thiết lập cấu hình cho module th ương mại . . 37
3.6. Model . . . . 38
3.7. Controller . . . . 39
3.8. View. . . . 40
3.9. Sử dụng JavaScript . . . 42
3.10. Cấu hình định tuyến . . . 45
4.1. Tổng quan về module . . . 47
4.2. Các vấn đề cần quan tâm khi xây dựng module:. 47
4.3. Sơ đồ chức năng . . . 50
4.4. Các bảng dữ liệu . . . 50
4.5. Thiết kế lớp cấu hình cho module . . . 51
4.6. Model . . . . 51
4.7. Controller . . . . 52
4.8. View. . . . 52
4.9. Cấu hình định tuyến. . . 53
5.1. Tổng quan về module . . . 54
5.2. Sơ đồ chức năng . . . 54
5.3. Các bảng dữ liệu . . . 55
5.4. Thiết kế lớp cấu hình cho module . . . 56
5.5. Model . . . . 56
5.6. Controller . . . . 57
5.7. View. . . . 58
5.8. Sử dụng javascript . . . 58
5.9. Cấu hình định tuyến. . . 63
6.1. Tổng quan về module . . . 65
6.2. Sơ đồ chức năng . . . 65
6.3. Các bảng dữ liệu . . . 66
6.4. Xây dựng lớp ForumsElement cho thiết lập cấu hình module . 66
6.5. Model . . . . 66
6.6. Controller . . . . 67
6.7. View. . . . 68
6.8. Sử dụng javascript . . . 69
6.9. Cấu hình định tuyến. . . 73
6.10. Cấu hình trong tệp web.config . . . 74
7.1. Tổng quan về module . . . 75
7.2. Sơ đồ chức năng . . . 75
7.3. Các bảng dữ liệu . . . 76
7.4. Xây dựng lớp ArticleElement cho thiết lập cấu hình của module . 76
7.5. Model . . . . 77
7.6. Controller . . . . 78
7.7. View. . . . 79
7.8. Sử dụng javascript . . . 80
7.9. Cấu hình định tuyến. . . 86
8.1. Tổng quan về module . . . 90
8.2. Xây dựng module . . . 90
8.2.1. Các Service hỗ trợ quốc tế hóa trong Framework của Microsoft . 90
8.2.2. Xây dựng các tệp tài nguyên . . . 91
8.2.3. Controller của module . . . 93
8.2.4. View tương ứng của module . . . 93
CHƯƠNG 4: SỬ DỤNG WEB FORMS TRONG ỨNG DỤNG ASP.NET MVC . 97
1.1. Các lí do cho sự kết hợp giữa 2 công nghệ . . 97
1.2. Tại sao có thể thực hiện được sự kết hợp này . . 97
1.3. Các bước để kết hợp các trang WebForms vào ứng dụng ASP.NET MVC . 97
2.1. Tổng quan về module . . . 98
2.2. Sơ đồ chức năng . . . 98
2.3. Phân tích cách xây dựng chức năng . . 98
2.4. Bảng CSDL . . . . 99
2.5. Các lớp hỗ trợ trong module . . . 100
2.6. View. . . . 102
2.7. Thêm định tuyến cho các trang view của module . . 103
2.8. Vấn đề bảo mật . . . 104
CHƯƠNG 5: TRIỂN KHAI ỨNG DỤNG VÀ HƯỚNG PHÁT TRIỂN . 106
1.1. Các bước triển khai. . . 106
1.2. Triển khai Global Store Site . . . 106
1.3. Cấu hình IIS 7.0 cho Framework MVC sử dụng Microsoft Web Platform
Installer . . . . 107
1.4. Thêm Global Store site vào IIS 7.0 . 110
2.1. Hỗ trợ tìm kiếm sản phẩm mở rộng . . 112
2.2. Mở rộng chức năng tìm kiếm cửa hàng gần nhất . . 112
2.3. Xây dựng module báo cáo tình hình bán hàng của siêu thị kết xuất ra các tệp
định dạng Execel , Pdf . . . 112
KẾT LUẬN . . . . 113
TÀI LIỆU THAM KHẢO . . . 114
DANH MỤC HÌNH ẢNH . . . 115
nerate outbound URL when "virtual Path" matches this entry string path = ((WebFormsRouteHandler)this.RouteHandler).VirtualPath; if ((string)values["VirtualPath"] != path) return null; else { // var valuesExceptVirtualPath = new RouteValueDictionary (values); valuesExceptVirtualPath.Remove("virtualPath"); TIÊU ĐỀ CHƯƠNG 3 104 return base.GetVirtualPath(requestContext , valuesExceptVirtualPath); } } private class WebFormsRouteHandler : IRouteHandler { public string VirtualPath { get; set; } //Compiles the ASPX file if needed and instantiates the web form public IHttpHandler GetHttpHandler(RequestContext requestContext) { return (IHttpHandler)BuildManager.CreateInstanceFromVirtualPath(VirtualPath, typeof(IHttpHandler)); } } } Ở đây ta đã sử dụng tới lớp BuildManager để định vị, dịch và tạo thể hiện của các trang webforms. Với lớp này ta có thể tạo ngay định tuyến cho các tệp StoreLocator.aspx và AddStoreLocation.aspx trong thư mục WebForms và thêm các định tuyến này vào bảng định tuyến: #region Locator routes.Add(new WebFormsRoute("Locator/Index", "~/WebForms/StoreLocator.aspx")); routes.Add(new WebFormsRoute("Locator/AddStore", "~/WebForms/AddStoreLocation.aspx")); #endregion Ghi chú: Đến đây ta đã hoàn tất việc kết hợp các trang webforms vào dự án asp.net mvc 2.8. Vấn đề bảo mật Một vấn đề ở đây là chúng ta cần thêm luật xác thực cho định tuyến Urls mới tạo để bảo vệ các trang khỏi kiểu truy cập trực tiếp sử dụng định tuyến đó: TIÊU ĐỀ CHƯƠNG 3 105 106 CHƯƠNG 5: TRIỂN KHAI ỨNG DỤNG VÀ HƯỚNG PHÁT TRIỂN 1. TRIỂN KHAI ỨNG DỤNG 1.1. Các bước triển khai Công việc triển khai được chia làm 2 bước: Triển khai cơ sở dữ liệu và triển khai gobal store site. Về phần CSDL do IIS hỗ SQL server express cho nên CSDL này sẽ được gắn với ứng dụng GlobalStore khi ta triển khai ứng dụng này. Ở đây GlobalStore site chỉ sử dụng như là một site nhỏ nên ta chỉ cần dùng SQL server express để chứa CSDL. 1.2. Triển khai Global Store Site Ta sẽ thực hiện triển khai Global Store Site với chức năng Public từ Visual Studio như hình dưới đây sau khi chạy Visual Studio với vai trò administrator: 107 Hình 5.1 – Triển khai Global Store Site 1.3. Cấu hình IIS 7.0 cho Framework MVC sử dụng Microsoft Web Platform Installer Công cụ cài đặt Web Platform này là một công cụ mới của Microsoft hỗ trợ cài đặt trọn bộ Web Platform của Microsoft. Sau khi cài công cụ này khởi động nó ta sẽ thấy trên màn hình : Hình 5.2 – Màn hình chọn lựa Paltform để cài đặt 108 Ta phải đảm bảo rằng .NET framework và ASP.NET MVC mới nhất được cài đặt bằng cách nhấn vào link Customize mục Framworks and Runtimes như hình dưới đây nếu đã có dấu tích chìm ứng với các mục cần cài thì tức là chúng đã được cài đặt vào máy của ta. Hình 5.3 – Màn hình kiêm tra các cài đặt của .NET Framework và ASP.NET MVC 109 Kiểm tra xem đã cài SQL Server express 2008 chưa bằng việc chọn liên kết Customize ở mục Database nếu như có dấu tích chìm ở phần SQL Server Express 2008 ở màn hình mới mở ra thì tức là SQL server express 2008 đã được cài đặt. Hình 5.4 – Màn hình kiểm tra việc cài đặt SQL server express 2008 Ghi chú: Ở đây ta đã cài đặt mọi thứ nên không phải cài đặt thêm gì. 110 1.4. Thêm Global Store site vào IIS 7.0 Chạy máy chủ quản lí thông tin Internet của Microsoft – IIS 7.0 như trong hình vẽ Hình 5.5 – IIS Manager 111 Nhấn vào node của máy chủ rồi nhấn chuột phải chọn Add Web Site ta sẽ thấy màn hình như sau Hình 5.6 – Add Web Site Dialog Ở đây sẽ cần một số các thiết lập như đặt tên cho site, gán Host header … 112 2. Hướng phát triển ứng dụng Do thời gian và phạm vi làm chuyên đề tốt nghiệp cũng như hiểu biết còn hạn chế nên em đã chỉ có thể đa phần là áp dụng những kĩ thuật cơ bản trong lập trình ứng dụng nền tảng web sử dụng công nghệ .NET MVC và ASP.NET của Microsft. Trên thực tế hệ thống còn có thể mở rộng theo một số hướng như sau để trở nên hữu ích và hiệu quả hơn. 2.1. Hỗ trợ tìm kiếm sản phẩm mở rộng Với một hệ thống lớn như Global Store việc xây dựng chức năng tìm kiếm sản phẩm mở rộng là cần thiết giúp khách hàng tiết kiệm được thời gian tìm kiếm cũng như khiến cho hệ thống trở nên hữu ích hơn. 2.2. Mở rộng chức năng tìm kiếm cửa hàng gần nhất Việc tìm kiếm cửa hàng gần nhất là một tiện ích khá thú vị của hệ thống tuy nhiên mục tiêu cần hướng tới là trong trường hợp khách hàng có lựa chọn sản phẩm vào giỏ hàng thì hệ thống cần thiết phải thông báo cho khách hàng biết sản phẩm mà khách hàng muốn mua đó có hay không có ở các siêu thị mà họ định tới . Ngoài ra cũng cần có các thông tin bổ trợ về siêu thị như giờ mở cửa , giờ đóng cửa ,… 2.3. Xây dựng module báo cáo tình hình bán hàng của siêu thị kết xuất ra các tệp định dạng Execel , Pdf Đây là một module khá cần thiết cho một ứng dụng kiểu như siêu thị trực tuyến , ông chủ của Global Store Pte luôn có nhu cầu nắm bắt các thông tin bán hàng của từng siêu thị . Để xây dựng được module này ở mức cao như yêu cầu thực tế của những site như www.bestbuy.com hay www.walmart.com không phải là điều dễ dàng xong xây dựng để mô phỏng thì không khó và là cần thiết. 113 KẾT LUẬN Sau khi thực hiện xong chuyên đề tốt nghiệp xây dựng hệ thống siêu thị trực tuyến em đã tìm hiểu được một số công nghệ xây dựng ứng dụng nền tảng web của Microsoft: - ASP.NET MVC - ASP.NET Tìm hiểu và ứng dụng cách kết hợp 2 công nghệ xây dựng ứng dụng web của Microsoft là ASP.NET MVC và ASP.NET Tìm hiểu và sử dụng các webservices sử dụng trong chức năng thanh toán với Paypal, hay chức năng hiển thị bản đồ Google của module định vị cửa hàng gần nhất. Tìm hiểu và sử dụng AJAX cho các hành động phía Client, kĩ thuật xây dựng bộ nhớ đệm,… 114 TÀI LIỆU THAM KHẢO Tiếng Anh: Về chức năng tham khảo các trang , . ScottGu (5/2007) , Using LINQ to SQL , xem trên blog của ScottGu ( Troy Mageniss (2010), LINQ to Object using C# 4.0, Chapter 3,4 ASP.NET MVC, các bài từ cơ bản đến nâng cao về framework asp.net mvc trên trang dành cho .NET MVC của microsoft ( Steven Sanderson (2009) , Pro ASP.NET MVC framework , p540 tới p546 – Internationlization , p555 tới p576 commbination of ASP.NET and ASP.NET MVC technology in one application. Bear Bibfault, (11/2008), JQuery in action, Chapter 8 Talk to the server with Ajax p217 tới p266. Google developers, Google map API, xem ở ( . Paypal developers, Paypal API , xem ở (https://cms.paypal.com/us/cgi- bin/?cmd=_render-content&content_ID=developer/howto_api_reference ) 115 DANH MỤC HÌNH ẢNH Hình 1.1 – Kiến trúc ứng dụng – Trang 5 Hình 1.2 - Mối quan hệ giữa các tầng giao diện, logic nghiệp vụ, truy cập CSDL và lưu trữ CSDL – Trang 7 Hình 2.1 – Mô hình MVC cơ bản – Trang 12 Hình 2.2 – Mô hình LINQ to SQL – Trang 17 Hình 2.3 – Mô hình NorthwindDataContext – Trang 19 Hình 2.4 – Hình minh họa lấy sản phẩm từ CSDL với LINQ - Trang 19 Hình 2.5 – Hình minh họa cập nhật sản phẩm từ CSDL với LINQ – Trang 19 Hình 2.6 – Chèn sản phẩm mới vào CSDL – Trang 19 Hình 2.7 – Xóa một sản phẩm – Trang 20 Hình 2.8 – Gọi một thủ tục – Trang 20 Hình 2.9 – Lấy các sản phẩm và phân trang – Trang 21 Hình 3.1 – Các module của hệ thống siêu thị trực tuyến – Trang 22 Hình 3.2 – Sơ đồ tổng quan người dùng và các chức năng của module – Trang 25 Hình 3.3 – Sơ đồ tổng quan chức năng của module theo mô hình UC – Trang 26 Hình 3.4 Bảng Langugage – Trang 26 Hình 3.5 Sơ đồ lớp UserInformation – Trang 28 Hình 3.6 Sơ đồ lớp ProfileInformation – Trang 29 Hình 3.7 Sơ đồ chức năng theo mô hình UC của module thương mại – Trang 34 Hình 3.8 – Các tài khoản kiểm thử với sandbox – Trang 35 Hình 3.8 Sơ đồ quan hệ các bảng dữ liệu trong module thương mại – Trang 37 Hình 3.9 – Sơ đồ các lớp thực thể LINQ-to-SQL của module – Trang 38 Hình 3.10 – Các lớp xây dựng thêm hỗ trợ cho module – Trang 39 Hình 3.11 – Sơ đồ chức năng của module - Trang 50 Hình 3.12 – Bảng Newsletters – Trang 50 Hình 3.13 – Sơ đồ Model Newsletter – Trang 52 Hình 3.14 – Sơ đồ chức năng của module lấy ý kiến người dùng – Trang 54 DANH MỤC HÌNH ẢNH 116 Hình 3.15 – Sơ đồ mối quan hệ giữa 2 bảng DL của module lấy ý kiến người dùng – Trang 55 Hình 3.16 – Sơ đồ thiết kế bảng PollOptions – Trang 55 Hình 3.17 – Sơ đồ thiết kế bảng Polls – Trang 56 Hình 3.18 – Sơ đồ lớp PollOption và Poll – Trang 57 Hình 3.19 – Sơ đồ lớp PollQueries – Trang 57 Hình 3.20 – Sơ đồ chức năng module Forum – Trang 65 Hình 3.21 – Các bảng dữ liệu của module forum – Trang 66 Hình 3.22 – Sơ đồ các lớp thực thể LINQ-to-SQL Post, Forum , Vote – Trang 67 Hình 3.23 – Sơ đồ lớp ForumQueries – Trang 67 Hình 3.24 – Sơ đồ chức năng của module bài báo, tin tức , và blog – Trang 75 Hình 3.25 – Sơ đồ bảng Categories, Comments, Articles và quan hệ của chúng – Trang 76 Hình 3.26 – Sơ đồ các lớp thực thể Article, Comment, Category – Trang 77 Hình 3.27 – Sơ đồ các lớp mở rộng ArticlesQueries, Article, ArticleCollectionWrapper - Trang 78 Hình 3.28 – Tệp Message.resx – Trang 91 Hình 3.29 – Tệp Message.vn-VN.resx – Trang 91 Hình 3.30 – Tệp Message.it-IT.resx – Trang 92 Hình 3.31 – Tệp TestLocalization.resx – Trang 92 Hình 3.32 – Tệp TestLocalization.vn-VN.resx – Trang 92 Hình 3.33 – Tệp TestLocalization.it-IT.resx – Trang 92 Hình 4.1 – Sơ đồ chức năng của module Store Locator - Trang 96 Hình 4.2 – Bảng Locations – Trang 99 Hình 4.3 – Tệp LocationsData.xsd – Trang 102 Hình 5.1 – Triển khai Global Store Site – Trang 105 Hình 5.2 – Màn hình chọn lựa Paltform để cài đặt – Trang 106 DANH MỤC HÌNH ẢNH 117 Hình 5.3 – Màn hình kiêm tra các cài đặt của .NET Framework và ASP.NET MVC – Trang 107 Hình 5.4 – Màn hình kiểm tra việc cài đặt SQL server express 2008 – Trang 108 Hình 5.5 – IIS Manager – Trang 109 Hình 5.6 – Add Web Site Dialog – Trang 110
File đính kèm:
- Chuyên đề Tìm hiểu và xây dựng ứng dụng Web siêu thị trực tuyến với ASP.NET MVC.pdf