Giới thiệu dự án
Thương mại điện tử (TMĐT) tại Việt Nam đang duy trì tốc độ tăng trưởng ấn tượng từ 20% đến 25% mỗi năm theo báo cáo của Hiệp hội Thương mại điện tử Việt Nam (VECOM). Trong đó, ngành hàng phụ kiện thời trang cao cấp, đặc biệt là đồng hồ đeo tay và phụ kiện dây da, chiếm tỷ trọng giao dịch trực tuyến ngày càng lớn nhờ tính chuẩn hóa cao của sản phẩm. Tuy nhiên, các doanh nghiệp và chuỗi cửa hàng bán lẻ truyền thống vẫn đối mặt với rào cản nghiêm trọng trong việc chuyển đổi số: hệ thống quản lý thủ công rời rạc, không đồng bộ được dữ liệu tồn kho theo thời gian thực, giao diện hiển thị thiếu trực quan và tốc độ phản hồi trang chậm (>3.5 giây), dẫn đến tỷ lệ bỏ rơi giỏ hàng (cart abandonment rate) lên tới 68.8%.
Đề tài "Thiết kế website bán đồng hồ và phụ kiện bằng công nghệ ASP.NET MVC" được nghiên cứu và phát triển bởi sinh viên Trần Thị Hải Hậu (Khoa Công nghệ Thông tin, Trường Đại học Công nghệ Đông Á) dưới sự hướng dẫn của ThS. Hà Trọng Thắng. Đồ án giải quyết bài toán tự động hóa quy trình kinh doanh bán lẻ đa phân hệ, thiết lập nền tảng thương mại điện tử chuyên biệt cho ngành đồng hồ và phụ kiện với độ sẵn sàng cao, bảo mật chặt chẽ và trải nghiệm người dùng mượt mà.
+-----------------------------------------------------------------------------+
| MỤC TIÊU DỰ ÁN (PROJECT OBJECTIVES) |
+-----------------------------------------------------------------------------+
| 1. Xây dựng Portal khách hàng: Tìm kiếm, lọc đa tiêu chí, giỏ hàng, đặt hàng |
| 2. Chuẩn hóa CSDL quan hệ: Lưu trữ >1,000 SKU sản phẩm và lịch sử giao dịch|
| 3. Xây dựng Phân hệ Quản trị (Admin): Quản lý Catalog, Order, Menu, Slider |
| 4. Tối ưu hóa hiệu năng: Phản hồi trang <1.2s, chịu tải 150 requests/sec |
| 5. Thiết lập cơ chế bảo mật: Chống SQL Injection, XSS, CSRF toàn diện |
+-----------------------------------------------------------------------------+
Giải pháp sử dụng mô hình kiến trúc Model-View-Controller (MVC) trên nền tảng .NET Framework và hệ quản trị cơ sở dữ liệu quan hệ Microsoft SQL Server. Kiến trúc này mang lại khả năng phân tách mối quan tâm (Separation of Concerns - SoC) vượt trội, giúp mã nguồn dễ bảo trì, tối ưu hóa quy trình kiểm thử đơn vị (Unit Testing) và loại bỏ hoàn toàn các hạn chế về ViewState nặng nề của mô hình ASP.NET Web Forms truyền thống.
Phạm vi của dự án tập trung vào mô hình B2C (Business-to-Consumer) cho phân phối bán lẻ đồng hồ nam/nữ, dây da thật và phụ kiện chăm sóc đồng hồ. Hệ thống hỗ trợ hai phương thức thanh toán chính gồm nhận hàng trả tiền (COD) và chuyển khoản ngân hàng, đồng thời tối ưu hóa luồng xử lý từ tiếp nhận đơn đặt hàng đến điều phối bộ phận kho vận.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Khảo sát thị trường các nền tảng TMĐT hiện nay cho thấy sự phân hóa rõ rệt giữa các giải pháp mã nguồn mở đóng gói sẵn và các hệ thống tùy biến chuyên sâu:
| Tiêu chí so sánh |
Nền tảng CMS mã nguồn mở (WooCommerce / WordPress) |
Hệ thống ASP.NET Web Forms cổ điển |
Hệ thống ASP.NET MVC (Giải pháp đồ án) |
| Kiến trúc mã nguồn |
Khối đơn khối (Monolithic), mã PHP lồng ghép HTML |
Page-controller, phụ thuộc ViewState & Server Controls |
MVC chuẩn, phân tách SoC, kiểm soát hoàn toàn HTML/CSS |
| Hiệu năng & Tải trang |
Trung bình (2.2s - 3.8s) do nhiều plugin dư thừa |
Kém (2.5s - 4.5s) do dung lượng payload ViewState lớn |
Cao (0.8s - 1.2s), mã tối ưu qua Bundling & Minification |
| Tính bảo mật |
Dễ tổn thương bởi lỗ hổng bảo mật từ plugin bên thứ 3 |
Bảo mật trung bình, khó cấu hình CSRF/XSS tùy biến |
Rất cao, tích hợp Data Validation, Anti-Forgery, Identity |
| Khả năng mở rộng |
Giới hạn khi dữ liệu vượt quá 100,000 bản ghi |
Phức tạp trong việc bảo trì và nâng cấp tính năng mới |
Dễ dàng chuyển đổi sang Web API, .NET Core, Microservices |
| Chi phí tùy biến |
Thấp ở giai đoạn đầu, cao khi cần tính năng chuyên sâu |
Rất cao, khó tuyển dụng nhân sự duy trì công nghệ cũ |
Tối ưu, tận dụng hệ sinh thái C# và thư viện .NET phong phú |
Áp dụng phương pháp phân tích yêu cầu MoSCoW, hệ thống xác định danh mục tính năng ưu tiên:
- Must-have (Bắt buộc): Đăng ký/đăng nhập, duyệt danh mục sản phẩm phân tầng, giỏ hàng (Session-based), đặt hàng, phân hệ quản trị CRUD (Sản phẩm, Danh mục, Đơn hàng, Tài khoản).
- Should-have (Cần có): Bộ lọc sản phẩm theo khoảng giá và hãng sản xuất, quản lý giao diện động (Slider, Banner, Navigation Menu), phân quyền Role-based (Admin, Staff, Customer).
- Could-have (Có thể thêm): Đánh giá sản phẩm, bình luận tương tác, thống kê doanh thu theo ngày/tháng.
- Won't-have (Tạm hoãn): Tích hợp cổng thanh toán quốc tế trực tiếp qua Webhook, theo dõi định vị shipper thời gian thực.
Thiết kế hệ thống
Kiến trúc tổng thể của website được thiết kế theo mô hình 3 lớp phân tách rõ ràng, tương tác thông qua Entity Framework ORM:
[Trình duyệt Khách hàng / Admin Dashboard]
[ASP.NET MVC Routing Engine]
[Action Filters] [Authentication & Authorization]
Technology Stack chi tiết của đồ án:
- Ngôn ngữ lập trình: C# 8.0 (.NET Framework 4.8 runtime)
- Framework nền tảng: ASP.NET MVC 5.2.7 (Microsoft.AspNet.Mvc)
- Hệ quản trị CSDL: Microsoft SQL Server 2019 Developer Edition
- Công cụ truy xuất dữ liệu: Entity Framework 6.4.4 / ADO.NET T-SQL
- Giao diện & Client-side: HTML5, CSS3, JavaScript, jQuery 3.6.0, Bootstrap 4.6, FontAwesome 5.15
- Môi trường phát triển (IDE): Microsoft Visual Studio Enterprise 2019/2022
Cơ sở dữ liệu được thiết kế đạt chuẩn hóa 3NF gồm các bảng cốt lõi:
tbl_Admin (AdminID [PK, int], Username [nvarchar(50)], Password [nvarchar(255)], FullName [nvarchar(100)], Email [nvarchar(100)], RoleID [int])
tbl_Customer (CustomerID [PK, int], CustomerName [nvarchar(100)], Email [nvarchar(100)], Phone [varchar(20)], Address [nvarchar(255)], Password [nvarchar(255)])
tbl_Category (CategoryID [PK, int], CategoryName [nvarchar(100)], Slug [varchar(100)], Status [bit])
tbl_Brand (BrandID [PK, int], BrandName [nvarchar(100)], Logo [nvarchar(255)], Description [nvarchar(max)])
tbl_Product (ProductID [PK, int], CategoryID [FK, int], BrandID [FK, int], ProductName [nvarchar(200)], Price [decimal(18,2)], DiscountPrice [decimal(18,2)], Quantity [int], Image [nvarchar(255)], Detail [nvarchar(max)], CreatedDate [datetime])
tbl_Order (OrderID [PK, int], CustomerID [FK, int], OrderDate [datetime], TotalAmount [decimal(18,2)], Status [int], PaymentMethod [nvarchar(50)], ShippingAddress [nvarchar(255)])
tbl_OrderDetail (OrderDetailID [PK, int], OrderID [FK, int], ProductID [FK, int], Quantity [int], UnitPrice [decimal(18,2)])
tbl_Menu (MenuID [PK, int], MenuName [nvarchar(100)], MenuLink [nvarchar(255)], OrderIndex [int], Position [varchar(50)])
tbl_Slider (SliderID [PK, int], Title [nvarchar(150)], ImageURL [nvarchar(255)], Link [nvarchar(255)], DisplayOrder [int], IsActive [bit])
Methodology
Dự án áp dụng quy trình phát triển phần mềm kết hợp giữa mô hình Thác nước (Waterfall) trong pha phân tích thiết kế hệ thống và mô hình Linh hoạt (Agile/Scrum) với các vòng lặp 2 tuần trong pha lập trình:
[Tuần 1 - 2] Khảo sát nghiệp vụ, đặc tả yêu cầu phần mềm và Use Case Diagrams
[Tuần 3 - 4] Thiết kế CSDL quan hệ, Sequence Diagrams và thiết lập Architecture
[Tuần 5 - 8] Sprint 1 & 2: Phát triển Module Client (Catalog, Filter, Cart, Checkout)
[Tuần 9 - 10] Sprint 3: Phát triển Phân hệ Admin Dashboard (CRUD, Orders, Slider, Menu)
[Tuần 11] Kiểm thử hộp đen, tối ưu SQL Query, cấu hình bảo mật
[Tuần 12] Đóng gói triển khai thử nghiệm trên IIS Server và hoàn thiện báo cáo
Kế hoạch quản trị rủi ro tập trung vào việc ngăn chặn rò rỉ dữ liệu phiên giỏ hàng (xử lý thông qua Session locking cơ chế In-Proc) và xung đột số lượng hàng tồn khi hai khách hàng cùng đặt một sản phẩm còn số lượng duy nhất (sử dụng SqlTransaction với Isolation Level Serializable).
Implementation và kết quả
Development process
Cấu trúc dự án được tổ chức theo chuẩn quy ước ASP.NET MVC 5:
WatchECommerce.Web/
Dưới đây là cài đặt kỹ thuật tiêu biểu cho cơ chế định tuyến SEO và nghiệp vụ xử lý giỏ hàng:
// App_Start/RouteConfig.cs - Tối ưu hóa URL thân thiện cho SEO
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Định tuyến chi tiết sản phẩm chuẩn SEO
routes.MapRoute(
name: "ProductDetail",
url: "san-pham/{slug}-{id}",
defaults: new { controller = "Product", action = "Detail", id = UrlParameter.Optional },
namespaces: new[] { "WatchECommerce.Web.Controllers" }
);
// Định tuyến mặc định
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
// Controllers/CartController.cs - Xử lý nghiệp vụ giỏ hàng với Session
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult AddToCart(int productId, int quantity = 1)
{
using (var db = new WatchECommerceEntities())
{
var product = db.tbl_Product.Find(productId);
if (product == null || product.Quantity < quantity)
{
return Json(new { status = false, message = "Sản phẩm tạm hết hàng hoặc số lượng không đủ." });
}
var cart = Session["CartSession"] as List<CartItemViewModel> ?? new List<CartItemViewModel>();
var existingItem = cart.FirstOrDefault(x => x.Product.ProductID == productId);
if (existingItem != null)
{
existingItem.Quantity += quantity;
}
else
{
cart.Add(new CartItemViewModel { Product = product, Quantity = quantity });
}
Session["CartSession"] = cart;
return Json(new { status = true, totalCount = cart.Sum(x => x.Quantity), message = "Thêm vào giỏ hàng thành công!" });
}
}
Testing và validation
Quá trình kiểm chứng hệ thống được tiến hành qua 35 kịch bản kiểm thử hộp đen (Black-box testing) và kiểm thử hiệu năng với Apache JMeter:
[KẾT QUẢ KIỂM THỬ HIỆU NĂNG - JMETER BENCHMARK]
- Tổng số luồng đồng thời (Concurrent Threads): 100 Users
- Tỷ lệ phản hồi lỗi (Error Rate): 0.00%
- Thời gian phản hồi trung bình (Average Response Time): 185 ms
- Thông lượng hệ thống (Throughput): 148.6 requests/second
- Thời gian hoàn tất tải trang DOM (Full Page Load): 1.12 s
Kiểm thử chấp nhận người dùng (User Acceptance Testing - UAT) được thực hiện trên nhóm mẫu 25 người dùng (gồm 5 quản trị viên và 20 khách hàng mục tiêu). Điểm hài lòng trung bình đạt 4.68/5.0, trong đó tiêu chí tính dễ sử dụng (Usability) đạt 4.8/5.0 và tốc độ thao tác đặt hàng đạt 4.7/5.0.
Kết quả đạt được
Hệ thống đã hoàn thành 100% các mục tiêu kỹ thuật đề ra trong đề cương:
- Xây dựng hoàn chỉnh Portal mua sắm trực tuyến với tính năng lọc sản phẩm theo thương hiệu, mức giá và tìm kiếm từ khóa với độ trễ <200ms.
- Phân hệ Admin quản lý trực quan toàn bộ danh mục sản phẩm, tình trạng đơn hàng (Mới, Đang giao, Đã giao, Đã hủy) và báo cáo doanh số theo thời gian thực.
- Cơ chế quản lý giao diện mềm dẻo cho phép quản trị viên thay đổi nội dung Slider quảng cáo và hệ thống phân cấp Menu trực tiếp từ trang quản trị mà không cần can thiệp mã nguồn hay khởi động lại máy chủ web.
Đổi mới và đóng góp
Đồ án mang lại những cải tiến kỹ thuật rõ rệt so với các giải pháp ứng dụng TMĐT truyền thống tại thời điểm nghiên cứu:
- Kiến trúc quản trị giao diện động (Dynamic Presentation Engine): Không cố định các thành phần giao diện trong tệp tĩnh, đồ án trừu tượng hóa toàn bộ cấu trúc Menu đa cấp và Slider hình ảnh thành các bảng quản lý trong SQL Server. Cơ chế này giảm 85% thời gian can thiệp của lập trình viên khi có sự kiện khuyến mãi hoặc thay đổi cấu trúc danh mục.
- Kỹ thuật tối ưu hóa truy vấn dữ liệu quan hệ (Eager Loading Optimization): Ứng dụng kỹ thuật
Include() trong LINQ to Entities giúp triệt tiêu hoàn toàn vấn đề N+1 Query kinh điển trong ORM, giảm 65% số lượng truy vấn round-trip gửi tới SQL Server trong trang danh mục.
- Bảo mật đa tầng theo chiều sâu (Defense in Depth): Kết hợp xác thực quyền hạn thông qua Custom Action Filters, làm sạch đầu vào tự động bằng DataAnnotations Validation, và mã hóa dữ liệu nhạy cảm theo chuẩn bảo mật doanh nghiệp.
| Chỉ số hiệu năng |
Hệ thống cũ (ASP.NET Web Forms) |
Hệ thống mới (ASP.NET MVC của đồ án) |
Mức độ cải thiện (%) |
| Kích thước gói tải trang trung bình |
1.85 MB |
620 KB |
Giảm 66.5% dung lượng |
| Thời gian phản hồi máy chủ (TTFB) |
540 ms |
145 ms |
Nhanh hơn 73.1% |
| Số lượng thao tác hoàn tất đơn hàng |
7 bước |
3 bước |
Rút ngắn 57.1% thao tác |
| Thời gian khôi phục lỗi phiên làm việc |
Khó xử lý do ViewState |
Tự động qua Session Storage |
Tối ưu 100% trải nghiệm |
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng
Website được tối ưu hóa trực tiếp cho các mô hình kinh doanh bán lẻ:
- Chuỗi showroom đồng hồ chính hãng: Triển khai làm cổng thông tin giới thiệu sản phẩm và tiếp nhận đơn đặt hàng trực tuyến kết nối các chi nhánh.
- Xưởng chế tác và phân phối phụ kiện đồ da thủ công: Cung cấp thông tin chi tiết về chất liệu da, kích thước dây đeo và hướng dẫn bảo dưỡng đồ da chuyên dụng.
Hướng dẫn và yêu cầu triển khai hạ tầng
[YÊU CẦU MÁY CHỦ TRIỂN KHAI (PRODUCTION ENVIRONMENT)]
Quy trình triển khai 4 bước chuẩn hóa:
- Chuẩn bị CSDL: Thực thi tệp kịch bản
Database_Schema.sql trên SQL Server Management Studio (SSMS) để tạo bảng, khóa ngoại và dữ liệu mẫu khởi tạo.
- Cấu hình Web Server: Tạo một Application Pool riêng biệt trên IIS chạy ở chế độ
.NET CLR Version v4.0.30319, Managed Pipeline Mode chọn Integrated.
- Đóng gói và Phát hành: Sử dụng tính năng
Publish Web Application trong Visual Studio để biên dịch toàn bộ mã nguồn C# thành các tệp nhị phân DLL tối ưu trong thư mục bin/.
- Cấu hình Connection String: Hiệu chỉnh tệp
Web.config trỏ đến máy chủ CSDL thực tế với tài khoản SQL được phân quyền tối thiểu (Least Privilege).
Hạn chế và hướng phát triển
Hạn chế hiện tại
- Phương thức thanh toán: Chưa tích hợp trực tiếp cổng thanh toán trực tuyến nội địa (VNPay, MoMo, ZaloPay) qua cơ chế Webhook/IPN tức thời; việc xác nhận thanh toán chuyển khoản vẫn phụ thuộc vào đối soát thủ công của bộ phận bán hàng.
- Tính năng thông minh: Chưa có hệ sinh thái đề xuất sản phẩm (Recommendation System) dựa trên lịch sử duyệt web của khách hàng.
- Nền tảng công nghệ: Dự án chạy trên .NET Framework truyền thống, bị ràng buộc vào hệ điều hành Windows Server, chưa tận dụng được tính năng đa nền tảng (Cross-platform) của .NET Core / .NET 8.
Hướng phát triển trong tương lai
- Tái cấu trúc (Refactor) toàn bộ mã nguồn sang kiến trúc Clean Architecture trên nền tảng ASP.NET Core (.NET 8/9) để cho phép đóng gói triển khai trong Docker Container trên môi trường Linux.
- Xây dựng hệ thống RESTful Web API độc lập, phục vụ tích hợp ứng dụng di động đa nền tảng (Flutter/React Native) cho khách hàng và nhân viên kho vận.
- Tích hợp cổng thanh toán VNPay SDK và dịch vụ thông báo đơn hàng thời gian thực thông qua SignalR/Firebase Cloud Messaging.
Đối tượng hưởng lợi
- Sinh viên ngành CNTT & Kỹ thuật Phần mềm: Tài liệu tham khảo chuẩn mực về phương pháp luận phân tích thiết kế hệ thống sử dụng UML (Use Case, Sequence, Activity Diagrams) và kỹ thuật lập trình MVC 5 từ lý thuyết đến thực hành.
- Lập trình viên Web (.NET Developers): Cung cấp mẫu kiến trúc mã nguồn sạch, cách tổ chức ViewModels, xử lý bất đồng bộ trong Controller và tối ưu hóa truy vấn Entity Framework trong các dự án TMĐT.
- Chủ doanh nghiệp và Cửa hàng bán lẻ: Sở hữu giải pháp chuyển đổi số thương mại điện tử chi phí thấp, tự chủ hoàn toàn mã nguồn, dễ dàng tùy biến theo đặc thù kinh doanh mà không phụ thuộc vào phí thuê bao nền tảng bên ngoài.
- Nhà nghiên cứu ứng dụng: Cung cấp dữ liệu thực nghiệm về đánh giá hiệu năng giữa kiến trúc MVC và Web Forms trong các bài toán tải trọng vừa và nhỏ.
Câu hỏi thường gặp
1. Hệ thống yêu cầu cấu hình máy chủ như thế nào để triển khai?
Hệ thống yêu cầu máy chủ chạy Windows Server (2016 trở lên) được kích hoạt IIS 10.0, cài đặt .NET Framework 4.8 và Microsoft SQL Server 2016 trở lên. Cấu hình phần cứng tối thiểu là 2 vCPU, 4GB RAM và 40GB dung lượng lưu trữ SSD.
2. Khả năng chịu tải tối đa của website là bao nhiêu và làm thế nào để mở rộng?
Trong cấu hình máy chủ tiêu chuẩn, hệ thống chịu tải tốt ở mức 150-200 requests/giây (tương đương 10,000 lượt truy cập mỗi ngày). Khi lưu lượng tăng cao, hệ thống có thể mở rộng quy mô bằng cách tách máy chủ CSDL riêng biệt, kích hoạt SQL Connection Pooling và chuyển đổi lưu trữ Session từ In-Proc sang Distributed Cache (Redis Cache).
3. Website có thể tích hợp với các phần mềm quản lý bán hàng (POS) có sẵn không?
Có. Nhờ thiết kế phân tầng rõ ràng của mô hình MVC, hệ thống có thể dễ dàng bổ sung các API Controller để trao đổi dữ liệu JSON với phần mềm POS hoặc hệ thống ERP nội bộ nhằm đồng bộ tồn kho và hóa đơn.
4. Chi phí bảo trì và vận hành hệ thống định kỳ bao gồm những gì?
Chi phí vận hành bao gồm phí duy trì tên miền (Domain), phí thuê máy chủ ảo (VPS Windows khoảng 300,000 - 600,000 VNĐ/tháng) và chứng chỉ bảo mật SSL. Hệ thống không phát sinh phí bản quyền phần mềm định kỳ nhờ sử dụng các phiên bản phần mềm miễn phí/tiêu chuẩn.
5. Thời gian hoàn vốn (ROI) khi ứng dụng giải pháp này cho cửa hàng bán lẻ là bao lâu?
Với chi phí đầu tư ban đầu thấp và khả năng tự động hóa quy trình xử lý đơn hàng, doanh nghiệp có thể tiết kiệm 40% chi phí nhân sự trực vận hành và đạt điểm hòa vốn trong vòng 4 đến 6 tháng sau khi đi vào hoạt động ổn định.
Kết luận
Đồ án tốt nghiệp "Thiết kế website bán đồng hồ và phụ kiện bằng công nghệ ASP.NET MVC" của tác giả Trần Thị Hải Hậu đã giải quyết trọn vẹn bài toán xây dựng nền tảng TMĐT chuyên ngành với độ tin cậy và tính ứng dụng cao. Bằng việc làm chủ kiến trúc ASP.NET MVC 5 kết hợp CSDL SQL Server 2019, dự án không chỉ hoàn thành xuất sắc các yêu cầu học thuật về phân tích thiết kế phần mềm mà còn cung cấp một sản phẩm thương mại sẵn sàng ứng dụng vào thực tiễn, đóng góp thiết thực vào tiến trình số hóa ngành bán lẻ phụ kiện thời trang tại Việt Nam.