Ngô Thanh Hùng đã thực hiện đề tài “Nghiên cứu xây dựng công cụ đo lường và phân tích tương tác người dùng trên website”, với mục tiêu xây dựng công cụ thực hiện được việc đo lường và ph
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
ĐỖ THỊ HƯƠNG LAN
NGHIÊN CỨU XÂY DỰNG CÔNG CỤ
ĐO LƯỜNG VÀ PHÂN TÍCH TƯƠNG TÁC
NGƯỜI DÙNG TRÊN WEBSITE
LUẬN VĂN THẠC SĨ, KHÓA LUẬN CAO HỌC
NGÀNH Công Nghệ Thông Tin
Trang 2Tôi xin cam đoan: Luận văn tốt nghiệp với Đề tài “Nghiên cứu xây dựng công
cụ đo lường và phân tích tương tác người dùng trên website” là công trình nghiên cứu của tôi, dưới sự hướng dẫn của TS Đàm Quang Hồng Hải và TS Ngô Thanh Hùng
Các trích dẫn, tham khảo trong quá trình nghiên cứu đều được trích dẫn đầy đủ, ghi rõ nguồn gốc
Tôi xin chịu hoàn toàn trách nhiệm nếu có bất kỳ sao chép không hợp lệ, vi phạm quy chế đào tạo
Người thực hiện
Đỗ Thị Hương Lan
Trang 3Trong quá trình hình thành ý tưởng nghiên cứu và phát triển đề tài, tác giả may mắn nhận được sự hỗ trợ từ Nhà Trường, Thầy Cô, Cơ quan và Gia đình
Tôi xin gửi lời cảm ơn chân thành đến Bộ môn/Khoa Khoa Học Và Kỹ Thuật Thông Tin, Phòng Đào Tạo SĐH, nhà trường Đại học Công Nghệ Thông Tin đã hỗ trợ và tạo điều kiện, giúp đỡ tôi trong suốt quá trình học tập và nghiên cứu tại trường
Tôi xin được gửi lời tri ân sâu sắc đến 2 người Thầy đáng kính vì sự hướng dẫn, chỉ bảo tận tình: TS Đàm Quang Hồng Hải và TS Ngô Thanh Hùng
Qua đây, tôi cũng xin cảm ơn sự hỗ trợ từ phía đơn vị mà tác giả đang công tác – Công ty TNHH MTV Ứng dụng CNTT Hòn Rạng
Xin gửi lời cảm ơn đến các anh chị, bạn bè đã giúp đỡ và chia sẻ kiến thức trong suốt quá trình học tập cũng như thực hiện Luận văn
Xin gửi lời cảm ơn đến Bố Mẹ và gia đình - nguồn động viên to lớn và chỗ dựa vững chắc cho tôi vượt qua khó khăn để hoàn thành Luận văn
Tác giả
Đỗ Thị Hương Lan
Trang 4MỤC LỤC
MỤC LỤC 5
DANH MỤC CÁC BẢNG BIỂU 10
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ 11
MỞ ĐẦU 13
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI 15
1.1 Tên đề tài 15
1.2 Từ khóa 15
1.3 Mục tiêu của đề tài 15
1.4 Đối tượng áp dụng, phạm vi nghiên cứu của đề tài 16
1.5 Nội dung và phương pháp nghiên cứu 17
1.5.1 Nội dung 1 17
1.5.2 Nội dung 2 17
1.5.3 Nội dung 3 17
1.5.4 Nội dung 4 17
1.5.5 Nội dung 5 17
1.6 Tính khoa học, tính mới của đề tài 18
1.7 Cấu trúc của luận văn 19
CHƯƠNG 2 TỔNG QUAN VẤN ĐỀ NGHIÊN CỨU VÀ KIẾN THỨC NỀN TẢNG 20 2.1 Khảo sát hiện trạng 20
2.1.1 Tình hình nghiên cứu ngoài nước 20
2.1.2 Tình hình nghiên cứu trong nước 22
2.2 Kiến thức nền tảng 22
2.2.1 Tổng quan về phân tích web 22
Trang 52.2.2 Kỹ thuật phân tích on-site và off-site 22
2.2.3 Các cơ chế thu thập dữ liệu tương tác 23
2.2.3.1 Sử dụng các file log 23
2.2.3.2 Cơ chế page tagging 26
2.2.4 Các thông số đánh giá 26
2.2.4.1 Các metric cơ bản 27
2.2.4.2 Các metric đặc điểm truy cập 29
2.2.4.3 Các metric đặc điểm người truy cập 30
2.2.5 Trực quan hóa dữ liệu tương tác 31
2.3 Các kỹ thuật, công nghệ được sử dụng 31
2.3.1 Dịch vụ Windows - Windows service 31
2.3.1.1 Tổng quan về Windows service 31
2.3.1.2 Windows service trong Visual Studio 32
2.3.1.3 Điều khiển Windows service 34
2.3.2 WCF – Windows Communication Foundation 36
2.3.2.1 Tổng quan về WCF 36
2.3.2.2 WCF service trong Microsoft Visual Studio 37
2.3.3 C# và ASP.NET MVC 39
2.3.4 MongoDB và SQL 39
2.3.4.1 SQL Server – Cơ sở dữ liệu quan hệ 39
2.3.4.2 MongoDB – Cơ sở dữ liệu không quan hệ 40
2.3.5 JavaScript và AJAX 42
2.3.5.1 JavaScript 42
2.3.5.2 AJAX 44
2.4 Kết chương 46
Trang 6CHƯƠNG 3 Ý TƯỞNG CÔNG CỤ ĐO LƯỜNG VÀ PHÂN TÍCH TƯƠNG TÁC
NGƯỜI DÙNG TRÊN WEBSITE 47
3.1 Các vấn đề đặt ra 47
3.2 Thu thập dữ liệu tương tác người dùng trên website 47
3.2.1 Dữ liệu file log của web server 47
3.2.2 Dữ liệu sự kiện tương tác trên website 49
3.2.2.1 Dữ liệu thông tin chung 49
3.2.2.2 Dữ liệu riêng cho các sự kiện 52
3.3 Phân tích, xử lý dữ liệu thu thập 56
3.3.1 Dữ liệu được dùng để xử lý 56
3.3.2 Xác định trình duyệt, nền tảng thiết bị và hệ điều hành 60
3.3.3 Phân biệt người dùng (visitor) và phiên truy cập (visit) 64
3.3.4 Tính toán các thông số chung 67
3.3.4.1 Số page view 67
3.3.4.2 Số hits 69
3.3.4.3 Số visitor (người truy cập duy nhất) 70
3.3.4.4 Số visit (phiên làm việc/lượt truy cập) 71
3.3.4.5 Thời gian trung bình của visit 73
3.3.4.6 Số bounced visit (visit đơn trang) 73
3.3.5 Các thông số bổ sung về người truy cập (visitor) 74
3.3.5.1 Phân loại visitor 74
3.3.5.2 Số visit trung bình của visitor 75
3.3.6 Các thông số bổ sung về trang web 75
3.3.6.1 Số page view của trang 76
3.3.6.2 Số visit của trang web 76
Trang 73.3.6.3 Thời gian trên trang web 77
3.3.6.4 Phân loại trang web trong một visit 78
3.3.7 Các thông số bổ sung về trang tham chiếu (Referrer) 79
3.3.7.1 Truy cập trực tiếp - Direct entry 79
3.3.7.2 Truy cập gián tiếp - Có referrer 80
3.3.8 Các thông số bổ sung về một số đối tượng khác 82
3.4 Trực quan hóa dữ liệu phân tích 84
3.5 Gom nhóm, tổng hợp dữ liệu phân tích của các website thuộc hệ website 85 3.6 Kết chương 86
CHƯƠNG 4 HIỆN THỰC CÔNG CỤ ĐO LƯỜNG VÀ PHÂN TÍCH TƯƠNG TÁC NGƯỜI DÙNG TRÊN WEBSITE 87
4.1 Đặc tả yêu cầu công cụ 87
4.1.1 Mục đích xây dựng công cụ 87
4.1.2 Yêu cầu của công cụ 87
4.1.2.1 Yêu cầu chức năng 87
4.1.2.2 Yêu cầu kỹ thuật 87
4.1.2.3 Yêu cầu về nền tảng và thiết bị 87
4.2 Thiết kế công cụ 88
4.2.1 Các thành phần 88
4.2.1.1 Site Agent 88
4.2.1.2 Collector 92
4.2.2 Kết nối giữa Site Agent và Collector 94
4.2.3 Cơ sở dữ liệu 95
4.2.3.1 SQL Server 95
4.2.3.2 MongoDB Server 98
Trang 84.2.4 Lưu đồ hoạt động (Flow chart) 99
4.2.4.1 Đăng ký site mới 99
4.2.4.2 Gửi và nhận dữ liệu tương tác 100
4.2.4.3 Xử lý dữ liệu tương tác 102
4.3 Hình ảnh giao diện 104
4.3.1 Giao diện Đăng ký và quản lý Site Agent 104
4.3.2 Giao diện Trang báo cáo (Report) 105
4.4 Kết quả hoạt động của công cụ 106
4.4.1 Kết quả kiểm tra nhận diện trình duyệt và thiết bị 106
4.4.2 Kết quả thu thập và tính toán dữ liệu 107
4.4.3 So sánh kết quả với các công cụ khác 108
4.4.3.1 So sánh kết quả với Google Analytics với bộ dữ liệu 1 108
4.4.3.2 So sánh kết quả với Google Analytics (toàn thời gian) 110
4.5 Kết chương 111
CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 112
5.1 Thuận lợi và khó khăn 112
5.1.1 Thuận lợi 112
5.1.2 Khó khăn 112
5.2 Kết quả đạt được 113
5.3 Hướng phát triển 113
TÀI LIỆU THAM KHẢO 115
PHỤ LỤC A 119
PHỤ LỤC B 120
Trang 9DANH MỤC CÁC BẢNG BIỂU
Bảng 2.1 Các phương thức cung cấp bởi class ServiceBase 33
Bảng 3.1 Nhận dạng và phân tích các định dạng file log 48
Bảng 3.2 Các thông tin thu thập từ sự kiện trên website 55
Bảng 3.3 Tổng hợp một số từ khóa nhận diện trình duyệt [25] 61
Bảng 3.4 Một số từ khóa nhận biết nền tảng di động trên một số trình duyệt 62
Bảng 3.5 Các từ khóa nhận diện hệ điều hành client 64
Bảng 4.1 Các bảng lưu trữ thông số đánh giá đã tính toán trong SQL Server 97
Bảng 4.2 Kết quả nhận diện trình duyệt 106
Bảng 4.3 Kết quả nhận diện nền tảng thiết bị 107
Bảng 4.4 Tổng hợp kết quả thu thập dữ liệu trên website thử nghiệm 107
Bảng 4.5 Báo cáo kết quả từ dữ liệu thu thập trên website 108
Bảng 4.6 Cơ chế nhận diện Visitor của Google Analytics và Res Analytics 108
Bảng 4.7 Kết quả trả về của Google Analytics và Res Analytics với Bộ dữ liệu 1 110 Bảng 4.8 Kết quả trả về của 2 công cụ Google Analytics và Res Analytics trong thời gian từ 26/9/2017 đến 10/12/2017* 110
Trang 10DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 2.1 Tỉ lệ sử dụng công cụ phân tích trên toàn thế giới 20
Hình 2.2 Tỉ lệ sử dụng công cụ phân tích dữ liệu người dùng 21
Hình 2.3 Minh họa file log với định dạng W3C Extended 25
Hình 2.4 Minh họa file log với định dạng log của IIS 25
Hình 2.5 Minh họa file log với định dạng NCSA 26
Hình 2.6 Hình ảnh minh họa về Heatmap 31
Hình 2.7 Giao diện điều khiển dịch vụ của Services Control Manager 34
Hình 2.8 Giao diện điều khiển dịch vụ của Task Manager 35
Hình 2.9 Ví dụ minh họa sử dụng ServiceController để khởi động dịch vụ 35
Hình 2.10 Minh hoạt kết nối từ client đến dịch vụ WCF 37
Hình 2.11 Ví dụ tạo interface ServiceContract 38
Hình 2.12 Ví dụ hiện thực ServiceContract 38
Hình 2.13 Lưu trữ dữ liệu với các bảng trong cơ sở dữ liệu quan hệ [19] 40
Hình 2.14 Lưu trữ dữ liệu trong cơ sở dữ liệu không quan hệ [19] 41
Hình 2.15 Định dạng document trong MongoDB 42
Hình 2.16 Cách hoạt động của AJAX 44
Hình 3.1 Đoạn script bắt sự kiện click trên toàn trang web 52
Hình 3.2 Xác định tọa độ sự kiện click trong trường hợp có thanh cuộn 53
Hình 3.3 Đoạn script bắt sự kiện load một trang web 54
Hình 3.4 Minh họa các dòng log có và không có sa_ucookie của cùng một visit 59
Hình 3.5 Ví dụ về chuỗi User Agent của trình duyệt Chrome 60
Hình 3.6 Ví dụ về User Agent của trình duyệt SeaMonkey trên Windows [26] 61
Hình 3.7 Nhóm các trình duyệt được nhận diện trước 62
Hình 3.8 Nhóm các trình duyệt được nhận diện sau 62
Hình 3.9 Ví dụ minh họa kiểm tra 2 URL thuộc cùng một domain hay không 80
Hình 4.1 Mô hình tổng quan hoạt động của công cụ 88
Hình 4.2 Mô hình các thành phần của Site Agent 89
Hình 4.3 Các tác vụ chính được hỗ trợ bởi Site Agent Control 91
Hình 4.4 Mô hình các thành phần trong Collector 92
Trang 11Hình 4.5 Minh họa chức năng phân tích dòng log của LogParser Module 93
Hình 4.6 Các tác vụ Site Agent có thể sử dụng của dịch vụ WCF cho log file 95
Hình 4.7 Các tác vụ có thể sử dụng từ javascript của dịch vụ WCF cho sự kiện website 95
Hình 4.8 Cấu trúc bảng dữ liệu thông tin người dùng trên SQL Server 96
Hình 4.9 Cấu trúc bảng dữ liệu thông tin các site trên SQL Server 96
Hình 4.10 Cấu trúc cơ sơ dữ liệu của ứng dụng trên SQL Server 98
Hình 4.11 Cấu trúc cơ sở dữ liệu lưu trữ dữ liệu tương tác trên MongoDB 99
Hình 4.12 Lưu đồ xử lý hoạt động đăng ký site mới cần theo dõi 100
Hình 4.13 Lưu đồ xử lý hoạt động gửi log theo định kỳ cho trước 101
Hình 4.14 Lưu đồ xử lý hoạt động gửi sự kiện tương tác trên website 102
Hình 4.15 Lưu đồ tính toán và lưu trữ các thông số đánh giá 103
Hình 4.16 Giao diện đăng nhập sử dụng Site Agent Control 104
Hình 4.17 Giao diện đăng ký site mới sử dụng Site Agent Control 104
Hình 4.18 Giao diện theo dõi cấu hình agent sử dụng Site Agent Control 105
Hình 4.19 Giao diện trang báo cáo (1) 105
Hình 4.20 Giao diện trang báo cáo (2) 106
Hình 4.21 Kết quả báo cáo tổng quan của Công cụ Res Analytics 108
Trang 12MỞ ĐẦU
Theo khảo sát mới nhất được công bố vào tháng 07 năm 2017 của NetCraft [1],
số lượng website đang hoạt động trên toàn thế giới là 1,767,964,429 Số lượng website ngày càng nhiều, cùng với sự đa dạng, phức tạp trong cách thiết kế, chức năng, và mục đích nội dung của mỗi website Số lượng càng lớn, sự đa dạng ngày càng phức tạp, khiến cho việc tiếp cận và giữ được số lượt xem từ người dùng trở thành thách thức Bài toán của tất cả các nhà phát triển website vẫn là việc thỏa mãn nhu cầu sử dụng của người dùng, nên việc quan sát và nắm bắt người dùng cần gì và
có những thao tác gì, xu hướng ra sao khi sử dụng website, hay nói cách khác là việc phân tích tương tác người dùng với website ngày càng được chú trọng
Nhận thấy được sự cần thiết của phân tích tương tác người dùng với website trong việc vận hành và tối ưu hóa hoạt động của website, tác giả dưới sự hướng dẫn của TS Đàm Quang Hồng Hải và TS Ngô Thanh Hùng đã thực hiện đề tài “Nghiên cứu xây dựng công cụ đo lường và phân tích tương tác người dùng trên website”, với mục tiêu xây dựng công cụ thực hiện được việc đo lường và phân tích những tương tác được người dùng trên website, từ đó áp dụng vào một số môi trường website cụ thể trong doanh nghiệp
Trong phạm vi đề tài này, các website được nghiên cứu tập trung là các website
sử dụng IIS Web server được phát triển bởi Microsoft Từ việc phân tích ưu điểm của các kỹ thuật web analytics, tác giả sử dụng phương pháp phân tích on-site (dựa trên chính dữ liệu của website) thay vì kỹ thuật off-site mang nặng tính nghiên cứu và khảo sát
Tác giả sử dụng cơ chế thu thập dữ liệu hybird (lai) kết hợp hai kỹ thuật chính
là sử dụng các file log và page tagging để thu thập dữ liệu tương tác từ website, dữ liệu sau đó được tính toán, tổng hợp và trực quan bằng con số, đồ thị, hình ảnh, heatmap… để người sử dụng theo dõi
Để hiện thực những chức năng trên, tác giả đã xây dựng một công cụ gồm nhiều thành phần hoạt động dựa trên cơ chế client-server để theo dõi, gửi và nhận dữ liệu
Trang 13tương tác, đồng thời trực quan hóa các dữ liệu đã được phân tích trên giao diện web của công cụ, hỗ trợ việc đo lường và phân tích tương tác người dùng trên website
Những đóng góp của đề tài:
- Ý nghĩa khoa học: phương pháp được sử dụng kết hợp nhiều phương pháp
riêng lẻ, khắc phục được phần nào khuyết điểm của từng phương pháp
- Ý nghĩa thực tiễn: xây dựng được công cụ đo lường và phân tích tương tác
người dùng trên website dựa trên phương pháp đã nghiên cứu
Cuối cùng, mặc dù có nhiều nỗ lực cố gắng song với thời gian nghiên cứu chưa thực sự dài nên trong Luận văn này không thể tránh khỏi những thiếu sót, khuyết điểm Tác giả mong nhận được sự thông cảm, chia sẻ cũng như những sự chỉ bảo tận tình, ý kiến đóng góp của Quý Thầy Cô và các bạn
TP Hồ Chí Minh, ngày 30 tháng 09 năm 2017
Tác giả
Trang 14CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
1.1 Tên đề tài
Tên Tiếng Việt: Nghiên cứu xây dựng công cụ đo lường và phân tích tương
tác người dùng trên Website
Tên Tiếng Anh: Researching and developing a measuring and analytical
tool about user interaction on website
1.2 Từ khóa
Tương tác người dùng, đo lường, phân tích
1.3 Mục tiêu của đề tài
Bài toán đặt ra xuất phát từ nhu cầu thực tế nơi mà tác giả công tác - đơn vị chuyên xây dựng, vận hành Website cho các cá nhân, tổ chức trong và ngoài nước Khách hàng luôn quan tâm website của họ có thu hút, đáp ứng được nhu cầu thông tin và thỏa mãn nhu cầu người dùng hay không Vì vậy, việc theo dõi các thông tin
về truy cập, tương tác của người dùng trên website luôn được khách hàng chú tâm, bên cạnh việc đánh giá kết quả xây dựng và vận hành website
Tại đơn vị mà tác giả đang công tác, 100% khách hàng đều yêu cầu sử dụng Google Analytics cài đặt vào các dự án Website mà công ty tác giả thực hiện cho khách hàng Công cụ này phân tích lưu lượng, nguồn gốc truy cập của người dùng dựa trên phương pháp page tagging, với một số những ưu điểm sau: không cần can thiệp, thay đổi bộ mã nguồn của website, là công cụ miễn phí và được sử dụng rộng rãi trên toàn thế giới nói chung và Việt Nam nói riêng
Tuy nhiên, một vài vấn đề mà chúng tôi gặp phải được liệt kê dưới đây:
- Yêu cầu khách hàng phải biết cách cài đặt, và truy cập giao diện công cụ từ 1 website độc lập khác (www.analytics.google.com)
- Đối với những trình duyệt vô hiệu hóa, hoặc có lỗi với cookies, Javascript, công cụ tạo ra những số liệu thống kê không chính xác
Trang 15- Google Analytics hầu như chỉ theo dõi việc người dùng load trang, chứ không thu thập các dữ liệu về các hành động (click chọn, tắt trình duyệt, v.v…) – những thao tác liên quan đến việc tương tác
- Giao diện công cụ quá phức tạp, chưa thân thiện với đối tượng người dùng ít
am hiểu
Từ những vấn đề trên, tác giả đặt ra mục tiêu nghiên cứu và xây dựng một công
cụ đo lường và phân tích tương tác người dùng trên các website, triển khai cho đơn
vị công tác, với giao diện thân thiện và đáp ưng được nhu cầu đặc thù của khách hàng
Mục tiêu trên được chia nhỏ thành những mục tiêu sau đây:
- Nghiên cứu cơ chế thu thập và lưu trữ thông tin truy cập từ người dùng thông qua các dữ liệu từ file log và dữ liệu gửi về thông qua đoạn Javascript cài đặt trên website
- Nghiên cứu cơ chế lựa chọn, tổng hợp dữ liệu từ 2 nguồn dữ liệu trên để tính toán kết quả tối ưu nhất (dựa trên các điều kiện: lý tưởng, không lý tưởng)
- Nghiên cứu cơ chế lưu trữ và tính toán để giải quyết bài toán dữ liệu lớn, thường xuyên cập nhật
- Nghiên cứu cơ chế xây dựng heat map để trực quan hóa hành vi thao tác của người dùng trên website (click [nhấp chọn], tương ứng với các loại màn hình)
1.4 Đối tượng áp dụng, phạm vi nghiên cứu của đề tài
- Các ứng dụng website không quá phức tạp (các dự án website thực hiện bởi công ty TABWEB), đề tài tập trung vào các website sử dụng IIS Server của Microsoft
- Các tương tác người dùng đối với website
- NoSQL và SQL
- Heat map, file log, page tagging, hybrid
Trang 161.5 Nội dung và phương pháp nghiên cứu
1.5.1 Nội dung 1
Nội dung: Khảo sát, nghiên cứu các phương pháp và các vấn đề trở ngại về kỹ
thuật trong bài toán phân tích website, bài toán thu thập dữ liệu
Phương pháp: So sánh phương pháp phân tích on-site và off-site Nghiên cứu
và so sánh 2 ký thuật thu thập dữ liệu từ log file, và dữ liệu gửi từ đoạn mã Javascript
để tối ưu hóa việc thu thập và xử lý thông tin cơ bản của website, thông tin truy cập
1.5.2 Nội dung 2
Nội dung: Áp dụng phương pháp hybrid (lai) kết hợp ưu điểm từ 2 kỹ thuật chính
trong việc thu thập dữ liệu
Phương pháp: Sử dụng các gói tin HTTP Request, đoạn mã Javascript để thu
thập và xử lý thông tin cơ bản của website và thông tin truy cập
1.5.3 Nội dung 3
Nội dung: Nghiên cứu cơ chế lưu trữ và tính toán dữ liệu hoạt động của người
dùng đáp ứng bài toán dữ liệu lớn, và thường xuyên cập nhập
Phương pháp: Nghiên cứu sử dụng MongoDB và SQL Server để lưu trữ dữ
liệu gốc (raw) và dữ liệu tính toán
1.5.4 Nội dung 4
Nội dung: Kết hợp việc thu thập, lưu trữ và xử lý thông tin truy cập của người
dùng để xây dựng công cụ đo lường và phân tích tương tác người dùng
Phương pháp: Xây dựng công cụ tích hợp các nội dung nghiên cứu nêu trên 1.5.5 Nội dung 5
Nội dung: Áp dụng công cụ cho một số website để thử nghiệm tính năng và
đánh giá kết quả
Trang 17Phương pháp: khảo sát dựa trên một tập những website đang hoạt động để
đánh giá hiệu quả của công cụ
1.6 Tính khoa học, tính mới của đề tài
Vấn đề đo lường và phân tích tương tác người dùng trên các website đã được không ít người quan tâm, tuy nhiên những công bố, bài báo khoa học đề cập đến vấn
đề này khá ít, tuy nhiên một số công cụ đã được phát triển
Google Analytics [2] phân tích lưu lượng, nguồn gốc truy cập của người dùng dựa trên phương pháp page tagging
PIWIK [3], Open Web Analytics [4] là những công cụ có chức năng gần tương
tự so với Google Analytics, tuy nhiên các công cụ này chủ yếu sử dụng log file để thu thập dữ liệu, và bắt buộc người dùng cài đặt công cụ lên Website của mình
Các công cụ thường chỉ sử dụng một cơ chế thu thập dữ liệu dựa trên các file log hoặc page tagging, sẽ chịu ảnh hưởng bởi những khuyết điểm của cơ chế sử dụng như đòi hỏi quyền truy cập vào server ở cơ chế sử dụng file log hay trình duyệt vô hiệu hóa Javascript khi dùng page tagging Tuy nhiên, page tagging vẫn đang đóng vai trò chủ đạo trong việc thu thập dữ liệu với khả năng nhận biết những sự kiện không thể phát hiện thông qua các file log, do đó kèm theo một số cải tiến cho ra phương pháp hybrid kết hợp cùng file log sẽ khắc phục được phần nào nhược điểm của page tagging
Tính mới của đề tài là việc khai thác kỹ thuật thu thập dữ liệu hybrid kết hợp ưu điểm của hai kỹ thuật sử dụng file log và kỹ thuật page tagging, kết hợp sử dụng heatmap để trực quan hóa dữ liệu phân tích, giúp người quản trị có đầy đủ các thông tin về tương tác người dùng với website cũng như theo dõi được mối quan tâm của người dùng
Trong khuôn khổ của đề tài, tác giả muốn xây dựng một công cụ có thể đo lường
và phân tích tương tác người dùng trên các website mà đơn vị nơi tôi công tác đã thực
Trang 18hiện Qua đó giúp ích cho việc nghiên cứu, thay đổi và đưa ra những giải pháp để thu hút và làm hài lòng khách hàng
1.7 Cấu trúc của luận văn
Luận văn sẽ được Tác giả trình bày trong 5 chương
CHƯƠNG 1 GIỚI THIỆU ĐỀ TÀI
Chương 1 sẽ giới thiệu tổng quan về tên đề tài, mục tiêu nghiên cứu, đối tượng
áp dụng, phạm vi nghiên cứu cũng như nội dung, phương pháp nghiên cứu, tính khoa học, tính mới và cấu trúc của đề tài
CHƯƠNG 2 TỔNG QUAN VẤN ĐỀ NGHIÊN CỨU VÀ CÁC KIẾN THỨC NỀN TẢNG
Chương 2 sẽ giới thiệu các kiến thức về Đo lường và phân tích tương tác người dùng trên website, cũng như các công nghệ, giải thuật sẽ sử dụng để phát triển công
cụ Đồng thời Chương này ghi lại những điều mà tác giả tìm hiểu được từ việc phân tích, đánh giá các công trình nghiên cứu, công cụ liên quan mật thiết đến đề tài đã được công bố ở trong và ngoài nước
CHƯƠNG 3 CÔNG CỤ ĐO LƯỜNG VÀ PHÂN TÍCH TƯƠNG TÁC NGƯỜI DÙNG TRÊN WEBSITE
Chương 3 sẽ mô tả các yêu cầu, thành phần, kiến trúc, giải thuật của công cụ đo lường và phân tích tương tác người dùng trên website
CHƯƠNG 4 HIỆN THỰC CÔNG CỤ ĐO LƯỜNG VÀ PHÂN TÍCH TƯƠNG TÁC NGƯỜI DÙNG TRÊN WEBSITE
Chương 4 sẽ hiện thực các thiết kế từ chương 3 để đưa ra Giao diện và các thức hoạt động của công cụ đo lường và phân tích tương tác người dùng trên website
CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Chương 5 – Tổng kết lại những vấn đề đã được giải quyết và đưa ra những hướng phát triển tiếp theo cho sản phẩm
Trang 19CHƯƠNG 2 TỔNG QUAN VẤN ĐỀ NGHIÊN CỨU VÀ KIẾN THỨC NỀN TẢNG
2.1 Khảo sát hiện trạng
Với một đề tài – ý tưởng, một điều khá quan trọng đó chính là xem xét xem ý tưởng đó làm được gì, phục vụ cho ai cũng như xác định xem ý tưởng đó có từng được phát triển chưa chưa, nếu có những điều làm được và chưa được là gì, để từ đó người tác giả có thể tham khảo cũng như rút kinh nghiệm cho chính mình Vì thế, tác giả tiến hành cập nhật tình hình nghiên cứu trong nước và nước ngoài để đánh giá xem chúng tôi đang ở đâu, ý tưởng của chúng tôi có những điều gì chưa được và có
gì đặc biệt so với những ý tưởng có trước
2.1.1 Tình hình nghiên cứu ngoài nước
Công cụ đánh giá phân tích website được xem là phổ biến và mạnh mẽ nhất hiện nay là Google Analytics Tháng 1 năm 2013, theo báo cáo của BuiltWith, số website
sử dụng Google Analytics là 17,586,002 website, tương đương với 57,3% số lượng Website Đến thời điểm tháng 09 năm 2017, theo báo cáo của BuiltWith, Google Analytics vẫn là công cụ được sử dụng phổ biến nhất [5] Riêng với dữ liệu về visitor (người dùng), Google Analytics hoàn toàn vượt trội, chiếm hơn 60%
Hình 2.1 Tỉ lệ sử dụng công cụ phân tích trên toàn thế giới
Trang 20Hình 2.2 Tỉ lệ sử dụng công cụ phân tích dữ liệu người dùng Công cụ này phân tích lưu lượng, nguồn gốc truy cập của người dùng dựa trên phương pháp page tagging, cung cấp cho người sử dụng dịch vụ đoạn mã GA tracking
có dạng UA-000000-01 để cài đặt lên website Với đoạn mã GA tracking này, người
sử dụng dịch vụ đăng nhập hệ thống để xem các thông tin thống kê từ Google Analytics
PIWIK [3], Open Web Analytics [4] là những công cụ có chức năng gần tương
tự so với Google Analytics, tuy nhiên khi sử dụng các công cụ này người quản trị website buộc phải cài đặt toàn bộ công cụ lên website
Tuy nhiên, các công cụ nêu trên không đáp ứng được nhu cầu thời gian thực cũng như chưa thể biết người dùng làm chính xác những gì trên trang của mình Với khuynh hướng tracking hoạt động của người dùng, các ứng dụng như Heatmap.me, CrazyEgg… cho phép theo dõi người dùng đến trang nào, click vào những liên kết nào, thời gian trải nghiệm trên mỗi trang trong toàn bộ hành trình là bao nhiêu
Trang 212.1.2 Tình hình nghiên cứu trong nước
Ở Việt Nam tại thời điểm tìm hiểu của tác giả, hướng nghiên cứu xây dựng ứng dụng phân tích tương tác người dùng trên website hầu như còn khá mới Việc áp dụng chủ yếu dựa trên Google Analytics để phân tích và thống kê truy cập Theo báo cáo của BuiltWith, tới tháng 12 năm 2015 xấp xỉ 70% số lượng website Việt Nam đang
sử dụng Google Analytics [6]
Tại đơn vị mà tôi đang công tác, 100% khách hàng đều yêu cầu sử dụng Google Analytics cài đặt vào các dự án Website mà công ty tôi thực hiện cho khách hàng
2.2 Kiến thức nền tảng
2.2.1 Tổng quan về phân tích web
Theo định nghĩa của Web Analytics Asscociation [7], phân tích web (web analytics) là “phương pháp thu thập, đo lường, phân tích, tạo báo cáo về dữ liệu Internet nhằm mục đích am hiểu và tối ưu hóa việc sử dụng web” Phân tích web cố gắng đem lại những hiểu biết nhất định về những người sử dụng website và sử dụng thông tin đó để cải thiện tính hiệu quả của website
Các kỹ thuật web analytics thường được chia làm hai kỹ thuật là on-site và off-site
2.2.2 Kỹ thuật phân tích on-site và off-site
Kỹ thuật on-site thu thập dữ liệu trên chính website nhằm phân tích tương tác người dùng thông qua các thông số: số lượt truy cập, thời gian truy cập, đường dẫn v.v … (Kaushik, 2009) [8]
Trong khi đó, kỹ thuật off-site mang nặng tính nghiên cứu và khảo sát; thường được cung cấp bởi một tổ chức thứ ba với các dữ liệu bao gồm các khảo sát, báo cáo thị trường, thông tin so sánh v.v … Một số tổ chức đại diện cho kỹ thuật off-site: Alexa [9], Hitwise, Hitwise …
Để đạt được hiệu quả tốt nhất trong việc phân tích website, các nhà phát triển website thường kết hợp cả hai kỹ thuật on-site và off-site Tuy nhiên, với những
Trang 22website nhỏ hoặc không quá phức tạp, phương pháp on-site được sử dụng rộng rãi và trực quan hơn
Trong phạm vi đề tài, tác giả tập trung nghiên cứu kỹ thuật on-site, đưa ra báo cáo đánh giá dựa trên chính dữ liệu thu thập từ website Các nội dung còn lại trong nghiên cứu tập trung xoay quanh kỹ thuật on-site
2.2.3 Các cơ chế thu thập dữ liệu tương tác
Đối với việc phân tích website sử dụng phương pháp on-site, có hai kỹ thuật
chính trong việc thu thập dữ liệu là sử dụng logfile và page tagging
Sử dụng các file log
Phương pháp đầu tiên là phân tích file server log File log được tạo ra bởi
chính web server để ghi lại hoạt động và file HTTP header trong một định dạng văn bản Phương pháp này được xem là phương pháp truyền thống và cơ bản vì các web server thông thường đã tạo ra các file log dựa vào các dữ liệu thô đã có sẵn
Việc sử dụng log file để theo dõi các yêu cầu truy cập được sử dụng kể từ khi World Wide Web xuất hiện, sử dụng rộng rãi từ năm 1993 Một trong những nhà tiên phong của việc phân tích website dựa trên Log File - WebTrends, một công ty Phần Lan, đã tiến hành phân tích trang website sử dụng dữ liệu được thu thập từ file log Trong cùng năm đó, WebTrends đã tạo ra phần mềm thương mại phân tích trang website đầu tiên Năm 1995, Tiến sĩ Stephen Turner đã tạo ra Analog, phần mềm phân tích tệp tin miễn phí đầu tiên
File log của web server có chứa nhiều thông tin liên quan đến việc sử dụng website của người dùng, cụ thể là tần suất những trang web được yêu cầu hoặc sử dụng Các file này thực chất là các file dạng text gồm nhiều dòng khác nhau tương ứng với mỗi request gửi từ người dùng, do đó dữ liệu này có thể thu thập dễ dàng bằng việc đọc các file text thông thường
Trong phạm vi đề tài, tác giả lựa chọn nghiên cứu các file log áp dụng trên IIS Tuy nhiên do IIS Web server hỗ trợ nhiều định dạng file log, tương ứng là tập hợp
Trang 23những thông tin khác nhau, nên việc xác định được định dạng nào đang được sử dụng đóng vai trò rất quan trọng trong quá trình thu thập thông tin từ các file log
Để phân biệt được các định dạng log được sử dụng bởi IIS web server và trích xuất thông tin từ chúng được chính xác, ta cần nắm được đặc điểm đặc trưng chúng
Định dạng file log W3C Extended
Định dạng W3C Extended là định dạng ASCII có thể tùy chỉnh gồm nhiều thuộc tính lưu trữ các thông tin khác nhau Người quản trị có thể chọn tổ hợp các thuộc tính quan trọng cần theo dõi và giảm thiểu kích thước file log bằng cách bỏ đi những thuộc tính không cần thiết
Ở định dạng này, file log có chứa những dòng thông tin mô tả dữ liệu của nó
bắt đầu với ký tự # như thời gian (#Date), phiên bản (#Version), trong đó #Fields
bao gồm danh sách các thuộc tính trong mỗi dòng log là dòng quan trọng nhất
Do đặc điểm có thể tùy chỉnh các thuộc tính cần theo dõi, các dòng log trước và
sau khi tùy chỉnh có thể khác nhau về số lượng các thuộc tính của nó Dòng #Fields
được đặt phía trước các dòng log nhằm mục đích thông báo những thông tin nào được chứa trong những dòng log đó Khi có bất kỳ thay đổi nào trong số lượng các thuộc
tính này, dòng #Fields sẽ được cập nhật lại Mỗi dòng log chứa giá trị tương ứng với
các thuộc tính, các giá trị này ngăn cách với nhau bằng khoảng trắng
Hình bên dưới đưa ra một ví dụ minh họa đối với file log sử dụng định dạng W3C Extended với danh sách các thuộc tính được liệt kê ở dòng #Fields Trong các dòng log phía dưới, giá trị của các thuộc tính cách nhau bằng một khoảng trắng
Trang 24Hình 2.3 Minh họa file log với định dạng W3C Extended
Định dạng file log của IIS
Định dạng log IIS là định dạng cố định ở dạng ASCII, không thể tùy chỉnh các thuộc tính Trong định dạng này chỉ chứa các dòng log gồm 15 thuộc tính khác nhau phân cách với nhau bằng dấu phẩy (,) Danh sách các thuộc tính bao gồm: địa chỉ IP của client, username, ngày, giờ, dịch vụ, tên server, địa chỉ IP của server, thời gian thực hiện, số lượng byte client gửi, số lượng byte server gửi, status code của dịch vụ, status code của server, kiểu request, mục đích của hành động, các tham số
Hình bên dưới đưa ra một ví dụ minh họa đối với file log sử dụng định dạng log của IIS
Hình 2.4 Minh họa file log với định dạng log của IIS
Định dạng log NCSA
Tương tự như định dạng IIS, định dạng này ở dạng ASCII và có số thuộc tính theo dõi cố định không thể tùy chỉnh, tuy nhiên số lượng thuộc tính ít hơn với 7 thuộc tính ngăn cách với nhau bằng khoảng trắng Danh sách các thuộc tính của định dạng NCSA Common log file: Địa chỉ host ở xa, log name ở xa (luôn có giá trị là dấu gạch
#Software: Microsoft Internet Information Services 10.0
#Version: 1.0
#Date: 2017-04-20 09:22:15
#Fields: date time ip cmethod curi-stem curi-query port cs-username c-ip cs(User-Agent) cs(Referer) sc-status sc- substatus sc-win32-status time-taken
s-2017-04-20 09:22:15 127.0.0.1 GET /redirect.asp target=cstutorialscarousel&product=camtasiastudio&lang=enu&ve
Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64;+Trident/7.0;+rv:11 0)+like+Gecko - 404 0 2 3887
Trang 25ngang -), username, ngày và giờ, request và phiên bản giao thức, status code của dịch
vụ, số lượng byte đã gửi
Hình bên dưới đưa ra ví dụ minh họa file log sử dụng định dạng log NCSA
Hình 2.5 Minh họa file log với định dạng NCSA
Cơ chế page tagging Phương pháp thứ hai, page tagging (gắn thẻ trang), sử dụng JavaScript nhúng
trong trang web để tương tác đến một máy chủ phân tích chuyên
So với phương pháp sử dụng file server log, phương pháp page tagging có một
số ưu điểm (Clifton, 2012) [10] Thứ nhất, những file client scripts có thể thu thập những thông tin về kích thước màn hình, mã màu sắc sử dụng Thứ hai, Javascript có
thể theo dõi hành động của người dùng thông qua các sự kiện như nhấn phím và nhấp chuột, di chuột v.v … - những sự kiện mà phương pháp file server log không phát
hiện được Thứ ba, phương pháp này không đòi hỏi người dùng phải có quyền truy
cập vào web server Tuy nhiên, phương pháp page tagging cũng tồn tại những khuyết điểm so với phương pháp sử dụng file server log Đối với những trình duyệt vô hiệu hóa cookies, Javascript, page tagging tạo ra những số liệu thống kê không chính xác Page tagging cũng không thể phân tích trên những định dạng none-page như file PDF, file download (ZIP, EXE,…), file media…
2.2.4 Các thông số đánh giá
Các thông số (metric) là những số liệu được tính toán dựa trên những dữ liệu tương tác thu thập được từ phía người dùng, dựa vào đó đưa ra cái nhìn tổng quan về việc sử dụng website
Theo Web Analytics Association [11], các metric có thể được chia làm 02 loại:
Trang 26- Count (số đếm): là đơn vị tính toán cơ bản và là một số, kết quả thường là số nguyên
- Ratio (tỉ lệ): là một metric thu được từ việc chia một số cho một số khác, kết quả thường không phải số nguyên Các metric dạng này không thể tính tổng
Các metric có thể được áp dụng trong 03 phạm vi sau:
- Aggregate (Tổng hợp): đại diện cho toàn bộ site
- Segmented (Phân đoạn): là một phần dữ liệu traffic trên site trong một khoảng thời gian, có thể được chọn lọc bằng một phương pháp nào đó để có kết quả phân tích sâu hơn
- Individual (Đơn lẻ): hoạt động của một người dùng duy nhất trong một khoảng thời gian cho trước
Phần dưới đây giới thiệu một số metric và phương pháp tính toán metric đó dựa trên dữ liệu tương tác thu thập được
Các metric cơ bản
Nhóm metric này gồm 4 metric chính: Unique Vistors, Visit/Session, Page View và Event Đây là những metric làm tiền đề cho tất cả các phép tính toán, phân tích web, có thể được dùng như những giá trị duy nhất được dùng như các toán hạng trong các công thức tính toán
Page View
Đây là metric kiểu số đếm, thể hiện số lần một trang web (page) đã được xem Việc xác định Page view có thể dựa trên mã trạng thái (status code) được phản hồi từ web server khi có yêu cầu từ máy khách Với một số giá trị mã trạng thái, Page View không được tính trong trường hợp sau:
- Mã trạng thái từ 400 – 499 hoặc 500 – 599: Web server phản hồi không tìm thấy trang (400 đến 499) hoặc có lỗi xảy ra, trừ trường hợp web server được cấu hình
để trả về một trang web cùng trạng thái
- Mã trạng thái 300 – 399: Web server phản hồi bằng cách chuyển hướng đến một trang web khác
Trang 27- Một số trường hợp của giá trị của mã trạng thái trả về của phản hồi thành công: 202 (Accepted), 204 (No Response), 206 (Partial Download)
Khi phân tích dữ liệu từ các log file của web server, việc sử dụng các mã trạng thái của mỗi request để loại bỏ những request không được xem là Page View rất quan trong, tuy nhiên việc này không cần thiết khi xử lý dữ liệu dựa trên page tagging
Visits (Sessions)
Đây là metric kiểu số đếm Mỗi Visit là một tương tác được thực hiện bởi một
cá nhân (người dùng) với website, tương tác này có thể bao gồm việc yêu cầu một hoặc nhiều trang web Nếu cá nhân không thực hiện bất kỳ hành động gì (thông thường là xem thêm các trang khác) trong một khoảng thời gian nhất định, visit xem như kết thúc do quá thời gian
Khoảng thời gian quá hạn cho một visit thông thường được gán là 30 phút, tuy nhiên giá trị này có thể được tùy chỉnh
Unique visitors
Đây là metric kiểu số đếm, là metric thể hiện số người dùng có tương tác bằng việc thực hiện một hoặc nhiều lượt truy cập đến website trong một khoảng thời gian nhất định Mỗi cá nhân chỉ được đếm một lần duy nhất trong phép đo này trong một thời gian báo cáo
Việc phân biệt các visitor khác nhau có thể được thực hiện theo nhiều cách Chứng thực là phương pháp chính xác nhất để theo dõi visitor duy nhất Tuy nhiên
do không phải website nào cũng yêu cầu người dùng đăng nhập, cách tốt hơn là sử dụng cookie có thể lưu trữ giá trị id duy nhất để thay thế, nhưng lại không chính xác nếu cookie bị xóa, người dùng sử dụng nhiều browser hoặc máy tính,…
Event
Đây là metric kiểu số đếm, đại diện cho bất kỳ hành động nào được theo dõi kèm theo thời gian diễn ra của nó Các sự kiện (event) là các hoạt động diễn ra trong một trang web
Trang 28Các metric đặc điểm truy cập
Nhóm này gồm những metric mô tả các hành vi của một người dùng diễn ra trong một lần truy cập website Phân tích những thành phần này của hoạt động truy cập có thể xác định phương pháp cải thiện được tương tác người dùng với website
Entry Page
Là trang web đầu tiên của một lần truy cập, bất kể sử dụng cách tính toán lần truy cập như thế nào Do đó, phương pháp phân chia các lần truy cập khác nhau sẽ đưa đến các kết quả khác nhau
Entry page thường được biểu diễn là một danh sách các URL hoặc tiêu đề của trang, thể hiện những entry page thu thập được và số lượt truy cập có trang tương ứng
là entry page Do mỗi lượt truy cập đều gồm ít nhất một trang web được yêu cầu, số lượng các entry page bằng số lượt truy cập trong một khoảng thời gian
Visit Duration
Metric kiểu số đếm, là khoảng thời gian trong một lượt truy cập, thường được tính bằng cách tính khoảng thời gian giữa hoạt động đầu tiên và cuối cùng của lượt truy cập
Nếu chỉ có một hành động được thực hiện trong một lượt truy cập (chỉ xem một trang hoặc chỉ có một sự kiện), khoảng thời gian truy cập sẽ không được tính do không có mốc thời gian thứ hai để tính hiệu số, thông thường lúc này được gán là 0
Referrer
Trang 29Là metric mô tả nguồn của traffic đến một trang hoặc của lượt truy cập Referrer thường được thu thập thành các nhóm khác nhau để dễ dàng phân tích:
- Internal Referrer (tham chiếu nội bộ): là URL của một trang web thuộc nội
bộ website hoặc một thuộc tính bên trong website
- External Referrer (tham chiếu ngoài): là URL của một trang web nằm ngoài website hoặc thuộc tính web
- Search Referrer (tham chiếu tìm kiếm): là một referrer nội bộ hoặc ngoài có URL được tạo ra từ một hàm tìm kiếm
- Direct Referrer (không có tham chiếu): giá trị referrer rỗng hoặc null, thể hiện người dùng có thể đã trực tiếp nhập URL hoặc lựa chọn từ danh sách bookmark…
Các metric đặc điểm người truy cập
Nhóm metric này mô tả nhiều thuộc tính các khau phân biệt các người dùng website Những thuộc tính cho phép phân phối lượng người truy cập để cải thiện tính chính xác và hiệu quả của việc phân tích
New visitor
Đây là metric kiểu số đếm, thể hiện số lượng người dùng truy cập lần đầu tiên trong khoảng thời gian cho trước “Lần đầu tiên” ở đây là trong ngữ cảnh khi dữ liệu bắt đầu được thu thập trên website
Mỗi người dùng chỉ được tính là người dùng mới một lần duy nhất trong thời gian báo cáo, do đó tổng số lượng người dùng mới và số lượng người dùng cũ luôn bằng số người dùng hiện có trong thời gian đó Không có trường hợp một người dùng vừa được xem là người dùng mới vừa được xem là người dùng cũ cùng một lúc
Return visitor
Đây là metric kiểu số đếm, thể hiện số lượng người dùng tương tác với website trong một khoảng thời gian cho trước mà trước đó người dùng này đã từng truy cập website
Repeat visitor
Trang 30Đây là metric kiểu số đếm, thể hiện số lượng người dùng có hai hoặc nhiều lần truy cập tương tác với website trong một khoảng thời gian cho trước
Một người dùng vừa có thể được xem là người dùng mới vừa là người dùng lặp lại, hoặc vừa là người dùng cũ vừa là người dùng lặp lại
2.2.5 Trực quan hóa dữ liệu tương tác
Hình 2.6 Hình ảnh minh họa về Heatmap
2.3 Các kỹ thuật, công nghệ được sử dụng
2.3.1 Dịch vụ Windows - Windows service
Tổng quan về Windows service
“Microsoft Windows service – Dịch vụ windows cho phép người dùng khởi tạo những ứng dụng thực thi dài hạn được vận hành trong tiến trình Windows riêng biệt
Trang 31của nó Những dịch vụ này có thể tự động bắt đầu khi máy tính khởi động, có thể dừng lại hoặc khởi động lại, và không có giao diện tương tác với người dùng Những đặc điểm này giúp dịch vụ Windows trở nên lý tưởng để sử dụng trên các server hay bất cứ nơi nào cần thực hiện các chức năng dài hạn nhưng không tương tác với người dùng sử dụng máy” [13]
Các dịch vụ Windows khi cài đặt trên máy tính có thể được điều khiển bằng
Services Control Manager để khởi động, dừng, ngưng tạm thời hoặc cấu hình cho
dịch vụ đó, đây là tiện ích được Windows cung cấp để quản lý các dịch vụ trong hệ thống
Một dịch vụ có nhiều trạng thái khác nhau trong vòng đời hoạt động của nó Trước tiên, dịch vụ được cài đặt trên hệ thống Quá trình này thực thi chương trình
cài đặt của dịch vụ và tải dịch vụ vào Services Control Manager của máy tính Sau khi đã được cài đặt, dịch vụ có thể được khởi động thông qua Services Control
Manager hoặc trong mã nguồn của dịch vụ có cơ chế tự khởi động, cho phép dịch
vụ bắt đầu thực hiện các chức năng Dịch vụ sau đó duy trì ở trạng thái đang chạy (running) vô thời hạn cho đến khi bị dừng, ngưng tạm thời hoặc hệ thống bị tắt
Một dịch vụ có thể tồn tại ở 3 trạng thái chính: đang chạy (running), đã tạm dừng (pause) hoặc đã dừng (stopped) Ngoài ra còn một số trạng thái khác như ContinuePending, PausePeding, StartPending hay StopPending để thể hiện một câu lệnh đang được thực hiện nhưng vẫn chưa kết thúc
Windows service trong Visual Studio
Microsoft Visual Studio cho phép người dùng xây dụng các dịch vụ Windows [13] thông qua việc tạo các project, định nghĩa các đoạn mã bên trong dịch vụ đó để điều khiển việc gửi các câu lệnh thực thi đến dịch vụ và thực hiện các chức năng tương ứng với các câu lệnh đó Các câu lệnh có thể gửi bao gồm: khởi động, tạm dừng, khôi phục hoặc dừng dịch vụ, ngoài ra cũng có thể thực hiện những câu lệnh tùy chỉnh
So sánh với những project thông thường của Visual Studio, các dịch vụ khi được xây dựng có những đặc điểm sau:
Trang 32- File thực thi sau khi biên dịch project của dịch vụ cần được cài đặt trên máy tính để thực hiện các chức năng của nó, không thể sử dụng chức năng debug với F5 hoặc F11 như project thông thường
- Các dịch vụ cần được tạo một thành phần cài đặt của riêng nó để cài đặt và
đăng ký dịch vụ trên máy tính và tạo một entry của dịch vụ với Services Control
Manager
- Windows service không cho phép sử dụng các thành phần tương tác với người dùng như hộp thoại,… Những thành phần này nếu sử dụng trong windows service sẽ không được hiển thị và có thể làm treo dịch vụ
Khi tạo một dịch vụ windows trong Visual Studio, các lớp (class) chính sau đây được sử dụng [14]:
- ServiceBase: lớp này sẽ được kế thừa để xây dựng lớp của dịch vụ muốn tạo, những phương thức trong lớp này cũng sẽ được ghi đè bằng những chức năng của dịch vụ
- ServiceProcessInstaller và ServiceInstaller: những lớp này được dùng để cài đặt và gỡ cài đặt dịch vụ trên máy tính
Lớp ServiceBase chứa các phương thức có thể được ghi đè để người dùng tự định nghĩa những hành động sẽ diễn ra khi thay đổi trạng thái của dịch vụ Bảng dưới đây tổng hợp các phương thức này
Bảng 2.1 Các phương thức cung cấp bởi class ServiceBase
Trang 33OnContinue Dùng để định nghĩa hành động thực hiện khi dịch
vụ được khôi phục sau khi tạm dừng
OnCustomCommand Dùng để định nghĩa hành động thực hiện khi dịch
vụ nhận một câu lệnh tùy chỉnh
Điều khiển Windows service
Có nhiều cách để điều khiển hoạt động của một Windows service Windows cũng cung cấp nhiều cơ chế khác nhau thông qua các ứng dụng có giao diện như
Services Control Manager hoặc thẻ Services của Task Manager Những ứng dụng
này đều hiển thị danh sách các dịch vụ windows hiện đang cài đặt trên hệ thống và cung cấp các hành động tương ứng với trạng thái hiện tại của dịch vụ đó
Hình 2.7 Giao diện điều khiển dịch vụ của Services Control Manager
Trang 34Hình 2.8 Giao diện điều khiển dịch vụ của Task Manager
Bên cạnh các ứng dụng quản lý có giao diện, Sc.exe [15] là một tiện ích dạng
command-line, ngoài các chức năng tương tự như Service Control Manager, Sc.exe còn có thể được dùng để cài đặt và gỡ cài đặt dịch vụ
Đối với phương diện lập trình, cụ thể là trong môi trường Visual Studio, việc tương tác với dịch vụ đang có trên hệ thống bằng những đoạn mã trong các ứng dụng
cũng có thể được thực hiện thông qua một lớp (class) có tên gọi ServiceController
[16] Lớp này đại diện cho một dịch vụ windows và cho phép người dùng kết nối dịch
vụ đó để thực hiện các câu lệnh và lấy thông tin từ dịch vụ Ví dụ dưới đây là đoạn
mã được dùng để khởi động một dịch vụ có tên My Service
Hình 2.9 Ví dụ minh họa sử dụng ServiceController để khởi động dịch vụ
Các kiến thức tìm hiểu được về dịch vụ Windows sẽ được áp dụng trong việc xây dựng thành phần Site Agent của công cụ đo lường và phân tích tương tác người dùng trên website
ServiceController sc = new ServiceController("My Service"); sc.Start();
Trang 352.3.2 WCF – Windows Communication Foundation
Tổng quan về WCF
Windows Communication Foundation (WCF) [17] là framework, một tập API được dùng để xây dựng các hệ thống gửi và nhận các thông điệp giữa các dịch vụ và client Các thông điệp được gửi có thể đơn giản là một ký tự hoặc một từ được gửi dưới dạng XML, hay phức tạp hơn là dạng stream hoặc dữ liệu nhị phân
Các khái niệm cơ bản trong WCF [18]:
- Thông điệp: đây là đơn vị giao tiếp được gửi và nhận giữa client và dịch vụ
- Endpoint: định nghĩa địa chỉ nhận/gửi các thông điệp, đồng thời cũng xác định cơ chế giao tiếp được sử dụng để mô tả cách thông điệp được gửi Thông tin của một endpoint bao gồm:
Address (địa chỉ) xác định vị trí chính xác để nhận thông điệp và được
thể hiện ở dạng một URI scheme://domain[:port]/[path]
Binding: xác định cách thức giao tiếp của endpoint như giao thức để truyền dữ liệu, định dạng thông điêp hay các giao thức liên quan đến bảo mật
Contracts: tập hợp các hoạt động định nghĩa các chức năng endpoint có thể thực hiện, được công bố cho client biết để sử dụng
- WCF client: là ứng dụng client để gọi các hoạt động của dịch vụ dưới dạng các phương thức
WCF sử dụng các loại contracts chính cho hoạt động của mình:
- Service contract: cung cấp thông tin đến client về những chức năng có thực hiện của endpoint và các giao thức được dùng trong quá trình giao tiếp
- Data contract: kiểu dữ liệu được dịch vụ sử dụng được định nghĩa trong data contract Cả client và dịch vụ phải thống nhất với data contract
- Message contract: mô tả định dạng của thông điệp
- Policy và binding: những điều kiện tiên quyết để giao tiếp được với dịch vụ, client cần phải tuân thủ những contract này
Trang 36Tất cả các giao tiếp giữa client và dịch vụ đều thông qua endpoint, endpoint cho phép client truy cập vào các chức năng của dịch vụ Dưới đây là hình ảnh minh họa cho kết nối từ client đến dịch vụ WCF thông qua 2 endpoint khác nhau và yêu cầu 2 contract khác nhau:
Hình 2.10 Minh hoạt kết nối từ client đến dịch vụ WCF
WCF service trong Microsoft Visual Studio
Trong Microsoft Visual Studio cho phép khởi tạo project để xây dựng dịch vụ WCF
Công việc đầu tiên cần thực hiện là xác định một service contract Thành phần
này định nghĩa những hoạt động mà dịch vụ muốn xây dựng có thể hỗ trợ Contract được tạo dưới dạng một interface với mỗi phương thức bên trong đại diện cho một
hoạt động của dịch vụ Interface này sẽ có thuộc tính ServiceContract và mỗi phương thức bên trong nó phải có thuộc tính OperationContract, nếu không phương thức sẽ
không được công bố cho client sử dụng
Trang 37Hình 2.11 Ví dụ tạo interface ServiceContract
Ví dụ ở trên tạo một interface ICalculator cho một dịch vụ thực hiện việc tính toán với các phương thức client có thể sử dụng là Add, Substract, Multiply và Divide
Sau khi đã tạo một interface ServiceContract và danh sách các hoạt động hỗ trợ, các hoạt động này vẫn chỉ là những tên phương thức chứ chưa có tác vụ cụ thể, bước tiếp theo cần thực hiện là hiện thực những phương thức đó thông qua một lớp (class) hiện thực interface đã khởi tạo
Hình 2.12 Ví dụ hiện thực ServiceContract Sau khi biên dịch, service contract đã tạo và hiện thực có thể được host và chạy
để client có thể kết nối và sử dụng Một WCF service có thể được host bằng 4 cách thông qua IIS, Windows Activation Service, tự host hoặc Windows Service Trong khuôn khổ đề tài luận văn, để phục vụ cho hoạt động của công cụ, tác giả sử dụng 02
cơ chế host khác nhau dành cho 02 đối tượng khác nhau: hosting với Windows service
double Add(double n1, double n2){ return n1 + n2;}
double Subtract(double n1, double n2) { return n1 – n2; }
double Multiply(double n1, double n2) { return n1*n2; }
double Divide(double n1, double n2){ return n1/n2}
}
Trang 38dành cho dịch vụ WCF của Site Agent do Site Agent bản chất được xây dựng sẽ là một Windows service, hosting với IIS dành cho dịch WCF của Collector do Collector được định hướng sẽ là một ứng dụng web
2.3.3 C# và ASP.NET MVC
2.3.4 MongoDB và SQL
Trong việc xây dựng và phát triển một công cụ thực hiện thu thập và phân tích
dữ liệu, một thành phần quan trọng không thể thiếu đó chính là cơ sở dữ liệu Hiện nay, có 02 loại cơ sở dữ liệu chính tồn tại song song với nhau: cơ sở dữ liệu quan hệ
và cơ sở dữ liệu không quan hệ, khác biệt thể hiện ở loại thông tin và cách chúng lưu trữ các thông tin đó
Phần này giới thiệu về 02 đại diện cho 02 loại cơ sở dữ liệu trên: hệ quản trị cơ
sở dữ liệu quan hệ SQL Server và cơ sở dữ liệu NoSQL MongoDB
SQL Server – Cơ sở dữ liệu quan hệ
Các cơ sở dữ liệu quan hệ (relational database) [19] hay cơ sở dữ liệu SQL được đặt tên theo loại ngôn ngữ được sử dụng để xây dựng chúng – Structured Query
Language (SQL), lưu trữ dữ liệu một cách có cấu trúc
Một cơ sở dữ liệu quan hệ gồm nhiều khái niệm:
- Bảng (table) gồm nhiều cột và dòng, là một tập dữ liệu với một số lượng thuộc tính được định nghĩa trước trong các Cột (column) Mỗi dòng (row) của bảng đại diện cho một entry dữ liệu thực tế Mỗi bảng nên có primary key, là một cột có
giá trị duy nhất trong tất cả các hàng của bảng
- Relationships (quan hệ) giữa các bảng là cốt lõi của các cơ sở dữ liệu quan
hệ, cho phép liên kết các dữ liệu với nhau bằng nhiều cách, các quan hệ này được
thiết lập thông qua các primary key và foreign key của các bảng
Trang 39Hình 2.13 Lưu trữ dữ liệu với các bảng trong cơ sở dữ liệu quan hệ [19]
Structured Query Language (SQL) là một ngôn ngữ lập trình dùng trong kiến trúc cơ sở dữ liệu để xây dựng nên các cơ sở dữ liệu quan hệ Trong những cơ sở dữ liệu quan hệ này, SQL thực hiện các truy vấn, lấy hay chỉnh sửa dữ liệu bằng cách cập nhật, xóa hay tạo mới
Cơ sở dữ liệu quan hệ nên được sử dụng trong các trường hợp cần lưu trữ các
dữ liệu có cấu trúc và không thay đổi, đặc biệt cần truy vấn dữ liệu dựa trên quan hệ giữa các bảng với nhau Một số cơ sở dữ liệu quan hệ và hệ quản trị cơ sở dữ liệu quan hệ phổ biến: MySQL là cơ sở dữ liệu mã nguồn mở phổ biến nhất, MS SQL Server là hệ quản trị cơ sở dữ liệu của Microsoft, MariaDB là phiên bản nâng cấp của MySQL,…
Trong đề tài luận văn này, tác giả sẽ sử dụng hệ quản trị cơ sở dữ liệu MS SQL
Server để xây dựng và lưu trữ một số thông tin như quản lý các site, tính toán thông
số đánh giá
MongoDB – Cơ sở dữ liệu không quan hệ
Khác với cơ sở dữ liệu quan hệ, các cơ sở dữ liệu không quan hệ NoSQL cung cấp sự linh hoạt tốt hơn trong việc lưu trữ các dữ liệu, do chúng được lưu trữ mà không cần có cấu trúc phải được định nghĩa trước
Trang 40Hình 2.14 Lưu trữ dữ liệu trong cơ sở dữ liệu không quan hệ [19]
Với những ứng dụng phía server cần đảm bảo sự nhanh chóng và liên tục, cơ sở
dữ liệu không quan hệ có thể ngăn chặn khả năng nghẽn cổ chai do vấn đề dữ liệu lớn có thể xảy ra ở cơ sở dữ liệu SQL Cơ sở dữ liệu không quan hệ NoSQL cho phép lưu trữ số lượng lớn các dữ liệu có ít hoặc không có cấu trúc, không giới hạn kiểu dữ liệu để lưu trữ hay phải định nghĩa kiểu dữ liệu trước
MongoDB là cơ sở dữ liệu không quan hệ mã nguồn mở phổ biến nhất, được
hàng triệu người sử dụng và được phát triển bằng ngôn ngữ C++ MongoDB lưu trữ
dữ liệu dưới dạng các document ở định dạng BSON Nếu như trong cơ sở dữ liệu quan hệ, các hàng cần có chung số lượng và kiểu dữ liệu của các trường, thì với document, các trường này có thể khác nhau
Một số khái niệm chính trong MongoDB:
- Cơ sở dữ liệu (Database): một MongoDB server có thể chứa nhiều cơ sở dữ
liệu, khái niệm này bằng nghĩa trong trường hợp cơ sở dữ liệu quan hệ SQL
- Collection: tương ứng với một bảng ở cơ sở dữ liệu quan hệ, là một nhóm
các document, tồn tại duy nhất trong một database Các collection không có ràng buộc quan hệ như trong cơ sở dữ liệu SQL