Nhận thấy những hiệu quả mang lại từ việc ứng dụng CNTT chúng tôi mạnh dạn đề xuất xây dựng Hệ thống hỗ trợ thi trắc nghiệm trực tuyến nhằm đáp ứng một số nhu cầu cơ bản như: Xây dựng ng
Trang 1KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
GOOGLE APP ENGINE
SINH VIÊN THỰC HIỆN CÁN BỘ HƯỚNG DẪN
Trang 2KHOA CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
GOOGLE APP ENGINE
Lê Thúy Vy
MSSV: 1111561
Ks Lê Văn Quan MSGV: 0002455 CÁN BỘ PHẢN BIỆN
Ths Nguyễn Minh Trung
Ks Đặng Mỹ Hạnh
Luận văn được bảo vệ tại: Hội đồng chấm luận văn tốt nghiệp Bộ môn Tin học Ứng dụng Khoa Công nghệ thông tin và truyền thông, Trường Đại học Cần Thơ vào ngày 26 tháng 6 năm 2015
Mã số đề tài:
Có thể tìm hiểu luận văn tại:
- Trung tâm Học liệu, Trường Đại học Cần Thơ
- Website: http://www.lrc.ctu.edu.vn/
Cần Thơ, 2015
Trang 3LỜI CẢM ƠN
Đầu tiên, em xin gởi lời cảm ơn chân thành đến quý thầy cô trường Đại học Cần Thơ, đặc biệt thầy cô Bộ môn Tin học ứng dụng, Khoa Công nghệ thông tin và truyền thông đã tạo cho em một môi trường học tập tốt, dạy dỗ và truyền đạt những kiến thức quý báu cho em trong hơn 3 năm qua
Em xin cảm ơn thầy Lê Văn Quan đã tận tình giúp đỡ, hướng dẫn em thực hiện đề
tài Nghiên cứu và xây dựng website hỗ trợ thi trắc nghiệm trực tuyến với jsp dựa
trên công nghệ Google App Engine và hoàn thành các công việc được giao đúng
thời gian quy định
Em cũng xin cảm ơn gia đình đã nhiệt tình khuyến khích, động viên, giúp đỡ em
Em xin cám ơn bạn bè, những người đã đưa ra những lời khuyên cũng như góp ý có ích giúp em hoàn thiện đề tài này
Với vốn kiến thức hạn hẹp cùng thời gian thực hiện có hạn nên không tránh khỏi những thiếu sót và hạn chế Em rất mong nhận được những ý kiến đóng góp, phê bình của quý thầy cô Đó là cơ sở để giúp chúng em tiếp tục nghiên cứu và hoàn thiện đề tài luận văn tốt nghiệp và đây cũng là hành trang quý báu giúp chúng em nâng cao kiến thức
Em xin chân thành cảm ơn!
Sinh viên thực hiện đề tài
Lê Thúy Vy
Trang 4MỤC LỤC
DANH MỤC HÌNH i
DANH MỤC BẢNG v
DANH MỤC CÁC KÝ HIỆU, CHỬ VIẾT TẮT vii
TÓM TẮT viii
ABSTRACT ix
CHƯƠNG 1 TỔNG QUAN 1
1.1 ĐẶT VẤN ĐỀ 1
1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ 1
1.3 PHẠM VI ĐỀ TÀI 2
1.4 PHƯƠNG PHÁP NGHIÊN CỨU 2
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 4
2.1 GIỚI THIỆU SƠ LƯỢC VỀ E - LEARING 4
2.1.1 Khái niệm E-learning 4
2.1.2 Một số hình thức E-Learning 4
2.1.3 Tình hình phát triển và ứng dụng E-Learning 5
2.1.3.1 Trên thế giới 5
2.1.3.2 Tại Việt Nam 6
2.2 TỔNG QUAN VỀ CÔNG NGHỆ ĐIỆN TOÁN ĐÁM MÂY 7
2.2.1 Định nghĩa 7
2.2.2 Cấu trúc phân lớp của mô hình điện toán đám mây 7
2.2.3 Các mô hình dịch vụ 9
2.2.3.1 Cơ sở hạ tầng như một dịch vụ (IaaS - Infrastructure as a Service) 9
2.2.3.2 Phần mềm như một dịch vụ (SaaS - Software as a Service) 11
2.2.3.3 Nền tảng như một dịch vụ (PaaS - Platform as a Service) 10
2.2.4 Các mô hình triển khai điện toán đám mây 12
2.2.4.1 Đám mây công cộng (Public cloud) 12
2.2.4.2 Đám mây cộng đồng (Community cloud) 13
2.2.4.3 Đám mây riêng (Private cloud) 13
Trang
Trang 52.2.4.4 Đám mây lai (Hybird cloud) 14
2.2.5 Các nhà cung cấp: 15
2.2.6 Ưu điểm và nhược điểm 15
2.2.6.1 Ưu điểm 15
2.2.6.2 Nhược điểm 16
2.3 Tìm hiểu Google App Engine 16
2.3.1 Khái niệm 16
2.3.2 Kiến trúc hoạt động 17
2.3.3 Các tính năng GAE hỗ trợ 17
2.3.4 Các thành phần chính của GAE 18
2.3.4.1 Môi trường thực thi (Runtime Environment) 18
2.3.4.2 Các file server tĩnh (Static file Servers) 19
2.3.4.3 Kho dữ liệu (Datastore) 19
2.3.4.3.1 Giới thiệu 19
2.3.4.3.2 JDO 21
2.3.4.3.3 Backends 26
2.3.4.4 Các dịch vụ (Services) 26
2.3.4.5 Tài khoản Google (Google Accounts) 27
2.3.4.6 Các công cụ lập trình (Programming Tools) 27
2.3.5 Hạn chế 28
2.4 TỔNG QUAN VỀ JSP 29
2.4.1 Giới thiệu về Servlet 29
2.4.2 Giới thiệu về JSP 29
2.4.3 Chu trình sống của JSP 29
2.4.3.1 Biên dịch trang 29
2.4.3.2 Nạp trang 30
2.4.3.3 Khởi tạo 30
2.4.3.4 Thực thi 30
2.4.3.5 Giải phóng tài nguyên 30
Trang 62.4.4 Cơ chế hoạt động của trang JSP 31
2.4.5 Cú pháp cơ bản của JSP 31
2.4.5.1 Sử dụng thẻ bọc mã <% %> 31
2.4.5.2 Hiển thị kết quả bằng cú pháp <%= %> 31
2.4.5.3 Chèn chú thích vào mã trang JSP 32
2.4.5.4 Khai báo phương thức và biến bằng <%! %> 32
2.4.6 Các thẻ xử lý nhúng và chuyển hướng giữa các trang 33
2.4.6.1 Thẻ nhúng mã nguồn <%@ include file %> 33
2.4.6.2 Thẻ <jsp:include> 33
2.4.6.3 Chuyển tham số bằng thẻ <jsp:param> 33
2.4.6.4 Thẻ chỉ dẫn biên dịch trang <%@ page %> 34
2.4.6.5 Thẻ chuyển hướng đến trang khác <jsp:forward> 34
2.4.6.6 Chuyển hướng sang trang mới với sendRedirect() 35
2.4.7 Các đối tượng của JSP 35
2.4.7.1 Đối tượng Request 35
2.4.7.2 Đối tượng Response 35
2.4.7.3 Đối tượng Session 36
2.4.7.4 Đối tượng Out 36
2.4.7.5 Đối tượng Application 36
CHƯƠNG 3 NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU 37
3.1 TỔNG QUAN VỀ HỆ THỐNG 37
3.1.1 Mô tả bài toán 37
3.1.2 Phân tích và thiết kế hệ thống 38
3.1.2.1 Sơ đồ nghiệp vụ chức năng BFD 38
3.1.2.2 Sơ đồ hoạt vụ (Use case) 40
3.1.2.3 Mô hình thực thể kết hợp 42
3.1.2.4 Mô tả các mối quan hệ kết hợp 44
3.1.2.5 Ràng buộc toàn vẹn 51
3.1.2.6 Mô hình vật lý 55
Trang 73.1.2.7 Mô tả cơ sở dữ liệu 56
3.1.2.8 Sơ đồ tuần tự 65
3.2 KẾT QUẢ XÂY DỰNG HỆ THỐNG 72
3.2.1 Giao diện chính: 72
3.2.2 Giao diện đăng nhập: 73
3.2.3 Giao diện người quản trị 74
3.2.4 Giao diện giảng viên 76
3.2.4.1 Quản lý câu hỏi 78
3.2.4.2 Quản lý đề thi 80
3.2.4.3 Quản lý thi 85
3.2.4.4 Thống kê 87
3.2.5 Giao diện sinh viên 89
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 93
PHỤ LỤC 1 HƯỚNG DẪN CÀI ĐẶT 94
PHỤ LỤC 2 ĐĂNG KÝ TÀI KHOẢN GOOGLE APP ENGINE 101
PHỤ LỤC 3 HƯỚNG DẨN SỬ DỤNG THÊM MỘT SÔ CHỨC NĂNG HỆ THỐNG 103
TÀI LIỆU THAM KHẢO 110
Trang 8DANH MỤC HÌNH
Hình 2.1 Mô hình điện toán đám mây 7
Hình 2.2 Cấu trúc phân lớp của mô hình điện toán đám mây 7
Hình 2.3 Các tầng kiến trúc của điện toán đám mây 9
Hình 2.4 Cơ sở hạ tầng như dịch vụ (IaaS) 9
Hình 2.6 Phần mềm như một dịch vụ (SaaS) 10
Hình 2.5 Nền tảng hướng một dịch vụ (PaaS) 11
Hình 2.7 Các mô hình triển khai điện toán đám mây 12
Hình 2.8 Đám mây công cộng (Public cloud) 12
Hình 2.9 Đám mây cộng đồng (Community cloud) 13
Hình 2.10 Đám mây riêng (Private cloud) 14
Hình 2.11 Đám mây lai (Hybird cloud) 14
Hình 2.12 Cơ chế triệu gọi trang JSP 31
Hình 3.1 Sơ đồ nghiệp vụ chức năng của người quản trị 38
Hình 3.2 Sơ đồ nghiệp vụ chức năng của giảng viên 39
Hình 3.3 Sơ đồ nghiệp vụ chức năng sinh viên 39
Hình 3.4 Sơ đồ hoạt vụ theo tác nhân người quản trị 40
Hình 3.5 Sơ đồ hoạt vụ theo tác nhân giảng viên 41
Hình 3.6 Sơ đồ hoạt vụ theo tác nhân sinh viên 42
Hình 3.7 Mô hình ER 43
Hình 3.8 Mối quan hệ kết hợp giữa giảng viên và khoa 44
Hình 3.9 Mối quan hệ kết hợp thông tin giảng viên có học vị 44
Hình 3.10 Mối quan hệ kết hợp thông tin giảng viên có học hàm 45
Hình 3.11 Mối quan hệ kết hợp thông tin giảng viên có trình độ ngoại ngữ 45
Hình 3.12 Mối quan hệ kết hợp giữa sinh viên với lớp chuyên ngành 46
Hình 3.13 Mối quan hệ kết hợp thông tin giữa giảng viên với lớp chuyên ngành 46
Hình 3.14 Mối quan hệ kết hợp về câu hỏi 47
Hình 3.15 Mối quan hệ kết hợp giữa câu hỏi và đề thi gốc 48
Hình 3.16 Mối kết hợp thông tin giữa đề thi với đề thi hoán vị 48
Hình 3.17 Mối quan hệ kết hợp giữa câu hỏi và đề thi hoán vị 49
Hình 3.18 Mối quan hệ kết hợp thông tin của bài thi sinh viên với đợt thi 49
Trang
Trang 9Hình 3.19 Mối quan hệ kết hợp thông tin về trả lời của sinh viên 50
Hình 3.20 Mối quan hệ thông tin về giảng dạy 51
Hình 3.21 Mô hình vật lý 55
Hình 3.22 Sơ đồ tuần tự của chức năng đăng nhập 65
Hình 3.23 Sơ đồ tuần tự của chức năng thêm câu hỏi 66
Hình 3.24 Sơ đồ tuần tự của chức năng sửa câu hỏi 67
Hình 3.25 Sơ đồ tuần tự của chức năng xóa câu hỏi 68
Hình 3.26 Chức năng tạo đề thi 68
Hình 3.27 Chức năng soạn đề 69
Hình 3.28 Chức năng tạo hoán vị 70
Hình 3.29 Chức năng làm bài thi 71
Hình 3.30 Giao diện hệ thống khi chưa đăng nhập 72
Hình 3.31 Giao diện trang đăng nhập 73
Hình 3.32 Giao diện làm việc của người quản trị 74
Hình 3.33 Chức năng quản lý hệ thống 75
Hình 3.34 Chức năng quản lý giảng viên 75
Hình 3.35 Chức năng quản lý sinh viên 75
Hình 3.36 Chức năng quản lý dạy và học 76
Hình 3.37 Giao diện làm việc của giảng viên 76
Hình 3.38 Chức năng quản lý giảng dạy 77
Hình 3.39 Chức năng quản lý câu hỏi 77
Hình 3.40 Chức năng quản lý đề thi 77
Hình 3.41 Chức năng quản lý thi 77
Hình 3.42 Chức năng thống kê kết quả thi theo từng đợt thi 77
Hình 3.43 Trang quản lý câu hỏi của hệ thống 78
Hình 3.44 Trang xem chi tiết nội dung câu hỏi 78
Hình 3.45 Trang thêm mới câu hỏi của hệ thống 79
Hình 3.46 Trang sửa câu hỏi của hệ thống 79
Hình 3.47 Trang tạo đề thi của hệ thống 80
Hình 3.48 Giao diện trang soạn đề thi 80
Hình 3.49 Chọn đề thi muốn soạn 80
Hình 3.50 Hệ thống hiển thi danh sách câu hỏi ứng với đề thi 81
Hình 3.51 Trang xem chi tiết đề thi 83
Trang 10Hình 3.52 Chức năng in đề thi 84
Hình 3.53 Trang tạo đề thi hoán vị từ đề gốc 84
Hình 3.54 Tạo đề hoán vị 85
Hình 3.55 Giao diện xếp lịch thi của hệ thống 85
Hình 3.56 Giao diện trang xếp lịch thi 86
Hình 3.57 Giao diện trang phát đề thi 86
Hình 3.58 Giao diện trang thống kê kết quả thi 87
Hình 3.59 Danh sách kết quả thi của sinh viên 87
Hình 3.60 Thống kê kết quả thi theo dạng biểu đồ cột 88
Hình 3.61 Thống kê kết quả thi theo dạng biểu đồ tròn 88
Hình 3.62 Giao diện làm việc của sinh viên 89
Hình 3.63 Giao diện hiển thị lịch thi 90
Hình 3.64 Trang nhập mật khẩu thi 90
Hình 3.65 Giao diện trang làm bài thi của sinh viên 91
Hình 3.66 Giao diện trang kết quả thi 92
Hình 1 Chọn downloads java Platform (JDK) 8u40 94
Hình 2 Chọn phiên bản JDK phù hợp 94
Hình 3 Download Eclipse IDE for java EE Developers 95
Hình 4 Giao diện welcome của eclipse 96
Hình 5 Vào Help Install New Software… 96
Hình 6 Truyền đường dẫn của Google Plugin 96
Hình 7 Tích chọn plugin cần cài đặt 97
Hình 8 Chọn Next để tiếp tục cài đặt plugin 98
Hình 9 Chọn I accept the terms of the license agreements sau đó nhấn Finish để xác nhận việc cài đặt 99
Hình 10 Hệ thống download các gói cần thiết 100
Hình 11 Chọn OK khi hệ thống xuất hiện khung cảnh báo 100
Hình 12 Restart lại Eclipse để hoàn tất tiến trình cài đặt 100
Hình 13 Tạo tài khoản Google App Engine mới 101
Hình 14 Nhập thông tin cho tài khoản Google App Engine 102
Hình 15 Đăng ký thành công tài khoản GAE 102
Trang 11Hình 16 Giao diện chức năng quản lý khoa 103
Hình 17 Giao diện trang của chức năng tìm kiếm khoa 103
Hình 18 Giao diện trang thêm khoa mới 104
Hình 19 Giao diện trang sửa khoa 104
Hình 20 Giao diện trang quản lý ngành 105
Hình 21 Giao diện trang quản lý chuyên ngành 105
Hình 22 Quản lý chuyên ngành 106
Hình 23 Giao diện trang quản lý học hàm 106
Hình 24 Giao diện trang quảnl ý lớp học phần 106
Hình 25 Giao diện chức năng xếp lịch dạy 107
Hình 26 Giao diện trang xếp lịch dạy 107
Hình 27 Giao diện trang xem danh sách sinh viên thuộc lớp chuyên ngành giảng viên chủ nhiệm 108
Hình 28 Giao diện xem lịch dạy 108
Hình 29 Giao diện chức năng xem khung chương trình đào tạo 109
Hình 30 Giao diện chức năng xem điểm của sinh viên 109
Trang 12DANH MỤC BẢNG
Bảng 3.1 Ràng buộc theo miền giá trị của GIANGVIEN 52
Bảng 3.2 Ràng buộc theo miền giá trị của SINHVIEN 52
Bảng 3.3 Ràng buộc toàn vẹn liên bộ của GIANGVIEN 52
Bảng 3.4 Ràng buộc toàn vẹn liên bộ của SINHVIEN 53
Bảng 3 5 Ràng buộc toàn vẹn tham chiếu của DETHI và DETHIHOANVI 53
Bảng 3.6 Ràng buộc toàn vẹn trên nhiều quan hệ của GIANGVIEN 54
Bảng 3.7 Bảng bài thi sinh viên (mdl_dbo_BAITHISV) 56
Bảng 3.8 Bảng câu hỏi (mdl_dbo_CAUHOI) 56
Bảng 3.9 Bảng chuyên ngành (mdl_dbo_CHUYENNGANH) 57
Bảng 3.10 Bảng cố vấn học tập (mdl_dbo_CVHT) 57
Bảng 3.11 Bảng đáp án (mdl_dbo_DAPAN) 57
Bảng 3.12 Bảng đề thi (mdl_dbo_DETHI) 57
Bảng 3.13 Bảng đề thi hoán vị (mdl_dbo_DETHIHV) 58
Bảng 3.14 Bảng đề thi hoán vị chi tiết (mdl_dbo_DETHI_CHITIET) 58
Bảng 3.15 Bảng đề thi chi tiết (mdl_dbo_DETHI_CHITIET) 58
Bảng 3.16 Bảng giảng dạy (mdl_dbo_GIANGDAY) 59
Bảng 3.17 Bảng giảng viên (mdl_dbo_GIANGVIEN) 59
Bảng 3.18 Bảng học hàm (mdl_dbo_HOCHAM) 59
Bảng 3.19 Bảng học hàm_giảng viên (mdl_dbo_hocham_GIANGVIEN) 60
Bảng 3.20 Bảng học vị (mdl_dbo_HOCVI) 60
Bảng 3.21 Bảng học vị chi tiết (mdl_dbo_HOCVI_GIANGVIEN) 60
Bảng 3.22 Bảng khoa (mdl_dbo_KHOA) 60
Bảng 3.23 Bảng khóa học (mdl_dbo_KHOAHOC) 61
Bảng 3.24 Bảng khung chương trình đào tạo(mdl_dbo_KHUNGCHUONGTRINHDT) 61
Bảng 3.25 Bảng thi (mdl_dbo_Thi) 61
Bảng 3.26 Bảng loại câu hỏi (mdl_dbo_Loaicauhoi) 62
Bảng 3.27 Bảng lớp chuyên ngành (mdl_dbo_LOPCHUYENNGANH) 62
Bảng 3.28 Bảng lớp học phần (mdl_dbo_LOPHOCPHAN) 62
Bảng 3.29 Bảng môn học (mdl_dbo_MONHOC) 62
Bảng 3.30 Bảng mức độ câu hỏi (mdl_dbo_MUCDO) 63
Bảng 3.31 Bảng ngành (mdl_dbo_NGANH) 63
Trang
Trang 13Bảng 3.32 Bảng ngoại ngữ (mdl_dbo_NGOAINGU) 63
Bảng 3.33 Bảng ngoại ngữ chi tiết (mdl_dbo_NGOAINGU_GIANGVIEN) 63
Bảng 3.34 Bảng niên khóa (mdl_dbo_NIENKHOA) 64
Bảng 3.35 Bảng quyền hệ thống (mdl_dbo_QUYENHT) 64
Bảng 3.36 Bảng phòng (mdl_dbo_PHONG) 64
Bảng 3.37 Bảng sinh viên (mdl_dbo_SINHVIEN) 65
Bảng 3.38 Bảng trả lời của sinh viên (mdl_dbo_TRALOISV) 65
Trang 14DANH MỤC CÁC KÝ HIỆU, CHỬ VIẾT TẮT
dụng
CNTT Công nghệ thông tin
CSDL Cơ sở dữ liệu
ĐTĐM Điện toán đám mây
HTML HyperText Markup Language
HTMLS Hypertext Transfer Protocol Secure
IaaS Infrastructure as a service
PaaS Platform as a Service
SaaS Software as a Service
XMPP Extensible Messaging and Presence Protocol
Trang 15TÓM TẮT
Ở nước ta, trong lĩnh vực giáo dục đang từng bước đổi mới trong công tác quản lý đào tạo Theo hướng đó, phương pháp kiểm tra, thi cử cũng dần được cải thiện chuyển dần sang hình thức thi trắc nghiệm trực tuyến - đây là hình thức thi đảm bảo tính khách quan, nhanh chóng và giảm thiểu chi phí tổ chức thi
Với mục đích hỗ trợ cho công tác quản lý đào tạo chúng tôi đề xuất “Nghiên cứu
và xây dựng website hỗ trợ thi trắc nghiệm trực tuyến với jsp dựa trên công nghệ Google App Engine” nhằm đáp ứng những nhu cầu thực tế: Tiết kiệm chí phi, thời
gian, công sức cho công tác quản lý, tổ chức các kỳ thi trắc nghiệm đồng thời đảm bảo tính khách quan quả hiệu quả quá trình làm bài và chấm bài thi sinh viên Tìm hiểu và
áp dụng các kiến thức, công nghệ mới xây đựng hệ thống đảm bảo đầy đủ các chức năng: Quản lý, cập nhật thông tin giảng viên, sinh viên, khoa, ngành, chuyên ngành, lớp chuyên ngành, lớp học phần, phòng, môn học, niên khóa,…; Quản lý ngân hàng câu hỏi trắc nghiệm và đáp án; Quản đề thi: Tạo đề thi, soạn đề, hoán vị câu hỏi trong
đề thi và in đề thi; Quản lý thi: Xếp lịch thi, phát đề thi; Quản lý bài thi sinh viên; Thống kê kết quả thi sinh viên theo từng đợt thi
Nội dung luận văn bao gồm:
Chương 1 Tổng quan: Trình bày tổng quan về hiện trạng, các vấn đề cần giải
quyết và các hướng để giải quyết yêu cầu của bài toán
Chương 2 Cơ sở lý thuyết: Giới thiệu tổng quát về Hệ thống E-Learning, công
nghệ Điện toán đám mây, Google App Engine và ngôn ngữ lập trình JavaServer Pages (JSP)
Chương 3 Nội dung và kết quả thực hiện: Chương này gồm: Phần 1 trình tổng
quan về bài toán và phân tích thiết kế mô hình Phần 2 giới thiệu giao diện chương trình và hướng dẩn sử dụng hệ thống cho từng trường hợp sử dụng
Kết luận và hướng phát triển: Trình bài những phần đã thực hiện và chưa thực
hiện được Đưa ra định hướng phát triển cho hệ thống và sửa chữa những phần chưa thực hiện được
Từ khóa: JavaServer Pages, Google App Engine, Thi trắc nghiệm trực tuyến…
Trang 16With the purpose to support the management training, we strongly recommend
“Researching and developing the websites supporting online tests with jsp language based on Google App Engine technology” to meet the actual needs such as
reduce costs, save time, improve management Actually, application is developed successfully with a number of important functions, they are updating informations of teachers, students, facultys, branchs, majors, class, subjects, and so on; Questions and answers management, permutation questions, schedule, statistics In addition, manage quiz, create a quiz, and so on
Chapter 1 Overview: Presenting an overview of the current situation, problems,
and solution
Chapter 2 Theoretical Foundations: Overview of System E –Learning, Cloud
computing, Google App Engine and JSP programming language
Chapter 3 Contents and results
Keywords : JavaServer Pages, Google App Engine, Test Of Online, Online Tests
Trang 17CHƯƠNG 1 TỔNG QUAN
1.1 ĐẶT VẤN ĐỀ
Việc ứng dụng Công nghệ thông tin (CNTT) trong Giáo dục nhằm nâng cao chất lượng quản lý đào tạo cũng như công tác giảng dạy và học tập mang lại hiệu quả cao
Do đó, hầu hết các trường Đại học, Cao đẳng, Trung cấp nghề, Trung học phổ thông,
kể cả Tiểu học và Trung học cơ sở đã và đang ứng dụng những thành tựu CNTT, bước đầu đạt được những thành công nhất định
Nhận thấy những hiệu quả mang lại từ việc ứng dụng CNTT chúng tôi mạnh dạn đề xuất xây dựng Hệ thống hỗ trợ thi trắc nghiệm trực tuyến nhằm đáp ứng một số nhu cầu cơ bản như: Xây dựng ngân hàng câu hỏi và đáp án, tạo đề thi, tổ chức thi, chấm thi, lưu trữ và quản lý điểm thi, quản lý thông tin Giáo viên, Sinh viên,…
Bước đầu triển khai thí điểm tại Trường Trung Cấp Phạm Ngọc Thạch Cần Thơ, sau đó tiến hành nhân rộng giải pháp đến các cơ sở quản lý giáo dục đào tạo nhằm tiết kiệm chi phí đầu tư, thời gian, công sức của cả người quản lý, giảng viên và sinh viên, đặc biệt là công tác tổ chức thi, đánh giá và lưu trữ kết quả học tập của sinh viên Hàng năm, Trường Trung Cấp Phạm Ngọc Thạch Cần Thơ tuyển sinh khoảng 1.400 tân sinh viên theo học 4 ngành trung cấp chuyên nghiệp (Y sĩ, Dược sĩ, Kế toán ngân hàng, Công nghệ thông tin) và đang có xu hướng gia tăng dẫn đến sự bùng nổ dữ liệu lưu trữ Hiện nay, công tác quản lý phụ thuộc khá nhiều vào phướng pháp thủ công và khá tốn kém
Trước những yêu cầu thực tế đó, em xin đề xuất đề tài “Nghiên cứu và xây dựng website hỗ trợ thi trắc nghiệm trực tuyến với jsp dựa trên công nghệ Google App Engine” để giải quyết vấn đề trên
1.2 LỊCH SỬ GIẢI QUYẾT VẤN ĐỀ
Hầu hết các cơ sở giáo dục, trung tâm đào tạo đã và đang ứng dụng CNTT hỗ trợ trong công tác tổ chức thi trực tuyến Nhìn chung Hệ thống hỗ trợ thi trực tuyến thực
sự chưa tiện dụng, hạn chế về công nghệ sử dụng hoặc chi phí đầu tư cao, chậm chạp trong việc cập nhật công nghệ mới Một trong những công nghệ đang trở thành xu hướng đó là “Công nghệ điện toán đám mây”
Một số đề tài, một số nghiên cứu về hệ thống hỗ trợ thi trắc nghiệm trực tuyến như:
Đề tài: “Xây dựng hệ thống quản lý và tổ chức thi trắc nghiệm trên mạng Intranet” của sinh viên Đại học Nguyễn Thị Phương Như - Nguyễn Minh Phương, Cần Thơ,
Trang 18tháng 02, năm 2003 Đã xây dựng thành công và giải quyết được một số yêu cầu cơ bản của một hệ thống quản lý và tổ chức thi trắc nghiệm trực tuyến như: Soạn câu hỏi, soạn đề thi, trộn đề, tổ chức thi… Tuy nhiên vẫn còn một số hạn chế như: Hạn chế về công nghệ Giao diện vẫn chưa thân thiện với người sử dụng,…
Đề tài “Nghiên cứu xây dựng Hệ thống thi trắc nghiệm trực tuyến cho Trường THPT chuyên Nguyễn Bỉnh Khiêm theo Công nghệ điện toán đám mây của Google” của học viên cao học Trần Trúc Quỳnh Như, Cần Thơ, tháng 11 năm 2014 Tuy nhiên,
đề tài hướng nghiên cứu hơn là xây dựng ứng dụng thực tiễn
Với đề tài: “Nghiên cứu và xây dựng website hỗ trợ thi trắc nghiệm trực tuyến với jsp dựa trên công nghệ Google App Engine” Đề tài xây dựng hoàn chỉnh hệ thống thi trắc nghiệm trực tuyến và cũng cấp khá đầy đủ chức năng dành cho người quản trị, giảng viên, sinh viên Ứng dụng thành công Công nghệ điện toán đám mây, giảm chi phí đầu tư và triển khai hệ thống
1.3 PHẠM VI ĐỀ TÀI
Đề tài bao gồm tìm hiểu công nghệ điện toán đám mây của Google (GAE), ngôn ngữ lập trình JSP và ứng dụng kết quả nghiên cứu vào xây dựng ứng dụng thực tiễn hỗ trợ thi trắc nghiệm trực tuyến cho các cơ sở giáo dục và đào tạo Điển hình là cho Trường Trung cấp Phạm Ngọc Thạch
1.4 PHƯƠNG PHÁP NGHIÊN CỨU
Về lý thuyết
- Tìm hiểu việc ứng dụng CNTT thực tế tại các cơ sở giáo dục và đào tạo, từ đó nắm rõ yêu cầu thiết thực, cũng như những tồn tại, lựa chọn các giải pháp cho những hạn chế ấy
- Khảo sát các hệ thống sẵn có để phân tích ưu nhược điểm, tham khảo những kết quả nghiên cứu, các đề tài tương tự hoặc có điểm tương đồng nhằm lựa chọn giải pháp hiệu hiệu quả giải quyết các vấn đề đã nêu
- Nghiên cứu và tìm hiểu giải pháp cho bài toán “Thi trực tuyến” dựa trên công nghệ điện toán đám mây
- Tìm hiểu và ứng dụng ngôn ngữ lập trình JSP, tìm hiểu về Hệ thống E-Learning, công nghệ Điện toán đám mây và Google App Engine
- Thu thập tài liệu và tiến hành phân tích thiết kế hệ thống cho chương trình
Về thực nghiệm
- Đặc tả yêu cầu hệ thống
Trang 19- Mô tả tổng quan và chi tiết các chức năng của hệ thống
- Phân tích và phân loại chức năng, người dùng của hệ thống
- Phân tích yêu cầu dựa trên loại người dùng, theo nhóm chức năng
- Mô hình hóa hệ thống với các loại sơ đồ:
- Mô tả cơ sở dữ liệu
- Dùng phần mềm PowerDesigner 16.1 để vẽ các sơ đồ phân tích, thiết kế hệ thống thông tin
- Dùng phần mềm Eclipse và cài đặt một số plugin cần thiết giúp hỗ trợ lập trình với GAE
Trang 20CHƯƠNG 2
CƠ SỞ LÝ THUYẾT
2.1 GIỚI THIỆU SƠ LƯỢC VỀ E - LEARING
2.1.1 Khái niệm E-learning
Một trong những thuật ngữ liên quan đến đề tài là thuật ngữ E-learning (viết tắt của Electronic Learning) Hiện nay, theo các quan điểm và dưới các hình thức khác nhau
có rất nhiều cách hiểu về E-Learning Hiểu theo nghĩa rộng, E-learning là một thuật ngữ dùng để mô tả việc học tập, đào tạo dựa trên công nghệ thông tin và truyền thông, đặc biệt là công nghệ thông tin
Theo quan điểm hiện đại, E-learning là sự phân phát các nội dung học sử dụng các công cụ điện tử hiện đại như máy tính, mạng vệ tinh, mang Internet, Intranet,… trong đó nội dung học có thể thu được từ các website, đĩa CD, băng video, audio… thông qua một máy tính hay TV; người dạy và người học có thể giao tiếp với nhau qua mạng dưới các hình thức như: e-mail, thảo luận trực tuyến (chat), diễn đàn (forum), hội thảo video…
Có hai hình thức giao tiếp giữa người dạy và người học: giao tiếp đồng bộ (Synchronous) và giao tiếp không đồng bộ (Asynchronous)
- Giao tiếp đồng bộ là hình thức giao tiếp trong đó có nhiều người truy cập mạng tại cùng một thời và trao đổi thông tin trực tiếp với nhau như: thảo luận trực tuyến, hội thảo video, nghe đài phát sóng trực tiếp, xem tivi phát sóng trực tiếp…
- Giao tiếp không đồng bộ là hình thức mà những người giao tiếp không nhất thiết phải truy cập mạng tại cùng một thời điểm, ví dụ như: các khoá tự học qua Internet, CD-ROM, e-mail, diễn đàn Đặc trưng của kiểu học này là giảng viên phải chuẩn bị tài liệu khoá học trước khi khoá học diễn ra Học viên được tự do chọn lựa thời gian tham gia khoá học
2.1.2 Một số hình thức E-Learning
Có một số hình thức đào tạo bằng E-Learning, cụ thể như sau:
- Đào tạo dựa trên công nghệ (TBT - Technology-Based Training) là hình thức đào tạo có sự áp dụng công nghệ, đặc biệt là dựa trên công nghệ thông tin
- Đào tạo dựa trên máy tính (CBT - Computer-Based Training) Hiểu theo nghĩa rộng, thuật ngữ này nói đến bất kỳ một hình thức đào tạo nào có sử dụng máy tính Nhưng thông thường thuật ngữ này được hiểu theo nghĩa hẹp để nói đến các
Trang 21ứng dụng (phần mềm) đào tạo trên các đĩa CD-ROM hoặc cài trên các máy tính độc lập, không nối mạng, không có giao tiếp với thế giới bên ngoài Thuật ngữ này được hiểu đồng nhất với thuật ngữ CD-ROM Based Training
- Đào tạo dựa trên web (WBT - Web-Based Training): là hình thức đào tạo sử dụng công nghệ web Nội dung học, các thông tin quản lý khoá học, thông tin về người học được lưu trữ trên máy chủ và người dùng có thể dễ dàng truy cập thông qua trình duyệt web Người học có thể giao tiếp với nhau và với giáo viên,
sử dụng các chức năng trao đổi trực tiếp, diễn đàn, e-mail thậm chí có thể nghe được giọng nói và nhìn thấy hình ảnh của người giao tiếp với mình
- Đào tạo trực tuyến (Online Learning/Training): là hình thức đào tạo có sử dụng kết nối mạng để thực hiện việc học: lấy tài liệu học, giao tiếp giữa người học với nhau và với giáo viên
- Đào tạo từ xa (Distance Learning): Thuật ngữ này nói đến hình thức đào tạo trong đó người dạy và người học không ở cùng một chỗ, thậm chí không cùng một thời điểm Ví dụ như việc đào tạo sử dụng công nghệ hội thảo cầu truyền hình hoặc công nghệ web
2.1.3 Tình hình phát triển và ứng dụng E-Learning
2.1.3.1 Trên thế giới
E-learning phát triển không đồng đều tại các khu vực trên thế giới E-learning phát triển mạnh nhất ở khu vực Bắc Mỹ Ở châu Âu E-Learning cũng rất có triển vọng, trong khi đó châu Á lại là khu vực ứng dụng công nghệ này ít hơn
Trong những gần đây, Châu Âu đã có một thái độ tích cực đối với việc phát triển công nghệ thông tin cũng như ứng dụng nó trong mọi lĩnh vực kinh tế - xã hội, đặc biệt là ứng dụng trong hệ thống giáo dục Các nước trong Cộng đồng châu Âu đều nhận thức được tiềm năng to lớn mà công nghệ thông tin mang lại trong việc mở rộng phạm vi, làm phong phú thêm nội dung và nâng cao chất lượng của nền giáo dục Ngoài việc tích cực triển khai E-Learning tại mỗi nước, giữa các nước châu Âu có nhiều sự hợp tác đa quốc gia trong lĩnh vực E-learning Điển hình là dự án xây dựng mạng xuyên châu Âu EuroPACE Đây là mạng E-Learning của 36 trường đại học hàng đầu châu Âu thuộc các quốc gia như Đan Mạch, Hà Lan, Bỉ, Anh, Pháp cùng hợp tác với công ty E-learning của Mỹ Docent nhằm cung cấp các khoá học về các lĩnh vực như khoa học, nghệ thuật, con người phù hợp với nhu cầu học của các sinh viên đại học, sau đại học, các nhà chuyên môn ở châu Âu
Tại Châu Á, E-Learning vẫn đang ở trong tình trạng sơ khai, chưa có nhiều thành
Trang 22tạo truyền thống của văn hóa châu á, vấn đề ngôn ngữ không đồng nhất, cơ sở hạ tầng nghèo nàn và nền kinh tế lạc hậu ở một số quốc gia châu á Tuy vậy, đó chỉ là những rào cản tạm thời do nhu cầu đào tạo ở châu lục này cũng đang trở nên ngày càng không thể đáp ứng được bởi các cơ sở giáo dục truyền thống buộc các quốc gia châu á đang dần dần phải thừa nhận tiềm năng không thể chối cãi mà E-Learning mang lại Một số quốc gia, đặc biệt là các nước có nền kinh tế phát triển hơn tại châu á cũng đang có những nỗ lực phát triển E-Learning tại đất nước mình như: Nhật Bản, Hàn Quốc, Singapore, Đài Loan, Trung Quốc,
2.1.3.2 Tại Việt Nam
Vào khoảng năm 2002 trở về trước, các tài liệu nghiên cứu, tìm hiểu về E-Learning
ở Việt Nam không nhiều Trong hai năm 2003-2004, việc nghiên cứu E-learning ở Việt Nam đã được nhiều đơn vị quan tâm hơn Gần đây các hội nghị, hội thảo về công nghệ thông tin và giáo dục đều có đề cập nhiều đến vấn đề E-Learning và khả năng áp dụng vào môi trường đào tạo ở Việt Nam như: Hội thảo nâng cao chất lượng đào tạo ĐHQGHN năm 2000, Hội nghị giáo dục đại học năm 2001 và gần đây là Hội thảo khoa học quốc gia lần thứ nhất về nghiên cứu phát triển và ứng dụng công nghệ thông tin và truyền thông ICT/rda 2/2003, Hội thảo khoa học quốc gia lần II về nghiên cứu phát triển và ứng dụng công nghệ thông tin và truyền thông ICT/rda 9/2004, và hội thảo khoa học “Nghiên cứu và triển khai E-Learning” do Viện Công nghệ Thông tin (ĐHQGHN) và Khoa Công nghệ Thông tin (Đại học Bách khoa Hà Nội) phối hợp tổ chức đầu tháng 3/2005 là hội thảo khoa học về E-Learning đầu tiên được tổ chức tại Việt Nam
Các trường đại học ở Việt Nam cũng bước đầu nghiên cứu và triển khai E-learning Một số đơn vị đã bước đầu triển khai các phần mềm hỗ trợ đào tạo và cho các kết quả khả quan: Đại học Công nghệ - ĐHQGHN, Viện CNTT - ĐHQGHN, Đại học Bách Khoa Hà Nội, ĐHQG TP HCM, Học viện Bưu chính Viễn thông, Gần đây nhất, Trung tâm Tin học Bộ Giáo dục & Đào tạo đã triển khai cổng E-learning nhằm cung cấp một cách có hệ thống các thông tin E-Learning trên thế giới và ở ViệtNam Bên cạnh đó, một số công ty phần mềm ở Việt Nam đã tung ra thị trường một số sản phẩm
hỗ trợ đào tạo đào tạo Tuy các sản phẩm này chưa phải là sản phẩm lớn, được đóng gói hoàn chỉnh nhưng đã bước đầu góp phần thúc đẩy sự phát triển E-Learning ở Việt Nam
Việt Nam đã gia nhập mạng E-Learning châu á (Asia E-learning Network - AEN, www.asia-elearning.net) với sự tham gia của Bộ Giáo dục & Đào tạo, Bộ Khoa học - Công nghệ, trường Đại học Bách Khoa, Bộ Bưu chính Viễn Thông
Trang 23Điều này cho thấy tình hình nghiên cứu và ứng dụng loại hình đào tạo này đang được quan tâm ở Việt Nam Tuy nhiên, so với các nước trong khu vực E-Learning ở Việt Nam mới chỉ ở giai đoạn đầu còn nhiều việc phải làm mới tiến kịp các nước
2.2 TỔNG QUAN VỀ CÔNG NGHỆ ĐIỆN TOÁN ĐÁM MÂY
2.2.1 Định nghĩa
Hình 2.1 Mô hình điện toán đám mây
Điện toán đám mây (Cloud computing) mô hình dịch vụ cho phép người dùng truy cập tài nguyên điện toán dùng chung (mạng, server, lưu trữ, ứng dụng, dịch vụ) thông qua kết nối mạng, một cách dễ dàng, mọi lúc mọi nơi, theo yêu cầu Tài nguyên điện toán này có thể được thiết lập hoặc hủy bỏ nhanh chóng bởi người dùng mà không cần
sự can thiệp của Nhà cung cấp dịch vụ
2.2.2 Cấu trúc phân lớp của mô hình điện toán đám mây
Hình 2.2 Cấu trúc phân lớp của mô hình điện toán đám mây
Client Application Platform Infrastructure Server
Trang 24Về cơ bản, “điện toán đám mây” được chia ra thành 5 lớp riêng biệt, có tác động qua lại lẫn nhau:
- Client (Lớp Khách hàng): Lớp Client của điện toán đám mây bao gồm phần cứng
và phần mềm, để dựa vào đó, khách hàng có thể truy cập và sử dụng các ứng dụng/dịch vụ được cung cấp từ điện toán đám mây Chẳng hạn máy tính và đường dây kết nối Internet (thiết bị phần cứng) và các trình duyệt web (phần mềm)…
- Application (Lớp Ứng dụng): Lớp ứng dụng của điện toán đám mây làm nhiệm
vụ phân phối phần mềm như một dịch vụ thông qua Internet, người dùng không cần phải cài đặt và chạy các ứng dụng đó trên máy tính của mình, các ứng dụng
dễ dàng được chỉnh sửa và người dùng dễ dàng nhận được sự hỗ trợ Các đặc trưng chính của lớp ứng dụng bao gồm:
phía khách hàng (lớp Client), cho phép khách hàng truy cập các ứng dụng
từ xa thông qua Website
bản vá lỗi, download phiên bản mới… bởi chúng sẽ được thực hiện từ các
“đám mây”
- Platform (Lớp Nền tảng):
cấu trúc hạ tầng của “đám mây”
+ Là điểm tựa cho lớp ứng dụng, cho phép các ứng dụng hoạt động trên nền tảng đó
phải trang bị cơ sở hạ tầng (phần cứng và phần mềm) của riêng mình
- Infrastructure (Lớp Cơ sở hạ tầng):
khách hàng phải bỏ tiền ra mua các server, phần mềm, trung tâm dữ liệu hoặc thiết bị kết nối… giờ đây, họ vẫn có thể có đầy đủ tài nguyên để sử dụng mà chi phí được giảm thiểu, hoặc thậm chí là miễn phí
- Server (Lớp Server - Máy chủ):
xây dựng đặc biệt để cung cấp các dịch vụ của đám mây
Trang 25+ Các server phải được xây dựng và có cấu hình đủ mạnh (thậm chí là rất mạnh) để đám ứng nhu cầu sử dụng của số lượng đông đảo các người dùng
và các nhu cầu ngày càng cao của họ
2.2.3 Các mô hình dịch vụ
Hình 2.3 Các tầng kiến trúc của điện toán đám mây 2.2.3.1 Cơ sở hạ tầng như một dịch vụ (IaaS - Infrastructure as a Service)
Hình 2.4 Cơ sở hạ tầng như dịch vụ (IaaS)
Cung cấp phần cứng dưới dạng services
Trang 26Infrastructure as a service (IaaS) Là tầng thấp nhất của ĐTĐM, nơi tập hợp các tài sản vật lý như các phần cứng máy chủ, hệ thống lưu trữ và các thiết bị mạng, được chia sẽ và cung cấp dưới dạng dịch vụ IaaS cho các tổ chức hay doanh nghiệp khác nhau Cũng giống như dịch vụ PaaS, ảo hóa là công nghệ được sử dụng rộng rãi để tạo
ra cơ chế chia sẽ và phân phối các nguồn tài nguyên theo yêu cầu
Ví dụ về các dịch vụ IaaS như IBM BlueHouse, Vmware, Amazon EC2, Microsoft Azure Platform, Sun Parascale Cloud Storage…
2.2.3.2 Phần mềm như một dịch vụ (SaaS - Software as a Service)
Hình 2.5 Phần mềm như một dịch vụ (SaaS)
Dịch vụ phần mềm SaaS (Software as a Service): Dịch vụ SaaS cung cấp các ứng dụng hoàn chỉnh như một dịch vụ theo yêu cầu cho khách hàng với chỉ một phiên bản cài đặt Khách hàng lựa chọn ứng dụng phù hợp với nhu cầu và sử dụng mà không quan tâm tới hay bỏ công sức quản lý tài nguyên tính toán bên dưới Các ứng dụng SaaS cho người cuối cùng phổ biến là các ứng dụng office Online của Microsoft hay Google Docs của Google
Ví dụ về các dịch vụ SaaS như Zoho , Salesforce, Google Search , Yahoo! Weather…
Trang 272.2.3.3 Nền tảng như một dịch vụ (PaaS - Platform as a Service)
Một số ví dụ điển hình về PaaS là Force.com của Salesforce.com, Google App Engine, Yahoo Pipes…
Cung cấp các hàm API cho các platform của Sun, Microsoft, Oracle … dưới dạng các dịch vụ
Trang 282.2.4 Các mô hình triển khai điện toán đám mây
Hình 2.7 Các mô hình triển khai điện toán đám mây 2.2.4.1 Đám mây công cộng (Public cloud)
Mô hình có hạ tầng Cloud Computing được một tổ chức sở hữu và cung cấp dịch vụ rộng rãi có tất cả khách hàng thông qua hạ tầng mạng Internet hoặc các mạng công cộng diện rộng Các ứng dụng khác nhau chia sẽ chung tài nguyên tính toán, mạng và lưu trữ Do vậy, hạ tầng Cloud Computing được thiết lập để đảm bảo cô lập về dữ liệu giữa các khách hàng và tách biệt về truy cập
Hình 2.8 Đám mây công cộng (Public cloud)
Trang 29Các dịch vụ Public Cloud hướng tới số lượng khách hàng lớn nên thường có năng lực về hạ tầng cao, đáp ứng nhu cầu tính toán linh hoạt, đem lại chi phí thấp cho khách hàng Do đó khách hàng của dịch vụ trên Public Cloud sẽ bao gồm tất cả các tầng mà khách hàng cá nhân và doanh nghiệp nhỏ sẽ được lợi thế trong việc dễ dàng tiếp cận các ứng dụng công nghệ cao, chất lượng mà không phải đầu tư ban đầu, chi phí sử dụng thấp, linh hoạt
2.2.4.2 Đám mây cộng đồng (Community cloud)
Là mô hình trong đó hạ tầng đám mây được chia sẽ bởi một số tổ chức cho cộng đồng người dùng trong các tổ chức đó Các tổ chức này do đặc thù không tiếp cận với các dịch vụ Public Cloud và chia sẽ chung một hạ tầng CC để nâng cao hiệu quả đầu
hạ tầng đám mây có thể được đặt bên trong hoặc bên ngoài tổ chức sở hữu (tại bên thứ
ba kiêm vận hành hoặc thậm chí là một bên thứ tư)
Trang 30Hình 2.10 Đám mây riêng (Private cloud)
Private Cloud được các tổ chức, doanh nghiệp lớn xây dựng cho mình nhằm khai thác ưu điểm được các tổ chức, doanh nghiệp lớn xây dựng cho mình nhằm khai thác
ưu điểm về công nghệ và khả năng quản trị của Cloud Computing Với Private Cloud, các doanh nghiệp tối ưu được hạ tầng IT của mình, nâng cao hiệu quả sử dụng, quản lý trong cấp phát và thu hồi tài nguyên, qua đó giảm thời gian đưa sản phẩm sản xuất, kinh doanh ra thị trường
2.2.4.4 Đám mây lai (Hybird cloud)
Hình 2.11 Đám mây lai (Hybird cloud)
Trang 31Mô hình đám mây lai (Hybrid Cloud) là mô hình bao gồm hai hoặc nhiều hơn các đám mây trên tích hợp với nhau Mô hình Hybrid Cloud cho phép chia sẽ hạ tầng hoặc đáp ứng nhu cầu trao đổi dữ liệu
2.2.5 Các nhà cung cấp:
Điện toán đám mây đang được phát triển và cung cấp bởi nhiều nhà cung cấp, trong đó có Amazon, Google, DataSynapse, và Salesforce cũng như những nhà cung cấp truyền thống như Sun Microsystems, HP, IBM, Intel, Cisco và Microsoft[7] Nó đang được nhiều người dùng cá nhân cho đến những công ty lớn như General Electric, L'Oréal, Procter & Gamble và Valeo chấp nhận và sử dụng
2.2.6 Ưu điểm và nhược điểm
2.2.6.1 Ưu điểm
- Tính linh động: Người dùng có thể thoải mái lựa chọn các dịch vụ phù hợp với nhu cầu của mình, cũng như có thể bỏ bớt những thành phần mà mình không muốn
- Giảm bớt phí: Người dùng không chỉ giảm bớt chi phí bản quyền mà còn giảm phần lớn chi phí cho việc mua và bảo dưỡng máy chủ
- Tạo nên sự độc lập: Người dùng sẽ không còn bị bó hẹp với 1 thiết bị hay 1 vị trí
cụ thể nào nữa Với điện toán đám mây, phần mềm, dữ liệu có thể được truy cập
và sử dụng từ bất kì đâu, trên bất kì thiết bị nào mà không cần phải quan tâm đến giới hạn phần cứng cũng như địa lý
- Tăng cường độ tin cậy: Dữ liệu trong mô hình điện toán đám mây được lưu trữ 1 cách phân tán tại nhiều cụm máy chủ tại nhiều vị trí khác nhau
- Bảo mật: Việc tập trung dữ liệu từ nhiều nguồn khác nhau sẽ giúp các chuyên gia bảo mật tăng cường khả năng bảo vệ dữ liệu của người dùng, cũng như giảm thiểu rủi ro bị đánh cắp toàn bộ dữ liệu
- Bảo trì dễ dàng: Mọi phần mềm đều nằm trên server, lúc này, người dùng sẽ không cần lo lắng cập nhật hay sửa lỗi phần mềm nữa Và các lập trình viên cũng
dễ dàng hơn trong việc cài đặt, nâng cấp ứng dụng của mình
- Quản lý tài nguyên: Tài nguyên sử dụng của điện toán đám mây luôn được quản lý và thống kê trên từng khách hàng và ứng dụng theo từng ngày, từng tuần, từng tháng Đảm bảo cho việc định lượng giá cả của mỗi dịch vụ do ĐTDM cung cấp
để người dùng có thể lựa chọn phù hợp
Trang 32- Tính di động của dữ liệu và quyền sở hữu: Một câu hỏi đặt ra, liệu người dùng có thể chia sẽ dữ liệu từ dịch vụ đám mây này sang dịch vụ đám mây khác? Hoặc trong những trường hợp không muốn tiếp tục sử dụng dịch vụ cung cấp từ các đám mây, liệu người dùng có thể sao lưu toàn bộ dữ liệu của họ từ đám mây? Và làm cách nào để người dùng có thể chắc chắn rằng các dịch vụ đám mây sẽ không hủy toàn bộ dữ liệu của họ trong trường hợp dịch vụ ngừng hoạt động
- Khả năng bảo mật: Vấn đề tập trung dữ liệu trên các “đám mây” là cách thức hiệu quả để tăng cường bảo mật, nhưng mặt khác cũng lại chính là mối lo ngại của người sử dụng dịch vụ của điện toán đám mây
2.3 Tìm hiểu Google App Engine
2.3.1 Khái niệm
Google App Engine (App Engine hay GAE) là một nền tảng điện toán đám mây của Google để phát triển và lưu trữ ứng dụng web trong những trung tâm dữ liệu do Google quản lý (google-managed data centers) Bản beta được giới thiệu lần đầu tiên vào ngày 7 tháng 4 năm 2008
GAE cho phép chạy các ứng dụng web trên cơ sở hạ tầng của Google Ứng dụng App Engine dễ dàng xây dựng, dễ bảo trì, dễ dàng co giãn ứng dụng phù hợp với lưu lượng truy cập và nhu cầu lưu trữ dữ liệu lớn
Người lập trình có thể sử dụng tên miền của mình thông qua GAE Hoặc có thể dùng sub-domain miễn phí của appspot.com
GAE cho phép được host miễn phí với dung lượng 500 MB lưu trữ và cho phép 10
GB băng thông lưu chuyển mỗi ngày hay tương đương 5 triệu pageview hàng tháng, vượt qua mức này chúng ta sẽ phải trả phí Dùng GAE, chúng ta khỏi phải thiết kế CSDL, viết SQL để truy vấn dữ liệu Chúng ta chỉ cần thiết kế các lớp và GAE tự động lo phần làm việc với CSDL
Trang 33Hiện GAE hỗ trợ 2 loại ngôn ngữ là: Python và Java Một số ngôn ngữ khác như PHP cũng có thể chạy được nếu cài cùng với bộ chuyển từ PHP sang Java
Ứng dụng GAE chạy như một thực thể cô lập trong môi trường gồm nhiều thành phần (multitenant environment) GAE chia sẽ những nguồn tài nguyên giữa các ứng dụng nhưng cô lập về dữ liệu và bảo mật giữa những thành phần với nhau
Ứng dụng của chúng ta có thể sử dụng một số các dịch vụ của Google, như là URLFetch Bởi vì chúng ta không thể mở cổng (port) một cách trực tiếp trong ứng dụng của mình, nên chúng ta phải lệ thuộc vào dịch vụ này, ví dụ: yêu cầu Google mở cổng và thực thi ứng dụng của mình
2.3.3 Các tính năng GAE hỗ trợ
Datastore: kho chứa dữ liệu và quản lý dữ liệu của đám mây Google App Engine Blobstore: cho phép ứng dụng có thể xử lý những đối tượng dữ liệu có dung lượng
lớn
Capabilities: cho phép chúng ta có thể xác định được khi nào các service của App
Engine có thể hoặc không thể phục vụ chúng ta
Memcache: lưu trữ dữ liệu trên bộ nhớ thay vì trên ổ đĩa để tăng tốc độ truy cập URL Fetch: giúp ứng dụng có thể tương tác với các ứng dụng khác thông qua giao
thức HTTP và HTTPS
Task queues: cho phép các bộ xử lý request xác định công việc sẽ làm trong thời
gian tiếp theo
User service: Hỗ trợ cung cấp tính năng đăng nhập, đăng xuất hệ thống thông qua
tài khoản gmail
Trang 342.3.4 Các thành phần chính của GAE
2.3.4.1 Môi trường thực thi (Runtime Environment)
Một ứng dụng GAE đáp ứng các yêu cầu web Một yêu cầu web sẽ bắt đầu khi có một người dùng hay điển hình là các trình duyệt web của người dùng gửi một yêu cầu truy cập vào ứng dụng thông qua giao thức HTTP Khi GAE nhận được yêu cầu, nó sẽ xác định ứng dụng dựa vào tên miền, hoặc tên miền con <<tên website>>.appspot.com (cung cấp miễn phí mỗi ứng dụng) hoặc là một tên miền riêng của chúng ta đã được đăng ký và thiết lập với GAE GAE lựa chọn một máy chủ từ nhiều máy chủ để xử lý các yêu cầu đó Sau đó, GAE sẽ gửi các yêu cầu đã nhận được từ người dùng đến ứng dụng phù hợp để xử lý, sau khi đã xử lý xong các ứng dụng này sẽ gửi dữ liệu trả về cho GAE, GAE sẽ nhận dữ liệu phản hồi từ các ứng dụng và trả về cho người dùng thông qua trình duyệt web
GAE cung cấp hai môi trường thực thi tốt cho các ứng dụng Đó là Java và Python Môi trường chúng ta chọn sẽ phụ thuộc vào ngôn ngữ và những công nghệ liên quan khi chúng ta dùng để phát triển ứng dụng
Python Runtime Environment
GAE hỗ trợ Python Runtime phiên bản 2.5.2 Hầu hết các thư viện của Python Standard Library đều được hỗ trợ Tuy nhiên do vấn đề về security nên các extensions viết bằng C sẽ không hỗ trợ Điều này có nghĩa là chúng ta không thể nhúng C extensions vào ứng dụng của chúng ta khi sử dụng GAE
Python Runtime cung cấp Aps cho datastore, Google Account, GAE service Để tiện lợi cho việc phát triển web GAE cũng cung cấp 1 web framework đơn giản là webapp Do viết bằng ngôn ngữ Python nên AppEngine hỗ trợ hầu hết các Python frameword như Django, CherryPy, Pylon, web.py với một ít thay đổi nhất định
Java Runtime Environment
Chúng ta có thể phát triển ứng dụng của mình cho Java Runtime Environment sử dụng phổ biến công cụ phát triển web Java và các tiêu chuẩn API Ứng dụng của chúng ta tương tác với môi trường bằng các sử dụng the Java Servlet standard, và có thể sử dụng các công nghệ ứng dụng web phổ biến như JavaServer Pages (JSP)
Java Runtime Environment sử dụng Java 6 Các GAE java Software Developement Kit (SDK) hỗ trợ phát triển các ứng dụng bằng các sử dụng Java 5 hoặc 6
Đối với các kho dữ liệu GAE, Java SDK ảo gồm việc triển khai của Java Data Object (JDO) và Java Persistence API (JDA) interfaces Ứng dụng của chúng ta có thể
sử dụng các API JavaMail để gửi tin nhắn email với dịch vụ App Engine Mail Các java.net HTTP API truy cập vào GAE lấy URL dịch vụ GAE cũng bao gồm các API
Trang 35cấp thấp cho các dịch vụ của mình để thực hiện thêm bộ điều hợp hoặc sử dụng trực tiếp từ ứng dụng
Thông thường, các nhà phát triển Java sử dụng các ngôn ngữ lập trình Java và các API để thực hiện các ứng dụng web cho Java Virtual Machine (JVM) Với việc sử dụng các trình biên dịch tương thích với JVM, người phiên dịch, chúng ta cũng có thể
sử dụng các ngôn ngữ khác để phát triển các ứng dụng web, ví dụ như JavaScript, Ruby, hoặc Scala
2.3.4.2 Các file server tĩnh (Static file Servers)
Hầu hết các website có một số tài nguyên mà chúng chuyển đến các trình duyệt không thay đổi trong suốt hoạt động của site Ví dụ như các hình ảnh và các file Css
hỗ trợ hiển thị của trang, các đoạn mã Javascript chạy trên trình duyện, và các file HTML tĩnh Vì việc gửi những file này không cần đến việc gọi code của ứng dụng, nói cách khác, việc này không cần thiết, làm giảm hiệu quả làm việc của các server ứng dụng
GAE cung cấp một tập các server tách biệt chuyên làm nhiệm vụ trao đổi các file tĩnh này Những server nói trên tối ưu hóa cho kiến trúc bên trong và hạ tầng mạng để
xử lý các yêu cầu cho các tài nguyên tĩnh Đối với client, các file tĩnh này cũng giống như các tài nguyên khác được cung cấp bởi ứng dụng của chúng ta
Chúng ta upload các file tĩnh cùng với code ứng dụng Chúng ta có thể cấu hình vài cách hiển thị nhất định cho các file này, bao gồm các URL cho file tĩnh, loại nội dung,
và các hướng dẫn cho trình duyệt để lưu các bản sao file này trong bộ nhớ cache để giảm lưu lượng và tăng tốc cho trang web
2.3.4.3 Kho dữ liệu (Datastore)
2.3.4.3.1 Giới thiệu
Hầu hết mọi ứng dụng web đều cần một nơi để chứa thông tin khi xử lý yêu cầu từ phía client và lấy thông tin cho những lần yêu cầu sau này Việc sử dụng một server làm một trung tâm dữ liệu là một ý tưởng rất hay nhưng có vấn đề xảy ra khi quá nhiều kết nối được gửi tới server này
Hệ thống database của Google GAE gần giống như một đối tượng database Thiết
kế của GAE datastore chỉ là trừu tượng để cho GAE có thể xử lý việc phân tán và co giãn các ứng dụng Chính vì thế trong các đoạn mã của chúng ta sẽ quan tâm đến những thứ khác được nêu sau đây
Trang 36 Thực thể (Entities) và Thuộc tính (Properties)
Một ứng dụng GAE có thể chứa dữ liệu trong một hay nhiều thực thể datastore Mỗi thực thể có một hay nhiều thuộc tính, mỗi thuộc tính đều có tên và giá trị Mỗi thực thể đều được phân loại để tiện cho việc truy vấn
Ở cái nhìn đầu tiên, chúng ta thấy thực thể có thể gần giống các hàng (row) trong một bảng trong cơ sở dữ liệu quan hệ Và mỗi thuộc tính có thể giống với một cột Tuy nhiên đối với các thực thể cùng loại với nhau có thể có các thuộc tính khác nhau Thứ
2, các thực thể có thể có cùng thuộc tính với các thực thể cùng loại khác nhưng khác
về kiểu dữ liệu Một điểm khác nhau nữa giữa thực thể và các hàng (row) là các thực thể có thể có nhiều giá trị cho một thuộc tính đơn lẻ
Mỗi thực thể có một khóa riêng (key) phân biệt lẫn nhau được cung cấp bởi ứng dụng hoặc do GAE Khác với CSDL quan hệ, khoá của thực thể không phải là thuộc tính, nó tồn tại độc lập với thực thể Khoá của thực thể không được thay đổi khi thực thể đã được tạo ra
Truy vấn (Queries) và Chỉ mục (Indexes)
Một câu truy vấn trên datastore trả về không hoặc nhiều thực thể cùng loại với nhau Nó cũng có thể trả về các khóa của thực thể Câu truy vấn có thể dựa vào các giá trị thuộc tính của thực thể và được sắp xếp theo giá trị của thuộc tính Câu truy vấn cũng có thể làm việc với các khóa của thực thể
Với GAE, mỗi câu truy vấn sẽ có một chỉ mục trong datastore Khi ứng dụng cần thực hiên một câu truy vấn, thì datastore sẽ tìm chỉ mục của câu truy vấn đó Khi chúng ta tạo mới một thực thể và cập nhật cái cũ thì datastore cũng sẽ cập nhật lại chỉ mục Điều này giúp cho câu truy vấn được nhanh hơn
Phiên giao dịch (Transaction)
Khi một ứng dụng có quá nhiều client liên tục đọc hay ghi cùng một dữ liệu ở cùng một thời điểm, thì phiên giao dịch rất cần thiết để dữ liệu không bị đọc sai Mỗi phiên giao dịch là đơn vị nhỏ nhất và chỉ có hai trạng thái là thành công hoặc thất bại
Một ứng dụng đọc hay cập nhật nhiều thực thể trong một phiên giao dịch, nhưng nó phải nói cho GAE biết những thực thể nào sẽ được cập nhật khi nó tạo ra nhiều thực thể Ứng dụng làm được điều này bởi việc tạo ra nhóm thực thể Nhờ nhóm thực thể, GAE sẽ biết được các thực thể sẽ phân tán như thế nào qua các server, vì thế nó có thể khẳng định chắc chắn là phiên giao dịch thành công hay thất bại GAE cũng hỗ trợ những phiên giao dịch nội bộ (local transaction)
Nếu một người dùng cố gắng cập nhật một thực thể trong khi người khác đang cập nhật thực thể đó thì datastore sẽ ngay lập tức trả về một biệt lệ báo lỗi Trong thuật
Trang 37ngữ database, thì ta nói GAE sử dụng “optimistic concurrency control” Với chỉ mục
và “optimistic concurrency control”, GAE được thiết kế giúp cho ứng dụng có thể đọc
dữ liệu nhanh hơn và đảm bảo hơn
cơ sở dữ liệu mà không cần sử dụng bất kỳ mã cơ sở dữ liệu cụ thể, bao gồm cả cơ sở
dữ liệu quan hệ, cơ sở dữ liệu phân cấp, và cơ sở dữ liệu đối tượng Như các tiêu chuẩn giao diện khác, JDO làm đơn giản việc lưu trữ khác nhau trong ứng dụng của chúng ta
Cách khai báo một đối tượng dữ liệu của JDO
* Get value of StatusId
* @return the StatusId
*/
public String getStatusId() {
return StatusId;
Trang 38}
/**
* Set the value for StatusId
* @param StatusId the StatusId to set
* Get value of StatusName
* @return the StatusName
* Set the value for StatusName
* @param StatusName the StatusName to set
Xác định lớp dữ liệu với JDO
Chúng ta có thể sử dụng JDO để lưu đối tượng dữ liệu Java (POJOs) trong datastore Mỗi đối tượng được persistent với PersistenceManager trở thành một thực
Trang 39thể trong datastore Chúng ta sử dụng chú thích (annotation) để nói với JDO cách lưu trữ và tạo ra đối tượng của lớp dữ liệu
Ví dụ: Tương ứng 1 Object được lưu bởi JDO sẽ trở thành một thực thể trong App Engine datastore Khi đó loại thực thể sẽ là tên của class và tên của thuộc tính class là tên thuộc tính của thực thể
Khóa chính
Mỗi thực thể có một key nhằm xác định tính duy nhất trong Google App Engine Một key hoàn chỉnh bao gồm Application ID, loại và ID của thực thể (Key cũng chứa thông tin về nhóm thực thể)
Đối tượng key được lưu trữ là một trường của đối tượng, ta xác định khóa chính bằng khai báo @PrimaryKey
Phân loại:
- Long: có kiểu là long, là id của thực thể được sinh ra tự động bởi datastore Sử dụng loại này cho đối tượng mà không ở trong một nhóm thực thể có key của thực thể cha được sinh ra ngẫu nhiên bởi datastore Giá trị của key được tạo ra khi đối tượng được lưu
- Unencoded String: là một chuỗi được cung cấp bởi ứng dụng khi đối tượng được tạo ra Đối với những đối tượng trong một nhóm mà khóa của thực thể cha được cung cấp bởi ứng dụng sẽ không sử dụng loại này
- Key: là đối tượng của com.google.appengine.api.datastore.Key Giá trị của Key bao gồm: khóa của thực thể cha (nếu có), chuỗi do ứng dụng tạo ra hoặc là ID do
private Key key;
public void setKey(Key key) {
this.key = key;
Trang 40}
Ứng dụng có thể tạo ra một thể hiện của Key sử dụng lớp KeyFactory
Ví dụ: Khai báo khóa chính sử dụng KeyFactory
Các thao tác dữ liệu với JDO:
Tạo một đối tượng dữ liệu:
Để lưu trữ một đối tượng dữ liệu đơn giản trong datastore, chúng ta gọi phương thức makePersistent() :
Ví dụ: Lưu trữ một đối tượng dữ liệu
PersistenceManager pm = PMF.get().getPersistenceManager();
Ví dụ: Khai báo đối tượng PMF cho phép lấy dữ liệu