Song song cùng sự phát triển của thương mại điện tử, hệ thống khuyến nghị xuất hiện với một vai trò quan trọng không chỉ tiết kiệm chi phí quảng cáo cho nhà sản xuất, hệ thống còn đem đế
Trang 1Đề tài:
HỆ THỐNG MUA SẮM THÔNG MINH
Trang 2LỜI CẢM ƠN
Trang 3NHẬN XÉT CỦA GIẢNG VIÊN
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Tp Hồ Chí Minh, ngày tháng năm 2019
Người hướng dẫn
(ký, họ và tên)
Trang 4MỤC LỤC
DANH MỤC BẢNG BIỂU i
DANH MỤC HÌNH VẼ ii
DANH MỤC CÁC THUẬT NGỮ TIẾNG ANH VÀ CÁC TỪ VIẾT TẮT v
LỜI MỞ ĐẦU 1
Chương 1 TỔNG QUAN ĐỀ TÀI 3
1.1 Giới thiệu tổng quan và lý do chọn đề tài 3
1.2 Các nghiên cứu liên quan 5
1.3 Mục tiêu và phương pháp nghiên cứu 6
1.3.1 Mục tiêu nghiên cứu 6
1.3.2 Phương pháp nghiên cứu 6
1.4 Đối tượng và phạm vi nghiên cứu 6
1.5 Đóng góp của đề tài 7
1.6 Bố cục của báo cáo 7
Chương 2 CƠ SỞ LÝ THUYẾT 9
2.1 Giới thiệu 9
2.2 Cơ sở lý thuyết 9
2.2.1 Rút trích dữ liệu 9
2.2.2 ASP.NET MVC 17
2.2.3 DEVEXPRESS 22
2.2.4 SQL Server Integration Services 28
2.2.5 Mô hình không gian vector 32
2.2.6 Một số trọng số phổ biến của mục từ 33
2.2.7 Hệ thống khuyến nghị 33
Chương 3 HIỆN THỰC HỆ THỐNG 43
3.1 Tổng quan hệ thống mua sắm thông minh 43
3.1.1 Giới thiệu hệ thống 43
3.1.2 Kiến trúc hệ thống mua sắm thông minh 44
3.1.3 Các giai đoạn chính 44
3.1.4 Thiết kế cơ sở dữ liệu 45
3.1.5 Hệ thống khuyến nghị 49
Trang 53.1.6 Rút trích dữ liệu 54
3.1.7 Quản lý dữ liệu website 56
3.1.8 Trang web so sánh giá 64
Chương 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 80
4.1 Vấn đề còn tồn tại 80
4.2 Hướng phát triển 80
TÀI LIỆU THAM KHẢO 81
Trang 7DANH MỤC BẢNG BIỂU
Bảng 2.1: Sử dụng CSS Selector trong Scrapy 11
Bảng 2.2: Sử dụng Xpath trong Scrapy 12
Bảng 2.3: Ma trận Utility Matrix 35
Bảng 2.4: Tìm feature vector 37
Bảng 2.5: Điểm đánh giá của User đối với sản phẩm 38
Bảng 2.6: Tính giá trị trung bình đánh giá của từng user 39
Bảng 2.7: Ma trận normalized utility 39
Bảng 2.8: Ma trận Similarity matrix S 41
Bảng 3.1: Thiết kế cơ sở dữ liệu 45
Bảng 3.2: Các trang web rút trích 54
Trang 8DANH MỤC HÌNH VẼ
Hình 1.1: Tần suất mua sắm trực tuyến trên toàn thế giới 3
Hình 1.2: Khảo sát nhu cầu người dùng mua hàng khuyến mãi 4
Hình 1.3: Khảo sát nhu cầu mặt hàng khuyến mãi 4
Hình 1.4: Khảo sát nhu cầu phát triển hệ thống 4
Hình 2.1: Các quy tắc xác định CSS Selector 10
Hình 2.2: Thành phần chính và cách thức hoạt động của Scrapy Framework 14
Hình 2.3: Cấu trúc của một Scrapy project 16
Hình 2.4: Mô hình ASP.NET 18
Hình 2.5: Kiến trúc MVC 18
Hình 2.6: Yêu cầu và phản hồi trong kiến trúc MVC 19
Hình 2.7: Vòng đời của ASP.NET MVC 21
Hình 2.8: Routing của ASP.NET MVC 21
Hình 2.9: Hình trang web so sánh giá của hệ thống mua sắm thông minh 22
Hình 2.10: Kiến trúc XAF 23
Hình 2.11: Một số lớp trong Business Class Library 24
Hình 2.12: Listview của Devexpress 25
Hình 2.13: Detail View của Devexpress 25
Hình 2.14: Dashboard của Devexpress 26
Hình 2.15: Kiến trúc XAF 26
Hình 2.16: Cấu trúc của SSIS 29
Hình 2.17: Control Flow của SSIS 30
Hình 2.18: Connection Manager của SSIS 30
Hình 2.19: Transformation của SSIS 31
Hình 2.20: Destinations của SSIS 31
Hình 2.21: Mô hình không gian vector 32
Hình 3.1: Mô hình kiến trúc hệ thống mua sắm thông minh 44
Hình 3.2: Cấu trúc cơ sở dữ liệu của hệ thống 45
Hình 3.3: Thư mục lưu trữ dữ liệu Tiki dưới dạng file csv 54
Hình 3.4: Thực hiện chạy lệnh dữ liệu crawl về show dưới dạng console 55
Hình 3.5: Dữ liệu crawl về được lưu trữ dưới dạng csv 56
Trang 9Hình 3.6: Ảnh được chuyển từ link ảnh 58
Hình 3.7: Danh sách các View 58
Hình 3.8: Cấu trúc một View của một bảng 59
Hình 3.9: ListView của bảng Account 59
Hình 3.10: Detail View của bảng Account 59
Hình 3.11: Thiết lập hiển thị Excel Import 59
Hình 3.12: Giao diện Import Excel 60
Hình 3.13: Detail View của Import Excel 60
Hình 3.14: Layout đăng nhập 60
Hình 3.15: Các chứng năng loại chức năng import 61
Hình 3.16: Chức năng thêm xóa sửa 61
Hình 3.17: Tìm kiếm trên nhiều bảng 61
Hình 3.18: Tìm kiếm theo 1 bảng 62
Hình 3.19: Tìm kiếm theo điều kiện 62
Hình 3.20: Sắp xếp theo một bảng 62
Hình 3.21: Hướng dẫn hiển thị nhưng cột ẩn 62
Hình 3.22: Các nhóm được Group theo điều kiện 63
Hình 3.23: Tạo một biểu đồ đơn giản 63
Hình 3.24: Form đăng nhập 68
Hình 3.25: Form đăng ký 68
Hình 3.26: Form quên mật khẩu 69
Hình 3.27: Khôi phục mật khẩu 69
Hình 3.28: List sản phẩm mới 69
Hình 3.29: List 20 điện thoại giá rẻ nhất 70
Hình 3.30: Ba list sản phẩm Top 6 các loại sản phẩm giá rẻ 70
Hình 3.31: Layout của một sản phẩm 70
Hình 3.32: Layout của một sản phẩm 71
Hình 3.33: Các chức năng trong Modal 71
Hình 3.34: Khung tìm kiếm 72
Hình 3.35: Báo cáo lỗi hoặc góp ý 72
Hình 3.36: Nội dung ý kiến khách hàng gửi đến email quản lý 72
Hình 3.37: Layout danh sách điện thoại 73
Trang 10Hình 3.38: Sắp xếp theo hãng 73
Hình 3.39: Layout sắp xếp theo giá và hãng 74
Hình 3.40: Hệ thống khuyến nghị 64
Hình 3.41: Hệ thống khuyến nghị dựa trên loại sản phẩm 65
Hình 3.42: Hệ thống khuyến nghị top 3 sản phẩm giá rẻ ngẫu nhiên 65
Hình 3.43: Hệ thống khuyến nghị khi bấm vào xem một sản phẩm 66
Hình 3.44: Layout tìm kiếm 66
Hình 3.45: Khung khuyến nghị sản phẩm dựa trên từ khóa tìm kiếm 67
Hình 3.46: Layout khung khuyến nghị sản phẩm giá rẻ dựa vào từ khóa tìm kiếm 67
Hình 3.47: Layout của trang thông tin khách hàng 74
Hình 3.48: Số lần click của khách hàng với sản phẩm 75
Hình 3.49: Danh sách sản phẩm mà đã đánh giá 75
Hình 3.50: Nút thay đổi mật khẩu đối với user tạo ở web 75
Hình 3.51: Layout thay đổi mật khẩu 76
Hình 3.52: Phân trang sản phẩm 76
Hình 3.53: Layout một sản phẩm 76
Hình 3.54: Layout trang chi tiết điện thoại 77
Hình 3.55: Hệ thống bình luận và đánh giá sản phẩm 77
Hình 3.56: Kết quả của hệ thống khuyến nghị 51
Hình 3.57: File chứa kết quả 52
Hình 3.58: Một package sẽ là một quy trình biến đổi dữ liệu của SSIS 79
Hình 3.59: Nhiệm vụ của một task 79
Trang 11DANH MỤC CÁC THUẬT NGỮ TIẾNG ANH VÀ CÁC TỪ VIẾT TẮT
1 Crawl Thu thập thông tin
3 Database Cơ sở dữ liệu
4 Document Tài liệu
5 HTML HyperText Markup Language: ngôn ngữ đánh dấu siêu
9 Python Ngôn ngữ lập trình Python
10 Regex Regular expression: biểu thức chính quy
13 SSIS SQL Server Integration Service
15 TF Term Frequency: tần số văn bản
16 URL Uniform Resource Locator: định vị tài nguyên thống
nhất, địa chỉ hay liên kết
17 Website Trang web/ Trang mạng
18 Windows Hệ điều hành Windows
19 XML Extensible Markup Language: ngôn ngữ đánh dấu mở
rộng
20 XSL Extensible Stylesheet Language: ngôn ngữ mở rộng
chuyển đổi các file XML
Trang 13LỜI MỞ ĐẦU
Nhu cầu mua sắm trực tuyến đã trở nên quen thuộc với người tiêu dùng đặc biệt là trong thời đại công nghệ phát triển vượt bậc như hiện này Từ cổng thông tin thống kê Statista: doanh thu của ngành thương mại điện tử Việt Nam đạt 2.269 triệu USD, tăng 29,4% so với năm ngoái; số lượng khách hàng mua hàng trên trang TMĐT đạt 49,8 triệu người, tăng 2,6%; trong đó xu hướng mua sắm trên di động chiếm đến 72% [11], nước
ta nằm trong Top 6 nền thị trường thương mại điện tử phát triển nhất toàn cầu Có thể nói người tiêu dùng có nguy cơ đối mặt với sự bùng nổ thông tin từ những mê cung các cửa hàng trực tuyến với hàng nghìn sản phẩm, mẫu mã và mức giá khác nhau,… điều
đó buộc họ chấp nhận đối mặt với việc lãng phí thời gian để lựa chọn những dòng sản phẩm có chứa thông tin phù hợp với mỗi cá nhân Song song cùng sự phát triển của thương mại điện tử, hệ thống khuyến nghị xuất hiện với một vai trò quan trọng không chỉ tiết kiệm chi phí quảng cáo cho nhà sản xuất, hệ thống còn đem đến những sản phẩm phù hợp với nhu cầu của người tiêu dùng, giúp họ lựa chọn sản phẩm phù hợp với túi tiền, tiết kiệm thời gian, doanh nghiệp gia tăng giá trị kinh doanh, thúc đẩy đời sống con người ngày càng nâng cao
Hệ thống khuyến nghị được ứng dụng rộng rãi trên khắp thế giới và nhiều lĩnh vực khác nhau: giáo dục, du lịch, giải trí,… Để xây dựng hệ thống, việc tìm hiểu các trang bán hàng thương mại, đánh giá, bình luận,… là yếu tố quan trọng giúp nhà phát triển khảo sát thị trường nhận biết các trang web bán hàng chất lượng, đáng tin cậy nhằm đem lại xác suất mua hàng đúng giá trị của sản phẩm Việc tích hợp chúng vào một trang web giúp người dùng tìm kiếm thực hiện nhanh chóng và mang lại sự hài lòng từ đó họ có thể kết luận mua hàng phù hợp với túi tiền cũng như nhu cầu cần sản phẩm
Những hệ thống phát triển điển hình: hệ tư vấn lọc cộng tác (Collaborative Filtering) (Aggarwal, 2016; Schafer et al., 2007; Nghe, 2016) đã được ứng dụng thành công trong lĩnh vực thương mại điện tử như Amazon (Greg et al., 2003), Netflix (Carlos and Neil, 2015) Hệ tư vấn lọc cộng tác giúp người dùng có thể tìm nhanh hơn các sản phẩm mà họ cần mua dựa trên dữ liệu xếp hạng của người dùng cho các sản phẩm trong quá khứ Để dự đoán được các sản phẩm mà người thích dựa trên ma trận xếp hạng, nhiều mô hình lọc cộng tác được đề xuất như mô hình lọc cộng tác dựa trên người dùng (User-based Collaborative Filtering) (Martin et al., 2014; Michael et al., 2010; Nghia et
Trang 14al., 2016), mô hình lọc cộng tác dựa trên sản phẩm (Item-based Collaborative Filtering) (Martin et al., 2014; Michael et al., 2010), mô hình lọc cộng tác dựa trên luật kết hợp (Collaborative Filtering based on association rules) (Ahmed, 2015; Nghia et al., 2015)[5]
Trong đề tài nghiên cứu, chúng em tìm hiểu về kỹ thuật rút trích các sản phẩm khuyến mãi từ nhiều trang web thương mại phổ biến và được người dùng tin cậy qua khảo sát thực tế, đánh giá chất lượng của các nhãn hàng từ đó xây dựng khuyến nghị dựa trên hành vi người dùng,… gợi ý hỗ trợ người sản phẩm chất lượng tốt, mức giá phù hợp, người sử dụng nắm rõ thông tin về mặt hàng qua trang chi tiết sản phẩm, có thể tìm kiếm sản phẩm nhanh chóng trên hệ thống hỗ trợ mua hàng
Đề tài mang đến tính tiện lợi đối với người dùng, đáp ứng nhu cầu mua hàng hiện nay trong một cuộc sống công nghệ hiện đại, dưới sự phát triển vượt bậc của nền công nghiệp hiện đại 4.0 Hệ thống không những thỏa mãn nhu cầu của người mua hàng mà còn đem lại doanh thu nhất định đối với những nhà cung cấp qua việc gián tiếp quảng cáo sản phẩm
Trang 15Chương 1 TỔNG QUAN ĐỀ TÀI
1.1 Giới thiệu tổng quan và lý do chọn đề tài
Cổng thông tin thống kê Staticta đã từng công bố số liệu về tần suất mua sắm trực tuyến hàng tuần trên toàn thế giới kể từ tháng 10 năm 2018: có 20% người mua hàng trực tuyến trên toàn thế giới đã mua hàng hóa hàng tuần, 31% tỉ lệ người mua hàng online hàng tháng
Hình 1.1: Tần suất mua sắm trực tuyến trên toàn thế giới [12]
Điều đó cho thấy lượng khách hàng truy cập mua hàng chiếm trọng số không nhỏ đối với ngành thương mại điện tử Có thể thấy nhu cầu mua sản phẩm chất lượng – giá tốt đã không còn xa lạ với mỗi chúng ta, không chỉ giới trẻ và hầu hết mọi người khi mua hàng đều thực hiện một phép so sánh giá giữa các trang web với nhau, đánh giá chất lượng cũng như mẫu mã, phần trăm giảm giá của các mặt hàng cần mua, quà tặng kèm theo của từng trang web bán hàng thương mại từ đó rút ra quyết định mua hàng Dựa trên nhu cầu thiết thực ấy nhóm tiến hành khảo sát thu thập thông tin nhóm hơn 100 người từ cộng đồng Facebook Kết quả khảo sát thu được có đến 85,4% người dùng hào hứng với các mặt hàng khuyến mãi; 13,6% người dùng không có ý kiến đến việc mua hàng có ưu đãi và 1,0% không hứng thú với việc mua các mặt hàng có ưu đãi
Trang 16Nhóm tiếp tục khảo sát những loại sản phẩm được người dùng chú ý đến, kết quả khảo sát khoảng 92,2% người dùng ở mọi lứa tuổi chọn nhóm “Điện thoại – Tablet” và 78,6% người dùng quan tâm đến mặt hàng “Laptop” Những mặt hàng còn lại đặt tỷ lệ dưới 50% trên từng mặt hàng
Hình 1.3: Khảo sát nhu cầu mặt hàng khuyến mãi
Nhóm khảo sát nhu cầu phát triển hệ thống thì có đến 98.1% người dùng có nhu cầu sử dụng hệ thống trong tương lai
Hình 1.4: Khảo sát nhu cầu phát triển hệ thống
Qua khảo sát cho thấy nhu cầu mua sắm thông minh rất cần thiết đối với người tiêu dùng và phần lớn họ chưa biết đến hệ thống, vì vậy cần có một phần mềm hoặc
Hình 1.2: Khảo sát nhu cầu người dùng mua hàng khuyến mãi
Trang 17trang web đáp ứng nhu cầu chọn lựa ấy vì thế nhóm tiến hành thực hiện đề tài
Hệ thống hỗ trợ mua hàng khuyến mãi giúp so sánh giá được nảy sinh bởi nhu cầu tiêu dùng thông minh, hệ thống giúp tiết kiệm thời gian chọn lựa của người dùng, việc tìm hiểu các trang bán hàng thương mại qua những đánh giá, bình luận của người dùng khác, người dùng biết nhiều trang web bán hàng chất lượng trên thị trường nhằm đem lại xác suất mua hàng đúng giá trị của sản phẩm Việc tích hợp chúng vào cùng một trang web giúp việc tìm kiếm thực hiện nhanh hơn và mang lại sự hài lòng đối với người dùng Không những thời gian được tiết kiệm tối đa, người dùng còn được hỗ trợ việc mua các mặt hàng như nhau với những ưu đãi hấp dẫn: được tặng kèm các món quà khác nhau, ưu đãi: bảo hành nhân đôi, giảm giá mặt hàng từ 20%, 50%, … với ưu đãi bất ngờ, quà tặng hấp dẫn từ đó người tiêu dùng thông minh có thể kết luận mua hàng phù hợp với túi tiền cũng như nhu cầu cần sản phẩm của họ
Trong đề tài nghiên cứu, nhóm tìm hiểu về kỹ thuật rút trích các sản phẩm khuyến mãi từ nhiều trang web thương mại phổ biến và được người dùng tin cậy dựa vào khảo sát thực tế Nhóm rút trích và xử lý các bình luận đánh giá chất lượng sản phẩm từ các trang web bán hàng thương mại và đánh giá chất lượng sản phẩm, từ đó gợi ý kiến nghị cho người dùng nhằm hỗ trợ người dùng mua được sản phẩm chất lượng tốt, mức giá phù hợp Hệ thống hỗ trợ những đối tượng cần sản phẩm giúp cung cấp thông tin rõ về các mặt hàng, tìm kiếm nhanh chóng trên hệ thống, hỗ trợ mua hàng không sợ mua lầm qua những đánh giá từ người tiêu dùng khác về sản phẩm đó
Đề tài mang đến tính tiện lợi đối với người dùng, đáp ứng nhu cầu mua hàng hiện nay một cuộc sống công nghệ hiện đại, dưới sự phát triển vượt bậc của các công nghệ hiện đại nền công nghiệp 4.0 Hệ thống không những thỏa mãn nhu cầu của người cầu
mà còn đem lại doanh thu nhất định qua việc quảng cáo sản phẩm đối với những nhà cung cấp
1.2 Các nghiên cứu liên quan
Từ nhu cầu thực tế hằng ngày nhóm tiến hành thực hiện hệ thống dựa vào những nền tản công nghệ mới Nhóm tìm hiểu rút trích dữ liệu bằng Scrapy giúp việc crawl dữ liệu nhanh hơn, dữ liệu được lưu vào từng file kèm theo thời gian cụ thể việc lưu trữ thông tin về sản phẩm hiệu quả hơn Từ nền tảng tài liệu ASP.NET Core, DevExpress nhóm xây dựng trang web so sánh giá sau đó tham khảo từ tạp chí khoa của tác giả Phan
Trang 18Quốc Nghĩa và cộng sự [5] và trang Machine Learning cơ bản phát triển các thuật toán vào hệ thống hiện hành
1.3 Mục tiêu và phương pháp nghiên cứu
1.3.1 Mục tiêu nghiên cứu
Nghiên cứu một số kỹ thuật rút trích từ trang web để xây dựng một kho dữ liệu gồm các sản phẩm từ các trang web uy tín để xây dựng dữ liệu phục vụ giải quyết bài toán khuyến nghị Nhóm tiến hành khai thác sản phẩm của một số trang web nhất định thông qua bảng khảo sát nhu cầu Dữ liệu hướng đến bao gồm các sản phẩm được ưa chuộng với các mục khuyến mãi/ưu đãi hấp dẫn từ nhiều trang web thương mại Sau đó đưa chúng lên trang website so sánh giá và hệ thống quản lý sản phẩm đã được xây dựng hoàn chỉnh với những chức năng cơ bản Hệ thống hướng tới mục tiêu chính, tổng hợp tất cả thông tin khuyến mãi về các sản phẩm, so sánh, phân tích, đánh giá để gợi ý mua sản phầm cho người dùng, hướng tới mục tiêu mang lại nhiều lợi ích nhất cho người dùng khi mua hàng Nghiên cứu các cơ sở lý thuyết về khuyến nghị người dùng Trên
cơ sở đó, phát triển thành một hệ thống gợi ý sản phẩm cho người tiêu dùng
1.3.2 Phương pháp nghiên cứu
Nhóm tiến hành khảo sát người tiêu dùng về nhu cầu mua hàng từ các trang web thương mại điện tử Tìm hiểu cách xây dựng trang web bằng ASP.NET, nghiên cứu một
số công trình nghiên cứu liên quan trong lĩnh vực rút trích thông tin web và khuyến nghị sản phẩm
Tiếp theo nhóm tiến hành phân tích, thực nghiệm, đánh giá ưu điểm, nhược điểm của các phương pháp trong các công trình nghiên cứu đã khảo sát trên cơ sở tổng hợp,
kế thừa và bổ sung để đưa ra phương pháp thích hợp phát triển hệ thống trong ngữ cảnh của trang web so sánh giá cũng như khuyến nghị sản phẩm
1.4 Đối tượng và phạm vi nghiên cứu
Đề tài tập trung rút trích sản phẩm từ các trang web thương mại điện tử sau đó xây dựng trang web so sánh giá và phát triển hệ thống khuyến nghị cho người dùng sản phẩm Nhóm quyết định tiến hành rút trích dữ những yếu tố sau:
– Nguồn rút trích: Website bán hàng thương mại
– Những trang web thực hiện: Siêu thị Nguyễn Kim, Thế giới di động, Lazada, Tiki,
Trang 19và Collaborative Filtering từ đó chọn lọc và đưa ra những sản phẩm tương ứng với sở thích của khách hàng ngoài ra còn kết hợp một số khuyến nghị sản phầm dựa trên loại sản phẩm người dùng đang coi hoặc từ khóa người dùng tìm kiếm giúp việc lựa chọn sản phẩm một cách nhanh chóng, tiết kiệm thời gian, tiền bạc cũng như sự thích thú khi
sử dụng
Hệ thống góp phần tiết kiệm chi phí quảng cáo cho các doanh nghiệp bán hàng Tại đây các sản phẩm từ nhiều trang web được tích hợp như một cách quảng cáo riêng biệt và tạo sức hút lớn đối với người dùng
1.6 Bố cục của báo cáo
Báo cáo được chia thành các chương sau:
• Chương 1: Giới thiệu đề tài, lý do chọn đề tài, mục tiêu nghiên cứu, phương pháp thực hiện, đối tượng, phạm vi nghiên cứu và đóng góp của đề tài
• Chương 2: Trình bày một số lý thuyết, khái niệm cơ bản về phương pháp rút trích dữ liệu từ trang web, xây dựng trang web so sánh giá và khuyến nghị sản
Trang 20phẩm
• Chương 3: Giới thiệu giải pháp phát triển hệ thống mua sắm thông minh, xử
lý dữ liệu, tính độ tương đồng trong dữ liệu để khuyến nghị cho người dùng
• Chương 4: Kết luận và hướng phát triển hệ thống trong tương lai
Trang 21Chương 2 CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu
Trong phần này, nhóm sẽ giới thiệu kỹ thuật rút trích thông tin web, cơ sở lý thuyết nền tảng thuật toán khuyến nghị sản phẩm, web so sánh giá và một số công nghệ liên quan
Đầu tiên, nhóm trình bày về khái niệm rút trích thông tin web Nội dung rút trích sản phẩm từ những trang web dựa vào CSS Selector, Xpath Bên cạnh đó chúng ta còn
có một số thư viện, module python hỗ trợ cho việc rút trích như Scrapy,…
Sau đó nhóm trình bày khái niệm xây dựng hệ thống mua sắm thông minh dựa trên ASP.NET MVC kết hợp DEVEXPRESS để quản lý dữ liệu, SSIS để xử lý dữ liệu, thuật toán Content-based, Collaborative Filtering để xây dựng hệ thống khuyến nghị
• Quy tắc xác định
CSS Selector có thể định vị phần tử dựa vào ID, lớp hoặc tên của phần tử đó
Trang 22Hình 2.1: Các quy tắc xác định CSS Selector
Trong đó:
- CSS Selector ID: tìm kiếm phần tử dựa vào ID
- CSS Selector Class: tìm kiếm phần tử dựa vào tên Class
- CSS Selector Attribute: tìm kiếm phần tử dựa vào thuộc tính, cặp thuộc tính
và giá trị của phần tử
- CSS Selector ID/Class and attribute: kết hợp tìm kiếm dựa vào cả ba yếu tố trên
- CSS Selector Sub-string: tìm kiếm phần tử dựa vào các chuỗi con
- CSS Selector Inner text: giúp xác định và tạo các CSS Selector theo mẫu của tag HTML
• Mục đích sử dụng:
Selector dùng để truy xuất dữ liệu từ đến các thẻ HTML Trong một file HTML
có rất nhiều thẻ giống nhau và thông thường chúng ta sẽ đặt các ID, Class cho các thẻ
để phân biệt, vì vậy trong CSS sẽ dựa vào các ID và class đó để truy xuất tới và cách truy xuất đó ta gọi là Selector
Trang 23Để lấy các nodes văn bản:
Bảng 2.1: Sử dụng CSS Selector trong Scrapy
::text - response.css(‘title::text’).get() - Lấy 1 node văn bản
*::text - response.css(‘#imagetitle *::text’).get() - Lấy tất cả các node
a::attr(href) - response.css('a::attr(href)').getall()
- [a.attrib['href'] for a in response.css('a')]
- Lấy giá trị thuộc tính href của liên kết con
- Trả về chuỗi đầu tiên
Lưu ý:
• get() và getall():
- get()luôn trả về một kết quả duy nhất
- getall() luôn trả về danh sách tất cả các kết quả được trích xuất
• extract() và extract_first()
Trang 24- Với extract() không phải lúc nào cũng rõ ràng nếu kết quả là 1 danh sách hoặc không phải 1 danh sách để có được một kết quả duy nhất extract() hoặc extract_first() nên được gọi
b Xpath
• Định nghĩa
Xpath (XML Path Language) là viết tắt của ngôn ngữ đường dẫn XSLT Sử dụng syntax “path like” xác định và navigate nodes trong XML Xpath có chưa hơn 200 hàm dựng sẵn, là một yếu tố chính trong tiêu chuẩn XSLT
• Mục đích sử dụng:
Xpath được thiết kế ra với mục đích giúp cho ứng dụng có thể di chuyển bên trong XML document và truy xuất các giá trị cũng như thuộc tính của các elements Nó được sử dụng khá phổ biến để duyệt và tìm kiếm các thuộc tính hay các phần tử cụ thể với các pattern phù hợp trong một file XML Có thể tạo một truy vấn XPath để tìm các bảng cụ thể, tìm đến các hàng cụ thể, hoặc tìm các ô của một bảng có các thuộc tính nhất định Đây cũng là một cách để chia nhỏ nội dung trong một trang web cụ thể nào đó
• Cách lấy Xpath
Cách lấy Xpath trên trình duyệt: Chuột phải nhấn “Kiểm tra/Inspect” ® Chọn phần tử cần lấy ® “Copy Xpath”
• Sử dụng Xpath trong Scrapy
Bảng 2.2: Sử dụng Xpath trong Scrapy
None
- exists"]/text()').get() is None
- response.xpath('//div[@id="not-exists"]/text()').get(default='not-found')
response.xpath('//div[@id="not Trả về none nếu không tìm thấy phần tử nào
/text() - response.xpath('//span/text()').get()
- Selector(text=body).xpath('//span/text()').get()
- Trả về văn bản bên trong thẻ
Trang 25SelectorList
- response.css('img').xpath('@src').getall() - Trả về 1 danh
sách từ thuộc tính src
- [img.attrib['src'] for img in response.css('img')] - Truy vấn các
thuộc tính bằng attrib của a
- response.css('img').attrib['src'] - Trả về thuộc
tính phần tử đầu tiên
c Scrapy Framework
Scrapy là một Framework ứng dụng thu thập dữ liệu từ các trang web và trích xuất
dữ liệu có cấu trúc, các ứng dụng hữu ích: khai thác dữ liệu, xử lý thông tin hoặc lưu trữ lịch sử
Scrapy ban đầu được thiết kế cho việc rút trích web, nó cũng có thể được sử dụng
để trích xuất dữ liệu bằng cách sử dụng các API (dịch vụ web của Amazon Associates) hoặc như một trình thu thập thông tin web với mục đích chung
Trang 26• Kiến trúc Scrapy:
Hình 2.2: Thành phần chính và cách thức hoạt động của Scrapy Framework [7]
Thành phần gồm 5 thành phần chính như trên:
- Scheduler: như một hàng đợi (queue), sắp xếp thứ tự các URL cần tải
- Downloader: thực hiện tải dữ liệu từ trang web, quản lý các lỗi khi tải, chống trùng lắm và cung cấp cho Engine
- Spiders: là Class được viết bởi người dùng, nhiệm vụ bóc tách dữ liệu thành các mục (item) và các yêu cầu (request) cần thiết và tạo các url mới để nạp lại cho scheduler qua engine
- Item Pipeline: dữ liệu được bóc tách từ spiders sẽ đưa đến đây, Item pipeline có nhiệm vụ xử lý chúng và lưu vào cơ sở dữ liệu
- Scrapy Engine: kiểm soát luồng dữ liệu giữa tất cả các thành phần của hệ thống
và kích hoạt các sự kiện khi một số hành động xảy ra
- Middlewares: thành phần nằm giữa Engine với các thành phần khác, có mục đích giúp người dùng có thể tùy biến, mở rộng khả năng xử lý cho các thành phần:
+ Spider middlewares: thành phần nằm giữa Eninge và Spiders, xử lý các response đầu vào của Spiders và đầu ra (Item và các URL mới)
Trang 27+ Downloader middlewares: nằm giữa Engine và Downloader, xử lý các request được đẩy vào từ Engine và các response được tạo ra từ Downloader
+ Scheduler middlewares: nằm giữa Engine và Scheduler để xử lý những requests giữa hai thành phần
• Luồng dữ liệu
- Bước 1: Một website bắt đầu được rút trích, Engine xác định tên miền, tìm vị trí của Spider đó và yêu cầu spider đó tìm các URL xuất phát từ (start_url) đầu tiên, tạo thành một yêu cầu (request) lưu trong Scheduler
- Bước 2: Engine nhận danh sách các URL từ Spider, gửi Scheduler để sắp xếp
- Bước 3: Engine yêu cầu danh sách cách URL tiếp theo từ Scheduler
- Bước 4: Engine nhận danh sách các URL tiếp theo từ Scheduler vào gửi đến Downloader (requests)
- Bước 5: Downloader nhận request và thực hiện việc tải trang, sau khi tải xong
sẽ tạo một response và gửi lại Engine
- Bước 6: Respone từ Dowloader sẽ được Engine đẩy qua Spiders để xử lý
- Bước 7: Tại Spiders, khi nhận được response, chúng bóc tách thông tin từ response và những URL có khả năng để crawl và đẩy lại cho Engine (requests)
- Bước 8: Engine nhận được kết quả từ Spiders sẽ thực hiện 2 công việc: đẩy những dữ liệu đã được bóc tách tới Item Pipeline để xử lý và lưu vào Databases, đẩy những URL mới (requests) mới về Scheduler và quay về bước 3
• Cài đặt Scrapy
Thư viện Scrapy được viết bằng Python, để sử dụng chúng ta cần cài đặt thông qua pip (hệ thống quản lý package), Anacoda hoặc Minicoda (hệ thống quản lý các thư viện mã nguồn mở và môi trường làm việc) bằng lệnh:
Pip install scrapy
#Hoặc Conda install –c scrapinghub scrapy
Trang 28- scrapy startproject <Tên project>
Hình 2.3: Cấu trúc của một Scrapy project
Người lập trình có thể viết mã nguồn rút trích dữ liệu từ các trang web khác nhau Các file đó được đặt trong thư mục spiders của project, tại đây chúng ta sử dụng Xpath, Css Selector,… rút trích dữ liệu của trang web Ta cung cấp cho Scrapy một URL để bắt đầu rút trích thông tin, sau đó có thể chỉ định các ràng buộc về số lượng URL chúng ta muốn rút trích Tuyệt nhiên, trong khoảng thời giờ nhất định Scrapy có số lượng yêu cầu từ một địa chỉ IP quá cao, có thể địa chỉ IP sẽ bị chặn trong một thời gian Nếu xảy
ra trường hợp chặn IP, tại file setting.py chúng ta đặt lại các thông số phù hợp hơn
CONCURRENT_REQUESTS_PER_IP xuống một số nhỏ hơn Một tùy chọn khác là làm tăng thời gian giữa các yêu cầu được gửi: thay đổi thông số DOWNLOAD_DELAY sang một giá trị lớn hơn chẳng hạn
d Một số phương thức
Trong khi thực hiện rút trích dữ liệu từ web người lập trình có thể dùng một số phương thức tích hợp để thuận tiện cho việc xử lý chuỗi dữ liệu Một số phương thức
Trang 29được sử dụng chính trong bài được liệt kê bên dưới, ngoài ra có còn rất nhiều phương thức khác mà lập trình viên có thể tham khảo nhiều hơn tại [13]
• replace(): dùng để thay thế một cụm từ được chỉ định hoặc cụm từ cụ thể
- Syntax của replace(): str.replace(old, new [, count])
- Phương thức này có tối đa 3 tham số:
+ old: chuỗi cũ muốn thay thế
+ new: chuỗi con mới sẽ thay thế chuỗi cũ
+ count (tùy chọn): số lần muốn thay thế chuỗi cũ bằng chuỗi mới
Nếu count không được chỉ định, phương thức sẽ thay thế tất cả các lần xuất hiện của chuỗi con cũ bằng chuỗi con mới Trả về giá trị là một bản sao của chuỗi trong đó chuỗi cũ được thay thế bằng chuỗi mới Chuỗi ban đầu không thay đổi
Discout = item.css( "a > p >
span.sale-tag.sale-tag-square::text").get()
if Discout is not None:
Discout1 = Discout.replace(u'\n', '').replace(u'-',
Trang 30Hình 2.4: Mô hình ASP.NET
b Kiến trúc
Vào thời điểm ASP.NET MVC được công bố vào năm 2007, mẫu MVC đã trở thành một trong những cách phổ biến nhất để xây dựng, các Framework web MVC là một mẫu thiết kế chuẩn mà nhiều nhà phát triển đã quen thuộc Một số loại ứng dụng web sẽ được hưởng lợi từ khuôn khổ MVC Mẫu kiến trúc MVC phân tách một ứng dụng thành ba thành phần chính: Model, View và Controller
Hình 2.5: Kiến trúc MVC
ASP.NET MVC cung cấp thay thế cho ASP.NET Web Forms để tạo ra các ứng dụng web ASP.NET MVC là một Framework trình bày nhẹ, có khả năng kiểm thử cao (các ứng dụng dựa trên Web Forms) được tích hợp với các tính năng ASP.NET hiện có, chẳng hạn như các trang chính và xác thực dựa trên thành viên
Trang 31• Sự tương tác giữa Model, View và Controller
Model: là các phần của ứng dụng thực hiện logic cho dữ liệu của ứng dụng Thông thường, các Model truy xuất và lưu trữ trạng thái mô hình trong một cơ sở dữ liệu Trong các ứng dụng nhỏ, mô hình thường là một sự tách biệt về khái niệm thay vì một sự tách biệt về mặt vật lý Ví dụ, nếu ứng dụng chỉ đọc một tập dữ liệu và gửi nó đến View, ứng dụng không có một lớp mô hình vật lý và các lớp liên kết Trong trường hợp đó, tập dữ liệu có vai trò của một đối tượng mô hình
View: là các thành phần hiển thị giao diện người dùng của ứng dụng (UI) Thông thường, giao diện người dùng này được tạo từ dữ liệu mô hình
Controller: là các thành phần xử lý tương tác của người dùng, làm việc với Model
và cuối cùng chọn View để hiển thị giao diện người dùng Trong một ứng dụng MVC, View chỉ hiển thị thông tin; Controller xử lý và phản hồi đầu vào và tương tác của người dùng
c Cơ chế hoạt động
Hình dưới đây minh họa luồng yêu cầu của người dùng trong ASP.NET MVC
Hình 2.6: Yêu cầu và phản hồi trong kiến trúc MVC
Theo hình trên, khi người dùng nhập URL vào trình duyệt, nó sẽ đi đến máy chủ
và gọi Controller thích hợp Sau đó, Controller thực hiện các câu code trong Controllers sau đó sử dụng View và Model phù hợp và tạo ra phản hồi và gửi lại cho người dùng
Trang 32• Khung ASP.NET MVC cung cấp những ưu điểm sau:
- Giúp dễ dàng quản lý sự phức tạp bằng cách chia ứng dụng thành Model, View và Controller
- Không sử dụng dạng xem trạng thái hoặc máy chủ, điều này giúp MVC trở thành Framework lý tưởng cho các nhà phát triển muốn kiểm soát hoàn toàn hành vi của một ứng dụng
- Hoạt động tốt cho các ứng dụng web được hỗ trợ bởi các nhóm lớn các nhà phát triển và cho các nhà thiết kế web, những người cần một mức độ kiểm soát cao đối với hành vi ứng dụng
• Ưu điểm của một ứng dụng web dựa trên biểu mẫu web
- Hỗ trợ một mô hình sự kiện duy trì trạng thái trên HTTP, mang lại lợi ích cho phát triển ứng dụng web theo dòng kinh doanh Ứng dụng dựa trên biểu mẫu web cung cấp hàng nghìn sự kiện được hỗ trợ trong hàng trăm điều khiển máy chủ
- Sử dụng mẫu trình điều khiển trang để thêm chức năng cho các trang riêng lẻ, trạng thái xem trên các biểu mẫu dựa trên máy chủ, có thể làm cho việc quản lý thông tin trạng thái dễ dàng hơn
- Hoạt động tốt cho các nhóm nhỏ các nhà phát triển và thiết kế web, những người muốn tận dụng lợi thế của số lượng lớn các thành phần có sẵn để phát triển ứng dụng nhanh chóng
d Vòng đời
Là một loạt các bước hoặc sự kiện được sử dụng để xử lý một số loại yêu cầu hoặc thay đổi trạng thái ứng dụng Bạn có thể đã quen thuộc với các vòng đời khung công tác khác nhau, khái niệm này không phải là duy nhất đối với MVC
MVC có hai vòng đời:
+ The application life cycle
+ The request life cycle
Trang 33Hình 2.7: Vòng đời của ASP.NET MVC [10]
• The Application Life Cycle:
- Vòng đời của ứng dụng đề cập đến thời gian mà quá trình ứng dụng thực sự bắt đầu chạy IIS cho đến khi nó dừng lại Điều này được đánh dấu bằng các sự kiện bắt đầu và kết thúc của ứng dụng trong tệp khởi động của ứng dụng
• The Request Life Cycle
- Là chuỗi các sự kiện xảy ra mỗi khi một yêu cầu HTTP được xử lý bởi ứng dụng Điểm vào cho mỗi ứng dụng MVC bắt đầu bằng định tuyến Sau khi ASP.NET đã nhận được một yêu cầu, nó tìm ra cách nó sẽ được xử lý thông qua URL Routing Module
- Model là các thành phần NET có thể nối vào vòng đời của ứng dụng và thêm chức năng Model định tuyến chịu trách nhiệm đối sánh URL đến với các tuyến mà chúng tôi xác định trong ứng dụng của mình Tất cả các tuyến có một trình xử lý tuyến đường liên kết với chúng và đây là điểm vào MVC Framework
Hình 2.8: Routing của ASP.NET MVC [8]
MVC Framework xử lý việc chuyển đổi dữ liệu tuyến đường thành một bộ điều khiển cụ thể có thể xử lý các yêu cầu Sau khi Controller đã được tạo, bước chính tiếp theo là Action Execution - một thành phần được gọi là hành động invoker tìm và chọn
Trang 34một phương thức Action thích hợp để gọi trình điều khiển Sau khi kết quả hành động
đã được chuẩn bị, giai đoạn tiếp theo sẽ kích hoạt Result Execution View Engine sẽ được gọi và nó chịu trách nhiệm cho việc tìm kiếm và làm giảm tầm nhìn Nếu kết quả không phải là một View, kết quả hành động sẽ tự thực thi Kết quả thực hiện này là những gì tạo ra một phản ứng thực tế cho yêu cầu HTTP ban đầu
e ASP.NET MVC ROUTING
Định tuyến là quá trình chỉ đạo một yêu cầu HTTP đến một bộ điều khiển và chức năng của quá trình xử lý này được thực hiện trong System.Web.Routing Người dùng sẽ xác định các route và các route đó sẽ ánh xạ các URL đến một hành động điều khiển cụ thể Một hành động chỉ là một phương thức trên bộ điều khiển Nó cũng có thể chọn các tham số trong URL đó và chuyển chúng thành các tham số vào phương thức Vì vậy, route này được xác định trong ứng dụng là route mặc định
Khi bạn thấy một URL đến dưới dạng (something)/(something)/(something), thì phần đầu tiên là tên là Controller phần thứ hai là tên Action và phần thứ ba là ID parameter Ứng dụng MVC sử dụng hệ thống định tuyến ASP.NET, quyết định cách ánh xạ URL tới Controllers và Action Khi Visual Studio tạo dự án MVC, nó thêm một
- WinForms Controls: Cung cấp các control cho WinForms
- ASP.NET Controls: Cung cấp các control cho WebForms
- WPF Controls: Cung cấp các control cho WPF
- Silverlight Controls: Cung cấp các control cho Silverlight
Trang 35- XtraCharts: Control cung cấp các loại biểu đồ
- XtraReports: Cung cấp các control tạo báo cáo
- XPO: Cung cấp môi trường làm việc với database
- XAF: Một công nghệ mới giúp việc phát triển phần mềm một cách nhanh chóng Trong đề tài, nhóm dùng XAF và XPO của DevExpress để xây dựng một chương trình quản lí dữ liệu một cách nhanh chóng, hiệu quả
b Cấu trúc của Devexpress XAF
Các ứng dụng được xây dựng với eXpressApp Framework bao gồm một số khối chức năng Sơ đồ dưới đây cho thấy các khối cơ bản, cho biết khi nào và cách các khối này được tạo và cuối cùng, cho thấy các khu vực nơi có thể mở rộng các ứng dụng
Hình 2.10: Kiến trúc XAF [10]
• ORM Layer
Khi xây dựng một ứng dụng, sẽ phải đối phó với dữ liệu Nếu đang sử dụng eXpressApp Framework, sẽ không thực sự phải tạo cơ sở dữ liệu trong SQL, tùy chỉnh bảng, trường, Thay vào đó sẽ sử dụng một trong các công cụ ORM được hỗ trợ - Entity Framework (EF) hoặc eXpressPersistent Objects (XPO) Các công cụ ORM cho phép
mô tả dữ liệu cho ứng dụng bằng cách sử dụng các cấu trúc mã quen thuộc - các lớp, thuộc tính và các thuộc tính của chúng Để tạo một bảng dữ liệu, cần khai báo một lớp Các thuộc tính công khai của nó sẽ định nghĩa các trường dữ liệu trong bảng Tất nhiên, có thể tạo bao nhiêu bảng tùy thích và xác định mối quan hệ giữa chúng với các
Trang 36thuộc tính được thiết kế đặc biệt Lưu ý không phải làm nhiều việc thêm khi xây dựng các lớp này Chỉ cần lấy chúng từ các lớp thích hợp và cung cấp một vài thuộc tính DevExpress cung cấp Business Class Library được mô tả trong phần sau Thư viện này chứa một số lớp sẵn sàng sử dụng (cho cả EF và XPO) có thể tích hợp vào các ứng dụng của mình
• Business Class Library
Giao diện mà bạn có thể cần phải triển khai trong các lớp dữ liệu của mình Một
số hệ thống con của eXpressApp Framework yêu cầu dữ liệu tuân thủ các quy tắc cụ thể Ví dụ, hệ thống phụ bảo mật yêu cầu lớp User để thực hiện giao diện IUser Vì vậy, nếu bạn đã quyết định phát triển lớp của riêng mình để đại diện cho người dùng ứng dụng, bạn cũng sẽ phải triển khai giao diện này
Hình 2.11: Một số lớp trong Business Class Library [10]
Trang 37tạo tự động; mỗi liên kết với một trường cụ thể Các phần tử giao diện người dùng được tạo tự động được sử dụng để hiển thị và quản lý dữ liệu được gọi là Views Trong XAF,
có ba loại Views:
- List View: danh sách chế độ xem danh sách là các Module gốc của ứng dụng Thông thường, đây là những lưới hiển thị các dữ liệu có trong cơ sở dữ liệu
Hình 2.12: Listview của DevExpress
- Detail View: là chế độ View hiển thị chi tiết dữ liệu
Hình 2.13: Detail View của DevExpress
- Dashboard View:
Trang 38Hình 2.14: Dashboard của DevExpress
Các View hiển thị các biểu đồ ứng với mỗi bảng dữ liệu hoặc kết hợp những điều kiện mà mình muốn biểu đồ hiển thị
- XAF Application Architecture: một ứng dụng khách điển hình bao gồm ba lớp logic, như được hiển thị bên dưới
Trang 39Data Access Layer: Với XAF, bạn có thể chọn từ hai thư viện ORM làm lớp truy cập dữ liệu (DAL): Entity Framework (EF) từ Microsoft hoặc eXpress Persistent Objects (XPO) từ DevExpress Mặc dù thư viện ORM đầu tiên có thể đã quen thuộc, thư viện DevExpress ORM đã thực sự được phát triển trước EF, và mạnh mẽ và dễ sử dụng, dựa trên phản hồi từ nhiều khách hàng của chúng tôi Nó cũng hỗ trợ hơn một tá
cơ sở dữ liệu phổ biến, làm cho nó trở thành một lựa chọn tốt cho EF Về mặt kỹ thuật, DAL bao gồm các lớp ứng dụng cụ thể và hệ thống liên tục được ánh xạ tới các bảng cơ
sở dữ liệu, và do đó đại diện cho mô hình dữ liệu cộng với mã ORM quản lý tất cả các nhiệm vụ liên tục Mặc dù không có giao tiếp trực tiếp nào được phép giữa các lớp DAL
và UI, nhưng mô hình dữ liệu cuối cùng có thể là cơ sở cho màn hình dữ liệu giao diện người dùng
Business Logic Layer: Lớp nghiệp vụ (BL) bao gồm mã do người dùng xác định
và mã hệ thống tạo thành hành vi mong muốn của ứng dụng của bạn (ví dụ, logic nghiệp
vụ cập nhật giao diện người dùng hoặc cung cấp tương tác người dùng) Thông thường, logic nghiệp vụ này được đặt trong các lớp liên tục từ DAL hoặc bên trong các Controller
Presentation Layer: Tùy thuộc vào nền tảng đích, một ứng dụng XAF sử dụng các thành phần DevExpress Windows Forms hoặc ASP.NET Web Forms cho lớp UI Tất nhiên, có thể sử dụng bất kỳ điều khiển tiêu chuẩn hoặc bên thứ ba nào khác để xây dựng các phần tử giao diện người dùng ứng dụng của bạn
c eXpand Framework
eXpand Framework là phần mở rộng của XAF và hoạt động trong giấy phép của Microsoft (Ms-PL) Mặc dù XAF không phải là một sản phẩm nguồn mở nhưng nó có thể được mua trực tiếp từ DevExpress Ý tưởng chính đằng sau eXpand là cung cấp càng nhiều tính năng càng tốt cho người phát triển người dùng doanh nghiệp thông qua một cách tiếp cận khai báo (cấu hình các tệp thay vì viết mã) Vui lòng xem qua từng mô tả ngắn gọn sau đây và tìm hiểu cách eXpand có thể giúp bạn hoàn thành các nhiệm vụ phát triển phức tạp của mình với lập trình khai báo dễ dàng
d Mục đích sử dụng Devexpress
DevExpress là bộ control rất hữu ích cho việc thiết kế và phát triển phần mềm,
Trang 40website, đối với NET nó thay thế hầu hết các control của bộ visual studio, nó không những giúp thiết kế được form đẹp hơn mà còn giúp cho công việc lập trình nhẹ nhàng hơn, nhất là trong việc tương tác dữ liệu
DevExpress đã xây dựng dùm chúng ta giao diện người dùng cũng như các chức năng đơn giản như thêm xóa sửa, ngoài ra Devexpress còn phân loại tìm kiếm,… Chính
vì sự xây dựng sẵn sẽ làm cho người code đỡ mất thời gian để build lại thay vào đó sẽ dành thời gian vào các logic nghiệp vụ của một ứng dụng
e Mục đích sử dụng eXpand
Vì eXpand cung cấp một số chức năng dựa vào nền tảng Devexperss, nó có rất nhiều chức năng nhưng trong báo cáo này nhóm chỉ sử dụng eXpand Framework để sử dụng chức năng Import bằng file Excel vừa nhanh vừa gọn vừa không mất thời gian ngồi code lại từ đầu
2.2.4 SQL Server Integration Services
a Định nghĩa
SQL Integration Services là một nền tảng để xây dựng các giải pháp chuyển đổi
dữ liệu và tích hợp dữ liệu từ các nguồn dữ liệu khác nhau để tập trung dữ liệu từ nhiều nguồn khác nhau, có thể kết nối đến các data source khác nhau như Oracle, SQL Server, MySQL hay trong file Excel, txt file hay XML file và sẽ tập trung tất cả dữ liệu vào một chỗ để phân tích
b Cấu trúc của SSIS