1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

123 999 5
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 123
Dung lượng 3,06 MB

Nội dung

Tài liệu tham khảo công nghệ thông tin 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

Trang 1

BỘ MÔN TIN HỌC

CHUYÊN ĐỀ TỐT NGHIỆP

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

SINH VIÊN :

ĐẶNG TIẾN LỘC – A07138

GIÁO VIÊN HƯỚNG DẪN :

Ths ĐOÀN QUANG MINH

Trang 2

MVC Model View Controller Mô hình lập trình ba lớp Model, View, Controllerđược sử dụng trong nhiều framework lập trìnhweb trong đó có ASP.NET MVC, ZEND ,J2EE…

API Application

Programming Interface

Giao diện lập trình được sử dụng bởi một ứngdụng qua đó cho phép nó tương tác với ứngdụng khác

ACK ACKnowledgement Thừa nhận một trường xác thực trong gói tinhttp

URL Uniform Resource Locator

Mạng phân phối nội dung

SMTP Simple Mail Transfer Protocol

Giao thức gửi thư điện tử

SSL Secure Socket Layer Tầng bảo mật SocketIIS Internet Information

Máy chủ thông tin mạng

EML Electronic Mail Thư điện tử (đuôi của tệp thư điện tử)DOM Document Object

định nghĩa tập các đối tượng chuẩn cho tất cả tài liệu có cấu trúc

UI User Interface Giao diện người dùng

CPU Control Processing Unit

Bộ điều khiển xử lí trong máy tính

Trang 3

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ănghiệ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

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

Trang 4

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

Trang 5

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 95

1.1 Các lí do cho sự kết hợp giữa 2 công nghệ 95

1.2 Tại sao có thể thực hiện được sự kết hợp này 95

1.3 Các bước để kết hợp các trang WebForms vào ứng dụng ASP.NET MVC 95

CHƯƠNG 5: TRIỂN KHAI ỨNG DỤNG VÀ HƯỚNG PHÁT TRIỂN 103

1.1 Các bước triển khai 103

1.2 Triển khai Global Store Site 103

1.3 Cấu hình IIS 7.0 cho Framework MVC sử dụng Microsoft Web Platform Installer 104

1.4 Thêm Global Store site vào IIS 7.0 107

2.1 Hỗ trợ tìm kiếm sản phẩm mở rộng 109

2.2 Mở rộng chức năng tìm kiếm cửa hàng gần nhất 109

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 109

KẾT LUẬN 110

TÀI LIỆU THAM KHẢO 111

DANH MỤC HÌNH ẢNH 112

Trang 6

Trong chuyên đề tốt nghiệp này em thực hiện việc tìm hiểu ASP.NET MVC , môhình thương mại điện tử trực tuyến của các chuỗi siêu thị lớn trên thế giới như

http://www.bestbuy.com , http://www.walmart.com/ qua đó xây dựng hệ thốngthương mại trực tuyến trên nền tảng gồm các module:

 Module thành viên và hồ sơ - Đăng kí tài khoản

- Đăng nhập, đăng xuất- Quản lí hồ sơ

- Quản lí vai trò người dùng, xóa , tạo vai trò

- Quản lí người dùng, tìm kiếm người dùng theo tên – theo email , xóa ngườidùng, sửa đổi thông tin người dùng

 Moudle thương mại

- Duyệt toàn bộ các gian hàng trong siêu thị

- Xem một gian hàng với danh sách các mặt hàng có trong gian hàng- Xem chi tiết một sản phẩm trong gian hàng , đưa vào giỏ hàng.- Quản lí các gian hàng, tạo một gian hàng

- Quản lí các sản phẩm (chỉnh sửa thông tin sản phẩm, xóa sản phẩm), tạosản phẩm

- Quản lí các chọn lựa cách thức giao hàng (xóa, thêm cách thức giao hàng) - Quản lí các đơn đặt hàng (xem chi tiết đơn hàng)

 Mudule tin tức – bài báo - blog- Xem toàn bộ bài báo

- Xem theo đầu mục, chọn rss

- Xem chi tiết , viết lời bình và đánh giá bài báo- Quản lí các đầu mục, tạo đầu mục

- Quản lí các bài báo (chỉnh sửa, xóa), tạo bài báo mới

Trang 7

 Module chưng cầu ý kiến khách hàng

- Xem các chưng cầu - polls, cho ý kiến (vote)

- Quản lí các chưng cầu (chuyển chưng cầu sang trạng thái đã lấy đủ ý kiến archive, hiện hành, chỉnh sửa chưng cầu, xóa chưng cầu) , tạo chưng cầumới

- Module gửi thư từ hệ thống- Xem ,xóa các thư đã gửi- Tạo thư và gửi

 Module định vị cửa hàng siêu thị gần nhất

- Tìm các siêu thị trong khoảng cách nhất định- Tìm đường đi tới 1 siêu thị

- Thêm vị trí siêu thị mới vào hệ thống Module Forum

- Duyệt các diễn đàn.

- Xem các bài thảo luận, tham gia thảo luận , xác nhận thích hay không thíchbài thảo luận, tạo bài thảo luận

- Quản lí các diễn đàn (chỉnh sửa , xóa diễn đàn)

- Quản lí các bài thảo luận (approve, đóng , xóa bài thảo luận) Module quốc tế hóa

- Hiển thị các thông tin địa phương ứng với thông tin địa phương trong hồ sơngười dùng như tiền dùng ở địa phương, thời gian, cách viết con số của địaphương,…

 Module kiểm thử

- Kiểm thử phần bài báo, blog- Kiểm thử phần gửi thư

Trang 8

1 LÍ DO THỰC HIỆN ĐỀ TÀI1.1 Tổng quan về ASP.NET MVC

Không phải tự nhiên mà rất nhiều web programming framework phổ biến nhất hiệnnay kế thừa các nguyên tắc của MVC như Django, Ruby on Rails, CakePHP,Struts, … Sự thành công của việc kế thừa kiểu mẫu lập trình này cuối cùng cũngđã khiến Microsoft quyết định đưa các nghuyên tắc đó vào sử dụng trong NETFramework và rồi hình thành nên ASP.NET MVC đầu năm 2007 phiên bản 1.0 Kiểu mẫu lập trình các ứng dụng nền tảng Web này tuy rằng không phải là kiểumẫu lập trình tốt nhất hiện nay xong nó có những ưu điểm nhất định và được sửdụng khá phổ biến và đang tiếp tục được hỗ trợ phát triển của Micorosoft Chính vìnhững lí do này mà nó đáng được tìm hiểu để từ đó sử dụng một cách hiệu quả.

1.2 Tổng quan về ứng dụng thương mại siêu thị trực tuyến

Việc mua bán kinh doanh hiện nay đang ngày càng trở nên dễ dàng hơn với sự hỗtrợ của CNTT hiện tại có một số lượng rất lớn các website thương mại đã đượcxây dựng và sử dụng Việc này giúp đa dạng hóa các phương thức bán hàng vàvì vậy hàng hóa được tiêu thụ dễ dàng hơn Có rất nhiều ích lợi từ việc kinh doanhtrực tuyến có thể thấy được như:

Đối với khách hàng:

 Mua hàng ở bất kể đâu miễn là họ có máy tính kết nối mạng.

 Nhanh chóng tìm kiếm được mặt hàng cần mua chỉ qua vài click chuột. Không phải đối mặt với nhân viên bán hàng.

 …

Đối với doanh nghiệp:

 Có thêm được một kênh quảng bá sản phẩm hiệu quả mà chi phí thấp. Nắm bắt được thông tin phong phú về thị trường và đối tác.

 Thiết lập được mối quan hệ tốt với khách hàng và đối tác. Đa dạng hóa các kênh bán hàng của doanh nghiệp. ….

Hệ thống siêu thị trực tuyến là một ví dụ điển hình về thương mại điện tử nó cóđầy đủ các module mà một hệ thống thương mại điện tử cần có Trong chuyên đềtốt nghiệp của mình em sẽ xây dựng hệ thống bán hàng trực tuyến theo mô hìnhMVC dựa trên nền tảng công nghệ NET

Trang 9

2 SƠ LƯỢC VỀ YÊU CẦU KIẾN TRÚC CỦA HỆ THỐNG2.1 Yêu cầu đặt ra cho kiến trúc hệ thống

Xây dựng nên hệ thống siêu thị trực tuyến cấu thành từ các module riêng biệtđồng thời quản lí nội dung động như bài báo,diễn đàn, phiếu điều tra (polls) và gửithư từ hệ thống thì cần giải quyết các vấn đề chung đặt ra với mỗi module đó là:

Tách biệt mã lệnh truy cập CSDL với mã lệnh logic nghiệp vụ và mã lệnhcho giao diện để hệ thống có thể dễ dàng bảo trì và mở rộng

Cô lập kiến trúc truy cập CSDL để từ đó có thể hỗ trợ việc lưu trữ với cácCSDL quan hệ khác nhau như SQL , MySQL , Oracle, mà không phải thựchiện thay đổi nào với tầng đối tượng nghiệp vụ Ngược lại việc thay đổi tầngtrình diễn (giao diện người dùng) hay tầng đối tượng nghiệp vụ cũng khônglàm thay đổi các tầng còn lại – Tạo ra tính decoupling cho hệ thống.

Thiết kế kiến trúc đối tượng nghiệp vụ lấy từ tầng truy cập CSDL theo kiểuhướng đối tượng bằng cách ánh xạ cơ sở dữ liệu quan hệ vào các lớpOOP.

Hỗ trợ cơ chế caching với các đối tượng nghiệp vụ Điều này giúp làm giảmviệc sử dụng CPU, nguồn CSDL, băng thông mạng – network bandwidth vànhư vậy làm tăng hiệu năng chung của hệ thống.

Tạo tệp cấu hình cho các module để có thể dễ dàng thay đổi chúng.

2.2 Thiết kế kiến trúc hệ thống

Với các dự án ASP.NET web forms truyền thống ta sẽ không bao giờ thực sự táchriêng được phần giao diện người dùng với logic ứng dụng bởi vì NET cung cấpsẵn các điều khiển phía máy chủ (server side control) mà ta thường sử dụng bằngcách kéo thả vào các Web Form ví dụ như GridView Các control kiểu này giúpchúng ta thực hiện khá nhiều việc tuy nhiên lại thường làm cho mã lệnh xử lí logiccủa ứng dụng lẫn vào với mã lệnh giao diện Một ví dụ thường thấy đó là việc tạora logic để sắp xếp các GridView hay lọc dữ liệu ứng với một sự kiện nhấn chuột.Khi sử dụng những control như thế ta luôn cần có các tệp mã lệnh để xử lí logicđằng sau (code behind file) các view

Chúng ta có thể tự tạo trọn vẹn một ứng dụng có tính module tuy nhiên điều nàydẫn tới việc ta phải tự xây dựng framework cho ứng dụng của mình.

Với việc ra đời của framework asp.net mvc thì mọi thứ đã thay đổi hẳn không còncác tệp mã lệnh xử lí logic đằng sau các view giúp tách biệt hoàn toàn giữa giaodiện với logic nghiệp vụ của ứng dụng Với asp.net mvc framework ta có thể dễdàng, nhanh chóng phát triển kiến trúc ứng dụng theo hướng phân tầng (n-tierweb application)

Trang 10

2.2.1.Thiết kế kiến trúc phân tầng

Với ứng dụng siêu thị trực tuyến ta sẽ chia thành các tầng như sau:

Tầng lưu trữ dữ liệu: Nơi lưu trữ CSDL CSDL của ứng dụng là CSDL quan hệTầng truy cập CSDL (Data Access Layer – DAL): Mã lệnh để lấy dữ liệu , xử lí dữliệu thô được lưu trong tầng lưu trữ DL Nhiệm vụ của tầng này là đưa ra các truyxuất CSDL theo logic nghiệp vụ và có tính trực quan hơn cho ứng dụng Che dấucác chi tiết thâm nhập CSDL ở mức thấp tăng tính an toàn cho CSDL của hệthống.

Tầng nghiệp vụ (Business Logic Layer – BLL): Mã lệnh ở tầng này sẽ thực hiệncác nguyên tắc nghiệp vụ , tạo các đối tượng cụ thể thuộc miền nghiệp vụ nhằmthỏa mãn các yêu cầu của ứng dụng

Tầng Logic ứng dụng (Application Logic Layer): Mã lệnh thuộc tầng này sẽ xử lícác tương tác giữa tầng trình diễn (Presentation Layer) với tầng logic nghiệp vụTầng trình diễn (Presentation Layer – PL) : Là các đoạn mã lệnh tạo nên những gìmà người dùng thấy ở trên trình duyệt – nó có thể là các dữ liệu đã được địnhdạng, thực đơn duyệt hệ thống, …

Hình 1.1 – Kiến trúc ứng dụng

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

Ở ứng dụng này ta lựa chọn lưu trữ CSDL với SQL server 2008 SQL server 2008tuy nhiên trong thực tế có thể khách hàng lại muốn sử dụng Oracle server hay IBMDB2 server … vì nhiều lí do như họ muốn tích hợp ứng dụng của bạn vào mộtproject lớn hơn mà project lại dùng Oracle Server để lưu trữ DL nên tầng truy xuấtdữ liệu cần được thiết kế sao cho đủ linh hoạt để việc thay đổi diễn ra dễ dàng ,nhanh chóng.

Tầng truy xất dữ liệu là mã lệnh thực hiện truy vấn CSDL để lấy dữ liệu, cập nhật,chèn, hay xóa dữ liệu Đây là mã lệnh gần với CSDL nhất , sử dụng tất cả những

Trang 11

gì có trong CSDL từ giản đồ các bảng,các stored procdure … cho đến các trường.Mã lệnh truy xuất tới CSDL cụ thể phải được tách biệt với mã lệnh các trang webvì các lí do như:

 Người viết code cho phần giao diện và người viết code cho phần truy cậpCSDL có thể không phải là một Với những ứng dụng nền tảng web cỡ vừavà lớn thì thường có nhiều lập trình viên tham gia xây dựng Người xâydựng giao diện sẽ hầu như không quan tâm tới CSDL Tuy nhiên họ vẫncung cấp giao diện hiển thị thông tin từ CSDL bởi lẽ tất cả các chi tiết hiểnthị đã được gói gọn trong các đối tượng riêng biệt cung cấp việc truy vấnCSDL ở mức cao – trừu tượng hơn.

 Một vài truy vấn CSDL sẽ được sử dụng ở một số các trang của ứng dụng.Nếu như ta đặt trực tiếp truy vấn vào các trang này mà sau đó ta muốn thayđổi một câu lệnh truy vấn như thay đổi cách thức sắp xếp , hoặc thay đổicác trường dữ liệu ta sẽ phải xem lại toàn bộ code xem nơi nào sử dụngchúng và thực hiện thay đổi Nếu như ta đưa mã lệnh truy cập CSDL vàomột vài lớp trong tầng truy xuất CSDL ta sẽ chỉ phải thay đổi các file này màkhông cần quan tâm tới các trang web.

 Code truy vấn CSDL mà đặt trong các trang web sẽ làm khiến ta khó khăntrong việc thay đổi sang CSDL quan hệ khác

Với asp.net mvc framework việc tách biệt tầng truy xuất CSDL là gần như bắtbuộc Tất cả các đối tượng liên quan tới tầng truy xuất CSDL nên được đặt trongthư mục models

Để xử lí việc hỗ trợ lưu trữ dữ liệu linh động với các Database Server khác nhau tasẽ sử dụng kiểu mẫu thiết kế Provider Model cụ thể là thay vì việc viết trực tiếp cáclớp truy cập CSDL (DAL classes) đầu tiên ta sẽ viết lớp trừu tượng (abstract class)và giao diện công khai của các lớp đó (public interface) và cả các phương thức hỗtrợ nếu cần Mã lệnh thực sự dùng truy vấn CSDL sẽ nằm ở lớp kế thừa trực tiếptừ lớp trừu tượng và lớp này sẽ đưa ra các mã lệnh cụ thể cho các phương thứctrong interface của lớp trừu tượng Lớp trừu tượng được gọi là Provider và đây là

lí do vì sao Micorsoft gọi kiểu mẫu thiết kế này là Provider Model

Rõ ràng khi thay đổi Database Server ta chỉ việc thay đổi CSDL , thay đổi các lớpthứ 2 này là xong Hơn thế nữa với lớp trừu tượng ta biết rõ được phải xây dựnglớp thứ 2 như thế nào và chúng ta không hề phải thay đổi các module khác ngoạitrừ module DAL Trong trường hợp buộc phải thêm các lớp provider mới thì ta cóthể biến các lớp provider cũ thành virtual để từ đó cho phép các lớp provider mớicó các hàm quá tải (override) các hàm của các provider cũ.

Hình dưới đây minh họa mối quan hệ giữa các tầng giao diện, logic nghiệp vụ, truycập CSDL và lưu trữ CSDL

Trang 12

Hình 1.2 – Mối quan hệ giữa các tầng giao diện, logic nghiệp vụ, truy cậpCSDL và lưu trữ CSDL

Sử dụng LINQ ở tầng truy cập CSDL (DAL)

Với NET Framework 3.5 chúng ta được cung cấp một tính năng mới là LINQ(Language Intergrated Query) LINQ được thiết kế để cung cấp cách thực hiệntruy vấn trên bất kể kiểu collection nào trong NET Framework bao gồm mảng,dictionaries, lists, XML, và các CSDL,…

LINQ có những tính năng đáng để xem xét dù ta có thể đơn giản sử dụng typeddata sets hay các thực thể ta tạo ra để thực hiện việc xây dựng tầng truy vấnCSDL theo mong muốn như:

 Sử dụng các cấu trúc truy vấn giống với SQL trong mã lệnh NET hay xemđoạn code này:

SQL

select c.*

from Customer as c

Trang 13

 Với LINQ có thể sử dụng kiểu dữ liệu an toàn (type safety) và các truy vấnđa dạng hơn Hãy xem câu lệnh truy vấn xem mỗi khách hàng trả bao nhiêucho các đơn đặt hàng của họ trong năm 2008 bằng SQL và LINQ:

and o.OrderDate <= ‘12/31/2008’group by c.CustomerId, c.Name

var customers = from c in dataContext.Customers

join o in dataContext.Orders on c.CustomerId equals o.CustomerIdwhere c.OrderDate >= new Date(2008, 1, 1)

&& c.OrderDate <= new Date(2008, 12, 31)group o by new { c.CustomerId, c.Name } into gselect new {

CustomerId = c.CustomerId,CustomerName = c.Name,

TotalPaid = g.Sum(o => o.TotalPaid)};

Trong ví dụ với LINQ thì trường OrderDate có kiểu là System.DateTime Vì

vậy nếu ta so sánh nó với dữ liệu kiểu chuỗi, hay bất kể một đối tượng nàokhông phải kiểu DateTime thì trình biên dịch sẽ báo lỗi và cho biết chính xácvị trí lỗi xảy ra đây là một ích lợi khi sử dụng LINQ.

Ví dụ dưới đâu sẽ cho thấy với LINQ ta có các truy vấn tiện ích hơn so vớiSQL ví dụ như lấy một oder có ID = 2, lấy đối tượng OderInformation đổingày thêm vào rồi lưu oder này lại vào CSDL

var order = (from o in dataContext.Orderswhere o.OrderId == 2

select o).FirstOrDefault();

Trang 14

tương ứng Việc tạo model này hoàn toàn có thể thực hiện bằng cách kéothả các bảng cũng như store procedure vào phần designer Các model sẽđược tạo tự động Việc tạo model như vậy giúp xây dựng ứng dụng nhanhchóng tuy nhiên lại là hạn chế vì chỉ có thể sử dụng với SQL server.

2.2.3.Thiết kế tầng logic nghiệp vụ

Tầng truy cập CSDL được xây dựng với LINQ-to-SQL trả về các tập hợp của các lớp thực thể chứa các trường của dữ liệu từ bảng DL Tuy nhiên dữ liệu trả về củatầng này vẫn là dữ liệu thô dù chúng được chứa trong các lớp bởi vì chúng được sinh tự động Chúng chỉ là nơi chứa các dữ liệu có định kiểu mạnh được sử dụng để truyền dữ liệu giữa các tầng lưu trữ dữ liệu và tầng logic nghiệp vụ

Tầng nghiệp vụ logic sử dụng các dữ liệu này chuyển chúng tới tầng giao diện người dùng Ở tầng này có thể có thêm kiểm định logic, xây dựng các biểu thức tính toán dựa trên các thuộc tính, chuyển một số thuộc tính thành riêng tư (private)hay chỉ đọc (read-only) thêm các phương thức tĩnh, thực thể để xử lí việc xóa, chỉnh sửa, truy xuất dữ liệu Việc tạo các dữ liệu hướng đối tượng , định kiểu mạnh tạo ra sự trừu tượng hóa mạnh mẽ cô lập tầng lưu trữ CSDL cung cấp cho lập trình viên phát triển giao diện tập hợp các lớp đơn giản , xong hiệu quả khi sử dụng

Với asp.net mvc framework thì tầng BLL nằm gọn trong các điều khiển (controllers)và các lớp điều khiển bắt buộc phải được đặt trong thư mục controllers giúp tách hẳn tệp code behind ra khỏi views Các lớp này sử dụng các tập hợp (collections) xử lí dữ liệu thông qua chúng trả lại view tương ứng Với việc tạo tầng logic nghiệp vụ ở thư mục controllers trong ứng dụng net mvc thì ta có được một số íchlợi như:

 Tạo được các kiểm định bộ phận (unit testing ) cho ứng dụng bởi lẽ tấc cả các logic nghiệp vụ được đặt trong thư mục controllers hoặc các thực thể mà ta tạo ra Không có các trình điều khiển phía máy chủ và như vậy các kiểm định bộ phận không bị lỗi.

 Bảo mật dễ dàng hơn bởi lẽ tất cả các xử lí được đặt trong các lớp điều khiển ta không còn phải tách biệt các trang cần có cấp phép cao hơn và đưa ra lệnh chứng thực cấp phép với thư mục chứa các trang này. Ta có thể trả về nhiều views từ một hành động trong controller.Với vấn đề bảo mật ta chỉ cần xử lí đơn giản như trong đoạn code sau:[Authorize (Roles = “Admin”)]

public ActionResult EditContent (int id, ){

//logic dùng chỉnh sửa nội dungreturn View();

}

Trang 15

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

Với những ứng dụng nền tảng web có những dữ liệu ít thay đổi và thường được yêu cầu bởi nhiều người dùng và trong hệ thống siêu thị trực tuyến các dữ liệu như vậy có thể kể tới như danh sách các đầu mục bài báo, đầu mục sản phẩm và các sản phẩm…

Để có thể tăng hiệu ứng cho hệ thống với những dữ liệu kiểu này ta có thể tạo vùng nhớ đệm cho chúng và giữ vùng nhớ đệm này ở bộ nhớ trong những khoảngthời gian xác định Asp.net framework cũng khá mạnh trong việc giúp chúng ta xâydựng , quản lí vùng nhớ đệm ở trong các lớp điều khiển Hãy xem một ví dụ sau cho thấy việc tạo vùng nhớ đệm và duy trì nó trong 60 giây

[OutputCache (Duration = 60)]

public ActionResult SomeControllerMethod(){

//logic nghiệp vụ}

Trong trường hợp hệ thống được truy cập bởi một lượng lớn người dùng mỗi ngày(vài ngàn đến vài chục ngàn) ta có thể tính tới việc sử dụng các mạng phân phối nội dung (Content Delivery Networks) đây là mạng phát tán của các máy chủ (distributed network of servers) giúp ta giải quyết vấn đền quá tải truy cập nội dungcủa hệ thống, giúp người dùng truy cập nội dung hệ thống nhanh hơn Các mạng này thực hiện công việc phôn phối nội dung thông qua mạng của các máy chủ DNS hướng yêu cầu của người dùng tới một máy chủ có sẵn nội dung người dùngcần và gần người này nhất

Nội dung cần phân phối có thể là các file ảnh, javascript, css, tài liệu, phim ảnh , âm thanh … với hệ thống siêu thị trực tuyến này thì các tệp nội dung được đặt trong thư mục Content việc đưa tất cả các file nội dung vào thư mục này sẽ rất phùhợp với cơ chế làm việc của CDN ở chỗ để CDN hoạt động ta cần phải cài phần mềm tương ứng vào máy chủ web chứa hệ thống và cấu hình để phần mềm này biết cụ thể vị trí của nội dung cần phân phối việc đưa nội dung cần phân phối vào một thư mục sẽ dễ dàng cho việc cấu hình và quá trình lookup của phần mềm này.Về mặt giá cả thì giải pháp sử dụng CDN sẽ rẻ hơn nhiều so với việc thuê đường truyền có băng thông lớn hơn.

2.2.5.Tầng trình diễn (UI hay Views)

Tầng trình diễn tương ứng với các trang Web Forms duy chỉ có điều là không có các tệp mã lệnh đằng sau mỗi web form Ta đã biết các tệp mã lệnh đó được thay thế bằng những lớp điều khiển (Controller classes) Tuy nhiên còn các server control (được cung cấp bởi Microsoft , hoặc các hãng thứ 3) vẫn thường được sử dụng trong các asp.net web forms trước kia thì sao? Trên thực tế những control kiểu này không còn cần thiết trong các web forms nữa.

ASP.NET MVC framework đem đến rất nhiều lựa chọn thay thế cho các control đó mà trong hệ thống siêu thị trực tuyến sử dụng Framework này có một tập các

Trang 16

tiêu đề của textbox này được ánh xạ bởi từ điển ViewData <label for =”title”> Title </label><br/>

<%= Html.Textbox(“Title”, ViewData.Model.Title)%>

Khi đoạn code trên được chuyển tới trình duyệt thì nó được chuyển thành đoạn code HTML tương ứng sau:

<label for =”title”> Title </label><br/>

<input id = “Title” name = “Title” type = “text” vale=”Chief Technology Officer”/>Đoạn code này đơn giản chỉ có thẻ input mà hoàn toàn không có liên quan tới thuộc tính runat Đối với trình duyệt input này được viết hoàn toàn bằng HTML điều này giúp tối ưu hóa khả năng tìm kiếm hệ thống của các hệ thống tìm kiếm như google hay bing giúp các khách hàng chưa biết tới hệ thống có thể tìm đến hệthống thông qua cỗ máy tìm kiếm

Ở tầng này của hệ thống siêu thị trực tuyến có sử dụng javascript ở để xử lí các sự kiện không đồng bộ phía người dùng Cụ thể ta sẽ sử dụng JQuery – đây là javascript framework ổn định , ra đời cách đây vài năm , có các tài liệu hỗ trợ đầy đủ , dễ sử dụng

Trang 17

CHƯƠNG 2: TÌM HIỂU ASP.NET MVC VÀ LINQ1 TỔNG QUAN VỀ ASP.NET MVC

1.1 ASP.NET MVC là gì?

1.1.1.Mô hình MVC cơ bản

Tham khảo asp.net mvc của microsoft

MVC viết tắt của các chữ cái đầu của Models, Views, Controllers MVC chia giaodiện UI thành 3 phần tương ứng: đầu vào của controller là các điều khiển thôngqua HTTP request, model chứa các miền logic, view là những thứ được sinh ra trảvề cho trình duyệt.

Hình 2.1 – Mô hình MVC cơ bản

Lợi ích của việc dùng phương pháp MVC là sự phân đoạn rõ ràng giữa models,views, controllers bên trong ứng dụng Cấu trúc sạch sẽ giúp cho việc kiểm tra lỗiứng dụng trở nên dễ dàng hơn.

Trang 18

 Tách rõ ràng các mối liên quan, mở khả năng test TDD (test driven developer) Có thể test unit trong ứng dụng mà không cần phải chạy

Controllers cùng với tiến trình của ASP.NET và có thể dùng bất kỳ một unit testing framework nào như NUnit, MBUnit, MS Test, v.v…

 Có khả năng mở rộng, mọi thứ trong MVC được thiết kế cho phép dễ dàng thay thế/tùy biến ( ví dụ: có thể lựa chọn sử dụng engine view riêng, routing policy, parameter serialization, v.v…)

 Bao gồm một ánh xạ URL mạnh mẽ cho phép xây dựng ứng dụng với những URL sạch, các URL không cần cs phần mở rộng ( ví dụ: có thể ánh xạ địa chỉ /Products/Edit/4 để thực hiện hành động “Edit” của lớp điều khiển ProductControllers hoặc ánh xạ địa chỉ /Blog/SomeTopic để thực hiện hành động “Display Topic” của lớp điều khiển BlogEngineController )

 ASP.NET MVC Framework cũng hỗ trợ những file ASP.NET

như ASPX ASCX và Master, đánh dấu các tập tin này như một “view template” ( có thể dễ dàng dùng các tính năng của ASP.NET như lồng các trang Master, <%= %> snippets, mô tả server controls, template, data-binding, localization, v.v… ) Tuy nhiên sẽ không còn postback và interactiveback server và thay vào đó là interactive end-user tới một Controller class ( không còn viewstate, page lifecycle )

 ASP.NET MVC Framework hỗ trợ đầy đủ các tính năng bảo mật của

ASP.NET như forms/windows authenticate, URL authorization, membership/roles, output và data caching, session/profile state, configuration system, provider architecture v.v…

1.2 Sự khác biệt so với Web Form

ASP.NET WebForm sử dụng ViewState để quản lý, các trang ASP.NET đều có lifecycle, postback và dùng các web controls, các events để thực hiện các hành động cho UI khi có sự tương tác với người dùng nên hầu hết ASP.NET WebForm xử lý chậm

ASP.NET MVC Framework chia ra thành 3 phần: Models, Views, Controllers Mọi tương tác của người dùng với Views sẽ thực hiện hành động trong Controllers, không còn postback, không còn lifecycle hay events nữa

Việc kiểm tra ( test ), gỡ lỗi ( debug ) với ASP.NET đều phải chạy tất cả các tiến trình của ASP.NET và mọi sự thay đổi ID của bất kỳ controls nào cũng ảnh hưởng đến ứng dụng Đối với ASP.NET MVC Framework thì việc có thể sử dụng các unit test có thể kiểm định khá dễ dàng hoạt động của các controller

Trang 19

Kiến trúc chương trình Kiến trúc mô hìnhWebForrm  Bussiness Database

Kiến trúc sử dụng việcphân chia chương trìnhthành Controllers, Models,Views

Cú pháp chương trình Sử dụng cú pháp củawebform Tất cả các sựkiện và controls đều doserver quản lí

Các sự kiện được điềukhiển bởi Controllers, cáccontrols không do serverquản lí

Truy cập dữ liệu Sử dụng hầu hết các côngcụ truy cập dữ liệu trongứng dụng

Phần lớn dùng LINQ toSQL class để tạo mô hìnhtruy cập đối tượng

Debug Debug chương trình phảithực hiện tất cả bao gồmcác lớp truy cập dữ liệu ,sự hiển thị, điều khiển cáccontrols

Debug có thể sử dụngcác unit test kiểm tra cácphương thức trongcontroller

Tốc độ phân tải Tốc độ phân tải chậm trongkhi trang có quá nhiềucontrols vì ViewState quálớn

Phân tải nhanh hơn dokhông phải quản lýViewState để quản lý cáccontrol trong trang

Tương tác với javascript Tương tác với javascriptkhó khăn vì các controls bịquản lí bởi server

Tương tác với javascriptdễ dàng vì các đối tượngkhông do server quản lídẫn tới điều khiển khôngkhó khăn

URL address Cấu trúc địa chỉ URL códạng <filename>.aspx?&<các tham số>

Cấu trúc địa chỉ URL rànhmạch theo dạngControllers /Action/ Id

Trang 20

1.3 Quá trình thực thi một ứng dụng nền web ASP.NET MVC

Một yêu cầu gửi tới ứng dụng nền tảng web viết bằng ASP.NET MVC đầu tiên sẽ

đi qua đối tượng UrlRoutingModule, đây là một module của HTTP Module này sẽ

phân tích yêu cầu và thực thi việc chọn lựa định tuyến Nó sẽ chọn đối tượng route

đầu tiên thích hợp với yêu cầu hiện thời (Đối tượng route là lớp thực thi BaseUrl ,là một thể hiện cụ thể của lớp Route) Nếu không có định tuyến nào thích hợp đối tượng UrlRoutingModule sẽ không thực hiện việc định tuyến mà trả yêu cầu đó

về cho IIS hay ASP.NET xử lí

Từ đối tượng Route được chọn lựa, đối tượng UrlRoutingModule nhận lấy đối tượng IRouteHandler tương ứng với đối tượng Route Cụ thể trong một ứng dụngASP.NET MVC thì IRouteHandler sẽ là một thể hiện của MvcRouteHandler Thể hiện này sẽ tạo ra một đối tượng IHttpHandler và truyền nó tới đối tượng

IHttpContext Theo mặc định,thể hiện IHttpContext của MVC là đối tượng MvcHandler Đối tượng này sẽ chọn ra controller đáp ứng yêu cầu gửi tới ứng

dụng

Chú ý: Khi một ứng dụng nền Web viết bằng ASP.NET MVC chạy trên IIS 7.0 , phần mở rộng tên file là không cần thiết đối vớp dự án ứng dụng đó Tuy nhiên nến chạy trên IIS 6.0 , IIS 6.0 yêu cầu bạn phải chỉ ra cho ASP.NET ISAPI DLL nhận các file có phần mở rộng mvc

Module nói trên và IIS là các điểm đầu vào đối với ASP.NET MVC framework Chúng thực hiện những việc sau:

 Chọn ra một controller tương ứng xử lí yêu cầu trong một ứng dụng MVC nền web.

 Có được một thể hiện cụ thể của controller đó. Gọi phương thức Execute của controller này.

Bảng sau sẽ liệt kê các giai đoạn thực thi của một dự án nền Web ASP.NET MVC

Nhận yêu cầuđầu tiên củaứng dụng

Trong file Global.asax, các đối tượng Route được thêm vào đốitượng RouteTable

Thực thi việcđịnh tuyến

Module UrlRoutingTable sử dụng đối tượng Route đầu tiên thíchhợp trong tập RouteTable để tạo đối tượng RouteData Đốitượng này sau đó lại tạo ra đối tượng RequestContext(IHttpContext).

Tạo ra trìnhxử lí yêu cầu

Đối tượng MvcRouteHandler tạo ra một thể hiện của lớp

Trang 21

ứng dụng MvcHandler và truyền vào nó thể hiện RequestContext

Tạo racontroller

Các đối tượng MvcHandler sử dụng thể hiện của

RequestContext để xách định đối tượng IcontrollerFactory qua

đó tạo ra thể hiện controllerThực thi

Thể hiện MvcHandler gọi phương thức Execute của controller

Triệu gọiaction

Hầu hết các controllers đều kế thừa từ lớp Controller cơ bản Đốivới các controller như thế đối tượng ControllerActionInvoker đi

kèm với controller đó sẽ xác định phương thức action của lớpcontroller đó để gọi, và rồi gọi phương thức đó.

Thực thi kếtquả

Một phương thức action cụ thể mà nhận được dữ liệu từ ngườidùng sẽ chuẩn bị dữ liệu trả về thích hợp Những kiểu dữ liệu trả

về được xây dựng sẵn có thể được trả về gồm có: ViewResult

(Cái thể hiện một View và là dữ liệu thường được trả về nhất),

LINQ to SQL hỗ trợ đầy đủ transaction, view và các stored procedure (SP) Nócũng cung cấp một cách dễ dàng để thêm khả năng kiểm tra tính hợp lệ của dữliệu và các quy tắc vào trong mô hình dữ liệu của bạn

2.2 Mô hình hóa CSDL dùng Linq to SQL

Visual Studio “Orcas” đã tích hợp thêm một trình thiết kế LINQ to SQL như một công cụ dễ dàng cho việc mô hình hóa một cách trực quan các CSDL dùng LINQ to SQL Bài viết sau sẽ đi sâu hơn vào cách dùng trình thiết kế này (bạn cũng có thể xem đoạn video này để xem cách tôi tạo một mô hình LINQ to SQL)

Bằng cách dùng trình thiết kế LINQ to SQL, tôi có thể dễ dàng tạo một mô hìnhcho CSDL mẫu “Northwind” giống như dưới đây:

Trang 22

Hình 2.2 – Mô hình LINQ to SQL

Mô hình LINQ to SQL ở trên định nghĩa bốn lớp thực thể: Product, Category, Ordervà OrderDetail Các thuộc tính của mỗi lớp ánh xạ vào các cột của bảng tương ứng trong CSDL Mỗi instance của một lớp biểu diễn một dòng trong bảng dữ liệu Các mũi tên giữa bốn lớp thực thể trên biểu diễn quan hệ giữa các thực thể khác nhau, chúng được tạo ra dựa trên các mối quan hệ primary-key/foreign-key trong CSDL Hướng của mũi tên chỉ ra mối quan hệ là một – một hay một – nhiều Các thuộc tính tương ứng sẽ được thêm vào các lớp thực thể trong các trường hợp này

Lấy ví dụ, lớp Category ở trên có một mối quan hệ một nhiều với lớp Product, điềunày có nghĩa nó sẽ có một thuộc tính “Categories” là một tập hợp các đối tượng Product trong Category này Lớp Product cũng sẽ có một thuộc tính “Category” chỉ đến đối tượng ”Category” chứa Product này bên trong

Bảng các phương thức bên tay phải bên trong trình thiết kế LINQ to SQL ở trênchứa một danh sách các SP để tương tác với mô hình dữ liệu của chúng ta Trongví dụ trên tôi đã thêm một thủ tục có tên “GetProductsByCategory” Nó nhận vàomột categoryID và trả về một chuỗi các Product Chúng ta sẽ xem bằng cách nàocó thể gọi được thủ tục này trong một đoạn code bên dưới.

Trang 23

2.3 Tìm hiểu lớp DataContext

Khi ta bấm nút “Save” bên trong màn hình thiết kế LINQ to SQL, Visual Studio sẽ lưu các lớp NET biểu diễn các thực thể và quan hệ bên trong CSDL mà chúng ta vừa mô hình hóa

Cứ mỗi một file LINQ to SQL chúng ta thêm vào solution, một lớp DataContext sẽ được tạo ra, nó sẽ được dùng khi cần truy vấn hay cập nhật lại các thay đổi Lớp DataContext được tạo sẽ có các thuộc tính để biểu diễn mối bảng được mô hình hóa từ CSDL, cũng như các phương thức cho mỗi SP mà chúng ta đã thêm vào Lấy ví dụ, dưới đây là lớp NorthwindDataContext được sinh ra dựa trên mô hìnhchúng ta tạo ra ở trên:

Trang 24

Hình 2.4 – Hình minh họa lấy sản phẩm từ CSDL với LINQCập nhật một sản phẩm trong CSDL:

Đoạn lệnh dưới đây cho thấy cách lấy một sản phẩm , cập ạnhật li giá tiền và lưulại CSDL

Hình 2.5 – Hình minh họa cập nhật sản phẩm từ CSDL với LINQChèn thêm một phân loại mới và 2 sản phẩm vào CSDL:

Đoạn mã dưới đây biểu diễn cách tạo một phân loại mới, và tạo hai sản phẩmmới , đưa chúng vào trong phân loại đã tạo rồi đưa vào CSDL

Chú ý rằng ta không cần phải tự quản lý các mối quan hệ primary key/foreign key,thay vào đó, chỉ đơn giản thêm các đối tượng Product vào tập hợp Products củađối tượng category, và rồi thêm đối tượng category vào tập hợp Categories củaDataContext, LINQ to SQL sẽ biết cách thiết lập các giá trị primary key/foreign keymột cách thích hợp.

Trang 25

Hình 2.6 – Chèn sản phẩm mới vào CSDLXóa các sản phẩm:

Đoạn mã sau sẽ biểu diễn cách xóa tất cả các sản phẩm Toy khỏi CSDL:

Hình 2.7 – Xóa một sản phẩmGọi một thủ tục:

Đoạn mã dưới đây biểu diễn cách lấy các thực thể Product mà không dùng cúpháp của LINQ, mà gọi đến thủ tục “GetProductsByCategory” chúng ta đã thêmvào trước đây Nhớ rằng một khi đã lấy về kết quả, ta có thể cập nhật/xóa và sauđó gọi db.SubmitChanges() để cập nhật các thay đổi trở lại CSDL.

Hình 2.8 – Gọi một thủ tục

Lấy các sản phẩm và phân trang:

Đoạn mã dưới đây biểu diễn cách phân trang trên server như một phần của câutruy vấn LINQ Bằng cách dùng các toán tử Skip() và Take(), chúng ta sẽ chỉ trả về10 dòng từ CSDL – bắt đầu từ dòng 200.

Trang 26

Hình 2.9 – Lấy các sản phẩm và phân trang

2.5 Tổng kết

LINQ to SQL cung cấp một cách hay, rõ ràng để mô hình hóa lớp dữ liệu trongứng dụng của bạn Một khi đã định nghĩa mô hinh dữ liệu, bạn có thể dễ dàng thựchiện các câu truy vấn cũng như cập nhật, xóa, sửa dữ liệu một cách hiệu quả.

Trang 27

1 ĐẶC TẢ CÁC CHỨC NĂNG HỆ THỐNG1.1 Thiết kế hệ thống

Tham khảo và mô phỏng lại hầu hết các chức năng của các hệ thống như

Trang 28

trừ việc này ra thì chúng độc lập với nhau.

1.1.2.Mối quan hệ giữa các module

Tất cả các module của hệ thống là độc lập với nhau ngoại trừ việc chúng sử dụngmodule thành viên và hồ sơ cho việc xác thực vai trò người dùng (authenticate) vàcấp phép (authorize) sử dụng chức năng cụ thể của một module ứng với vai tròđó

Việc tách biệt các module như vậy giúp hệ thống linh hoạt hơn khi nâng cấp, haycó sửa đổi nhỏ.

1.2 Đặc tả sơ lược các module

1.2.1.Module hồ sơ và thành viên

Module này với người dùng là khách hàng thì họ có thể sử dụng để tạo tài khoản, đăng nhập , đăng xuất , quản lí hồ sơ còn đối với người quản trị hệ thống thì họ còn dùng vào việc quản lí vai trò người dùng, xóa, tạo vai trò, quản lí người dùng

1.2.2.Module lấy ý kiến khách hàng

Với module lấy ý kiến khách hàng với vai trò admin người dùng có thể tạo các câu hỏi để lấy ý kiến khách hàng qua đó nắm bắt được các thông tin cần thiết để phát triển việc kinh doanh của công ty, hay phát triển hệ thống để phục vụ khách hàng tốt hơn.

Người dùng là khách hàng có thể đóng góp ý kiến của mình để được phục vụ tốt hơn.

1.2.3.Module thương mại

Sử dụng module thương mại người dùng là khách hàng có thể xem , chọn mua sản phẩm, thanh toán qua paypal.

Đối với người dùng có vai trò là quản lí siêu thị (store keeper) – người quản lí sẽ quản lí gian hàng mà họ tạo ra như quản lí sản phẩm , quản lí đơn đặt hàng

1.2.4.Module gửi thư

Khi sử dụng module này người dùng là khách hàng có thể đăng kí nhận thư của hệ thống thông qua mục nhận thư trong hồ sơ.

Còn với người dùng có vai trò admin thì họ còn có thể tạo thư và gửi thư tới toàn bộ các thành viên có đăng kí nhận thư từ hệ thống

Trang 29

1.2.6.Module tìm kiếm siêu thị

Người dùng có thể sử dụng module này để tìm kiếm các siêu thị gần nơi mình ở theo khoảng cách và tìm đường đi đến một siêu thị nào đó.

Với người dùng có vai trò là admin thì còn có thêm chức năng thêm vị trí siêu thị mới vào hệ thống.

1.2.7.Module bài báo, tin tức, và blog

Người dùng sử dụng module này có thể xem toàn bộ các bài báo, xem theo đầu mục, xem chi tiết bài báo , viết lời bịnh và đánh giá

Người dùng với vai trò là editor có thêm các chức năng như quản lí các đầu mục báo, tạo đầu mục mới , xóa đầu mục đang có trong hệ thống Quản lí các bài báo (chỉnh sửa, xóa), tạo bài báo mới

1.2.8.Module quốc tế hóa

Module này cho người dùng biết thông tin địa phương của người dùng qua thông tin ở hồ sơ đăng kí như thời gian, tiền dùng tại địa phương (chẳng hạn như ở Mĩ làUSD, ở Việt nam là VND)

1.2.9.Module kiểm thử

Ở module này chỉ kiểm thử với hai module khác trong hệ thống là module bài báo ,tin tức, blog và module gửi thư.

Trang 30

uc User's membership and profile Membership and Profile Management

+ Change Password+ Create Role+ Delete Role+ Delete User+ Edit User+ Forgot Password+ Login

+ Logout

+ Manage Profile+ Manage Role+ Manage User+ Register Account

+ Administrator+ Anonymous User+ Registered User+ User

2 MODULE HỒ SƠ NGƯỜI DÙNG VÀ THÀNH VIÊN2.1 Tổng quan về module

Module sẽ sử dụng built-in ASP.NET 2.0 membership system (hệ thống quản lí thành viên xây dựng sẵn cho ASP.NET 2.0) cung cấp bởi Microsoft cho phép người dùng (user) thực hiện các chức năng gồm có đăng kí tài khoản, đăng nhập ,thay đổi mật khẩu, lấy lại mật khẩu, nhập thông tin hồ sơ , cho phép nhà quản trị hệ thống (admin) đăng nhập vào hệ thống, quản lí quyền, quản lí người dùng (trong đó có xem toàn bộ người dùng trong hệ thống, tìm người dùng và xóa người dùng, thay đổi vai trò người dùng…)

Trước khi lưu trữ mật khẩu người dùng vào CSDL để bảo mật tất cả các mật khẩu sẽ được thay đổi thông qua hàm băm

Hình 3.2 – Sơ đồ tổng quan người dùng và các chức năng của module

Ghi chú: Module này được sử dụng bởi hầu hết các module khác như module cộng đồng, module tin tức bài báo, hay module đánh giá và cho điểm các luồng thảo luận trong diễn đàn,

Trang 31

uc Membership and Profile Management

Delete Role

Forgot Password

Edit UserAnonymous User

(from Actors)

Registered User

(from Actors)

Manage Role2.2 Sơ đồ chức năng

Hình 3.3 – Sơ đồ tổng quan chức năng của module theo mô hình UC

2.3 Các bảng DL của module

Sau khi tạo CSDL GlobalStore với SQL Server Management Studio , chạy file aspnet_regsql trong thư mục C:\Windows\Microsoft.NET\Framework\v2.0.50727 để tạo các bảng dành cho module thành viên và hồ sơ mà ASP.NET phiên bản 2.0đã cung cấp sẵn

Ngoài ra ta xây dựng thêm bảng language để dùng cho việc tạo mục ngôn ngữ trong hồ sơ người dùng như sau:

Trang 32

Hình 3.4 Bảng Langugage

2.3.2.Cấu hình trong web.config cho membership, role và profile:

Mục membership:

<membership> <providers>

<add name=AspNetSqlMembershipProvider"

type=System.Web.Security.SqlMembershipProvider,System.Web, Version=2.0.0.0,

Qua nội dung phần config có thể thấy ta dùng ASPNETSqlMembershipProvider phiên bản 2.0 Mật khẩu trước khi lưu xuống CSDL được thay đổi thông qua hàm băm passwordFormat=Hashed",…

Mục Role:

<roleManager enabled=true"

<add connectionStringName=GlobalStoreConnectionString"applicationName=GlobalStore"name=AspNetSqlRoleProvider"type=System.Web.Security.SqlRoleProvider,System.Web,

PublicKeyToken=b03f5f7f11d50a3a"/></providers> </roleManager>

Mục Profile:

ASP.NET cung cấp một cơ chế có sẵn để quản lí hồ sơ người dùng Ta chỉ cần khai báo các thông tin cần thiết lưu trong hồ sơ Khi ứng dụng chạy thông tin thuộctính của hồ sơ sẽ được thêm vào lớp Page

<properties>

<add name=Subscription"type=String"/><add name=Language"type=String"/>

<add name=ShoppingCart"type=GlobalStore.Models.ShoppingCart"

serializeAs=Binary"allowAnonymous=true"/><group name=PersonalInformation"

<add name=FirstName"type=String"/><add name=LastName"type=String"/><add name=Gender"type=String"/><add name=BirthDate"type=DateTime"/>

Trang 33

<add name=Occupation"type=String"/><add name=Website"type=String"/></group>

<group name=ContactInformation"

<add name=Street"type=String"/><add name=City"type=String"/><add name=State"type=String"/><add name=ZipCode"type=String"/><add name=Country"type=String"/></group>

</properties></profile>

2.4 Models

2.4.1.Lớp UserInformation

Hệ thống sẽ có một số trang mà người dùng sẽ sử dụng liên quan với việc đăng nhập và quản lí tài khoản của họ Để truyền dữ liệu mà không phải tạo một số lượng lớn biến cho mỗi phương trức hành động chúng ta tự tạo lớp

 Country. Gender. Language. Occupation. Subscription.

Trang 35

CreateRole Admin string newRoleDeleteRole Admin string id

EditUser Admin string id

EditUser_OnPost Admin string id, bool approved

2.6 Views

Module này tạo thành từ nhiều view trong đó có những views được sử dụng bởi người dùng cuối và những views được dùng để hỗ trợ việc quản trị bảo mật của module Dưới đây là thể hiện cụ thể của các views trong module này:

Liên kết tới trang login được hiển thị trên cùng phía bên phải ngay sau mục tóm lược việc mua hàng – shopping summary của mỗi trang bất kể khi nào mà người dùng là nạc danh Sau khi người dùng đăng nhập vào hệ thống thì liên kết này sẽ được ẩn đi thay vào đó là các chức năng mà người dùng đã đăng nhập có đó là đăng xuất – logout, quản lí hồ sơ – manage profile, và thay đổi mật khẩu – change password

View đăng kí cho phép người dùng mới đăng kí tài khoản với hệ thống Trong quá trình đăng kí người dùng mới sẽ tạo hồ sơ với các thông tin : FirstName (string) , LastName (string) , Gender (string) , BirthDate (datetime), Occupation (sring) , và website (string) Nhóm thông tin về địa chỉ trong hồ sơ có các thuộc tính phụ trợ sau: Street, PostCode, City, State và Country tất cả đều có kiểu string Nhóm cuối cùng về Preferences có các thuộc tính Cultrure và Newsletter

View quên mật khẩu cho phép người dùng thay đổi mật khẩu bằng việc trả lời một câu hỏi bảo mật sau khi đã điền đúng tên người dùng vào ô người dùng Sau khi trả lời đúng câu hỏi bảo mật lúc này người dùng sẽ được phép tạo mật khẩu mới và dùng tài khoản của mình với mật khẩu mới này

Trang quản lí hồ sơ người dùng sẽ chỉ truy cập được bởi người dùng Nó cho phép người dùng thay đổi các thông tin trên hồ sơ mà họ thiết lập từ lúc họ tạo tài khoản.

Các trang để quản lí người dùng dành cho người quản trị như view dành cho quảnlí người dùng ManageUser view giúp nhà quản trị tìm kiếm người dùng hoặc bằng tên hoặc bằng địa chỉ , view dành cho việc chỉnh sửa – edit user , sẽ hiển thị các chi tiế thêm về người dùng và cho phép nhà quản trị để hoặc không để tài khoản đó hoạt động , hay thay đổi cập nhật vai trò người dùng

Ngoài ra còn có view dành cho quản lí vai trò – ManageRole được sử dụng để tạo , xóa các vai trò trong hệ thống.

Trang 36

Tên trangĐặc tảĐường dẫn ảo

ChangePassword.aspx Trang này dùng thay đổi

mật khẩu của người dùng

đổi quyền người dùng, ngăn hoạt động của tài khoản

ForgotPassword.aspx Trong trường hợp người

dùng quên mật khẩu user/forgotpassword

trị tạo / xóa các vai trò áp dụng cho hệ thống

trị xem danh sách người dùng, qua đó xóa người dùng

dùng nạc danh trở thành người dùng đã đăng kí bằng việc điền thông tin người dùng và đăng kí

UserProfile.aspx Trang hồ sơ dành cho người dùng thay đổi thôngtin hồ sơ của mình

2.7 Sử dụng Javascript

Trong view content của trang quản lí người dùng (ManageUser.aspx) việc xóa người dùng sẽ được sử lí bằng kĩ thuật Ajax với đoạn mã javascript nằm trong tệpmanage-user.js với nguồn /content/scripts/manage-user.js.

Đoạn mã lệnh xóa người dùng sẽ được sử dụng để triệu gọi phương thức xóa người dùng DeleteUser trong UserController Nội dung của đoạn lệnh:

$(".delete-user-button").click(function() { var userId = $(this).attr("meta:id"); $.post(

"/User/DeleteUser",{ id: userId },

function(data) {

$("#user-" + data.object.id).remove();},

return false;});

Trang 37

Tương tự vậy thì trong view content của trang quản lí vai trò (ManageRole.aspx) chức năng xóa vai trò cũng được xử lí bằng kĩ thuật này với đoạn mã xóa nằm trong tệp manage-role.js nguồn /content/scripts/manage-role.js.

2.8 Cấu hình định tuyến

Sử dụng định tuyến mặc địnhroutes.MapRoute(

if (FormsAuthentication.CookiesSupported) {

catch (Exception) { /* decryption failed */ }

} } else

{

throw new HttpException("Cookieless Forms

Trang 38

3 MODULE THƯƠNG MẠI3.1 Tổng quan về module

Chuỗi các siêu thị của công ty Golbal Store Pte đều có chung cấu trúc về các gianhàng như thiết bị âm thanh – Audio, đồ cho ô tô và thiết bị định vị - Car and GPS, máy tính – Computers , điện thoại cố định và đồ văn phòng – Mobilephones and Office, âm nhạc, phim và sách truyện – Music , Movies and Books Tuy nhiên có một số gian hàng trống tạo không gian mở cho người dùng thuê Khách hàng khi thuê gian hàng trống phải đăng kí tài khoản , những khách hàng này có toàn quyền quản lí gian hàng của mình

Khách hàng khi mua hàng trực tuyến với Global Store Pte họ sẽ có thể duyệt các gian hàng của siêu thị - xem danh sách các gian hàng Danh sách các gian hàng sẽ có tên gian hàng và đặc tả về gian hàng

Khi khách hàng chọn xem một gian hàng - xem danh sách các sản phầm có trong một gian hàng cụ thể Danh sách các sản phẩm với mỗi sản phẩm sẽ có kèm theothông tin vắn tắt về sản phẩm (tên sản phẩm, thông tin vắn tắt về sản phẩm, giá bán, giá bán giảm giá nếu có,số lượng sản phẩm còn trong cửa hàng) ,nút Add To Cart cho phép người dùng chọn đưa sản phẩm vào giỏ hàng và một liên kết cho phép xem chi tiết sản phẩm , hình ảnh sản phẩm thường là nhỏ hơn so với hình ảnh trong mục xem chi tiết.

Khi khách hàng chọn xem chi tiết sản phẩm thì sẽ được chuyển đến view dành choxem chi tiết sản phẩm Trên view này người dùng sẽ thấy được thông tin chi tiết sản phẩm như tên sản phẩm , số hiệu sản phẩm, hình ảnh sản phẩm to hơn nếu có, thông tin chi tiết về sản phẩm nếu có, giá bán, giá bán đã có khuyến mãi giảm giá nếu có, số lượng hàng có trong kho, ô chọn số lượng mua (khách hàng hoàn toàn có thể chọn mua với số lượng mong muốn vì siêu thị có thể điều động hàng), cuối cùng là nút Add to Cart

Nếu người dùng chọn mua sản phẩm thì sẽ thấy được một hoạt cảnh (animation) dạng hình ảnh sản phẩm bay vào giỏ hàng (fly-into-cart) Ở đây là sản phẩm sẽ bay vào vị trí có thông tin tóm tắt mua hàng (shopping summary) các thông tin vắn tắt mua hàng sẽ được cập nhật đó là số tiền phải trả và số mặt hàng trong giỏ hàng (items) Trong shopping summary cũng có liên kết check out đưa người dùngtới thông tin mua sắm chi tiết (view shoppingCart) để qua đó người dùng có thể kiểm tra chi tiết hơn những gì mình đã mua.

Khách hàng khi chọn check out ở mục shopping summary sẽ được chuyển tới view thông tin chi tiết mua sắm của khác hàng.

với người dùng (nhân viên , quản trị - store room worker , admin) thực hiện việc nhận lệnh đặt mua, quản lí hàng trong kho (xem, thêm, xóa , cập nhật sách), với hệ thống bên ngoài (Paypal system, shipping system) giúp thực hiện việc thanh toán trực tuyến và giao hàng tới người mua.

Trang 39

uc ECommerce

View Shopping BasketUser

(from Actors)

Add To Shopping Basket

Remov e Item from Shopping Basket

CheckoutView All Products in

Login not required

View Prouduct's Detail

Edit Product

Manage ShippingAdd New Shipping

Manage Oder

Manage ProductDelete Product

View Products by Category

Create Prouct

View Oders detail

Delete Shipping Option

Login required User can be either admin or store worker

Manage DepartmentsRemov e Category

Edit Category

Paypal Use CasesFilling Shipping

DetailsShipping Use Cases

Người dùng với vai trò quản lí siêu thị - Store Keeper khi đăng nhập vào hệ thống có thể quản lí gian hàng mà mình tạo ra như thêm mới các sản phẩm vào gian hàng, xóa sản phẩm của gian hàng, …

đăng nhập vào hệ thống tránh trường hợp đôi khi người dùng không muốn mất thời gian đăng kí tài khoản

3.2 Sơ đồ chức năng

Hình 3.7 Sơ đồ chức năng theo mô hình UC của module thương mại

3.3 Tìm hiểu , sử dụng Paypal cho chức năng thanh toán (check

Trang 40

bán trực tuyến và các doanh nghiệp và 1 loại tài khoản dùng tiền ảo và dành chocác nhà phát triển ứng dụng để thử nghiệm ứng dụng của mình Ở đây ta quantâm tới loại hình tài khoản thứ tư : Sandbox Account vì ứng dụng chỉ ở dạng thửnghiệm.

3.3.1.Tạo tài khoản ảo cho mục đích kiểm thử

Sandbox Account: Là tài khoản có thể ở dạng dùng cho doanh nghiệp , hoặc chongười buôn bán trực tuyến hay cho cá nhân tuy nhiên lại chỉ được tạo ra và sửdụng được trong môi trường thử nghiệm và dĩ nhiên chỉ dùng cho mục đích thửnghiệm mà thôi Để kiểm nghiệm chỉ cần 2 tài khoản : 1 doanh nghiệp , 1 cá nhânlà đủ Trước khi tạo 2 tài khoản này ta cần tạo tài khoản dành cho nhà phát triểnứng dụng (Dùng Paypal cho website thương mại của mình) sau đó với tài khoảnnày có thể tạo bao nhiêu tài khoản Sandbox tùy theo ý muốn Tạo tài khoản dànhcho lập trình viên tại địa chỉ sau: https://developer.paypal.com/

Sau đó tạo 2 tài khoản Sandbox dành cho người mua và bán như hình vẽ sau

Hình 3.8 – Các tài khoản kiểm thử với sandbox

Như vậy là ta đã có tài khoản để thực hiện các giao dịch ảo cho mục đích kiểm thửvới website thương mại của mình.

Ngày đăng: 23/11/2012, 13:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w