Tài liệu Xây dựng hệ thống quản lý ảnhvideo online.

  • Số trang: 137 |
  • Loại file: PDF |
  • Lượt xem: 176 |
  • Lượt tải: 0

Mô tả:

ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ **************** Nguyễn Văn Trường XÂY DỰNG HỆ THỐNG QUẢN LÝ ẢNH/VIDEO ONLINE LUẬN VĂN THẠC SỸ NGÀNH CÔNG NGHỆ THÔNG TIN Chuyên ngành: Kỹ thuật phần mềm Mã số: 8480103.01 HÀ NỘI – 2019 ĐẠI HỌC QUỐC GIA HÀ NỘI TRƯỜNG ĐẠI HỌC CÔNG NGHỆ **************** Nguyễn Văn Trường XÂY DỰNG HỆ THỐNG QUẢN LÝ ẢNH/VIDEO ONLINE LUẬN VĂN THẠC SỸ NGÀNH CÔNG NGHỆ THÔNG TIN Chuyên ngành: Kỹ thuật phần mềm Mã số: 8480103.01 NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS.TRƯƠNG NINH THUẬN HÀ NỘI – 2019 LỜI CẢM ƠN Đầu tiên em xin được gửi lời cảm ơn sâu sắc nhất tới thầy giáo PGS.TS.Trương Ninh Thuận – người đã hướng dẫn tận tình, chỉ bảo và đóng góp ý kiến quý báu cho em trong suốt quá trình học tập và làm khóa luận. Trong quá trình làm luận văn, Thầy đã giúp em thu được rất nhiều kinh nghiệm quý về phương pháp nghiên cứu cũng như kỹ năng trình bày. Thầy cũng là người tiếp thêm niềm tin và thúc đẩy em vượt qua khó khăn, giúp em trưởng thành hơn trong cuộc sống. Chính thầy đã tiếp thêm động lực để em có thể hoàn thành được khóa luận của mình. Một lần nữa cho em xin gửi lời cảm ơn tới Thầy. Em cũng xin gửi lời cảm ơn tới quý Thầy/Cô khoa Công nghệ Thông tin nói riêng, cũng như quý Thầy/Cô trường Đại học Công nghệ đã dành rất nhiều tâm huyết tận tình giảng dạy, truyền đạt những kiến thức quý báu và tạo điều kiện tốt nhất cho em thực hiện luận văn này. Con cũng xin gửi tất cả lòng biết ơn, sự kính trọng gửi đến ông bà, bố mẹ, cùng toàn thể gia đình, những người luôn bên cạnh động viên, cổ vũ là chỗ dựa cho con để con yên tâm học hành cũng như cho con niềm tin nghị lực để cố gắng hoàn thành luận văn một cách tốt nhất. Xin được chân thành cảm ơn sự giúp đỡ, động viên và chỉ bảo nhiệt tình của các anh chị và bạn bè đồng nghiệp. Các anh chị, các bạn đã luôn ở bên cổ vũ, giúp đỡ, tiếp thêm động lực và ý chí giúp em hoàn thành được luận văn. Dù đã cố gắng hết sức của bản thân, song luận văn không khỏi còn nhiều thiếu sót. Em rất mong được sự thông cảm và những góp ý chỉ bảo tận tình của quý Thầy/Cô và các bạn để luận văn được hoàn thiện hơn. Tôi xin chân thành cảm ơn! Hà Nội, Ngày tháng năm 2019 Học viên Nguyễn Văn Trường Lời cam đoan Tôi xin cam đoan: 1. Những nội dung trong khóa luận này là do tôi thực hiện dưới sự hướng dẫn của thầy giáo PGS.TS.Trương Ninh Thuận. 2. Mọi tham khảo dùng trong khóa luận đều được trích dẫn rõ ràng tên tác giả, tên công trình, thời gian, địa điểm công bố. 3. Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo, hay gian trá tôi xin chịu hoàn toàn trách nhiệm và sự kỉ luật của hội đồng. Sinh viên, Nguyễn Văn Trường Mục lục Chương 1: GIỚI THIỆU ................................................................................................ 9 1.1. Sự cần thiết xây dựng hệ thống ......................................................................... 9 1.2. Nội dung của luận văn ..................................................................................... 11 1.3. Cấu trúc của luận văn ..................................................................................... 11 Chương 2: MỘT SỐ CÔNG NGHỆ ĐỂ XÂY DỰNG HỆ THỐNG .......................... 12 2.1. Ngôn ngữ lập trình ASP.NET MVC ............................................................... 12 2.2. Hệ quản trị cơ sở dữ liệu SQL Server............................................................. 16 2.3. Mô hình cài đặt ................................................................................................ 17 2.4. Cách thức truy cập cơ sở dữ liệu (ADO.NET) ............................................... 19 2.5. Bảo mật và cơ chế phân quyền trong hệ thống .............................................. 21 Chương 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG ..................................................... 22 3.1. Các đối tượng tham gia vào hệ thống ............................................................. 22 3.1.1. Người quản trị hệ thống (Admin) ............................................................. 22 3.1.2. Người sử dụng hệ thống (User) ................................................................. 22 3.1.3. Khách vãng lai (User Guest) ..................................................................... 22 3.2. Các yêu cầu chính mà hệ thống phải thực hiện .............................................. 22 3.3. Phân tích yêu cầu hệ thống .............................................................................. 23 3.3.1. Các yêu cầu chức năng .............................................................................. 23 3.3.2. Các yêu cầu phi chức năng ....................................................................... 23 3.4. Bảng chú giải .................................................................................................... 24 3.4.1. Giới thiệu ................................................................................................... 24 3.4.2. Bảng danh sách các tác nhân .................................................................... 24 3.4.3. Bảng chuyển đổi các yêu cầu chức năng sang ca sử dụng ....................... 24 3.5. Đặc tả ca sử dụng ............................................................................................. 28 3.6. Đặc tả bổ sung .................................................................................................. 28 3.6.1. Mục tiêu ..................................................................................................... 28 3.6.2. Phạm vi ...................................................................................................... 29 3.6.3. Chức năng ................................................................................................. 29 3.6.4. Tính khả dụng ........................................................................................... 29 3.6.5. Tính ổn định .............................................................................................. 29 3.6.6. Hiệu suất .................................................................................................... 29 3.6.7. Tính bảo mật ............................................................................................. 29 3.6.8. Các ràng buộc thiết kế .............................................................................. 29 3.7. Các sơ đồ ca sử dụng ....................................................................................... 30 3.7.1. Mô hình các ca sử dụng của Admin ......................................................... 30 3.7.2. Mô hình các ca sử dụng của User ............................................................. 30 3.7.3. Mô hình các trường hợp sử dụng của User Guest ................................... 31 3.8. Các biểu đồ tuần tự.......................................................................................... 31 3.8.1. Đăng nhập hệ thống .................................................................................. 31 3.8.2. Người dùng đăng xuất khỏi hệ thống ....................................................... 32 3.8.3. Người dùng chỉnh sửa nội dung báo cáo .................................................. 33 3.8.4. Xem báo cáo .............................................................................................. 33 3.8.5. Trả lời báo cáo........................................................................................... 34 3.8.6. Gửi báo cáo lên hệ thống .......................................................................... 34 3.8.7. Vô hiệu hóa bình luận ............................................................................... 35 3.8.8. Kích hoạt bình luận................................................................................... 35 3.8.9. Vô hiệu hóa ảnh......................................................................................... 36 3.8.10. Kích hoạt ảnh ............................................................................................ 36 3.8.11. Vô hiệu hóa video ...................................................................................... 37 3.8.12. Kích hoạt video.......................................................................................... 37 3.8.13. Khóa tài khoản người dùng ...................................................................... 38 3.8.14. Mở khóa tài khoản người dùng ................................................................ 38 3.8.15. Thêm tài khoản admin .............................................................................. 39 3.8.16. Chỉnh sửa tài khoản admin....................................................................... 39 3.8.17. Vô hiệu hóa tài khoản admin .................................................................... 40 3.8.18. Tìm kiếm người dùng ................................................................................ 40 3.8.19. Thêm quảng cáo ........................................................................................ 41 3.8.20. Thay đổi ngôn ngữ hiển thị ....................................................................... 41 3.8.21. Cập nhật menus......................................................................................... 42 3.8.22. Thêm bình luận ......................................................................................... 42 3.8.23. Chỉnh sửa bình luận .................................................................................. 43 3.8.24. Xóa bình luận ............................................................................................ 43 3.8.25. Xem video .................................................................................................. 44 3.8.26. Xóa video ................................................................................................... 44 3.8.27. Tải video lên hệ thống ............................................................................... 45 3.8.28. Thêm mật khẩu cho ảnh, video ................................................................ 45 3.8.29. Cập nhật từ khóa cho ảnh, video .............................................................. 46 3.8.30. Cập nhật quyền xem ảnh, video ............................................................... 47 3.8.31. Chia sẻ video .............................................................................................. 47 3.8.32. Tìm kiếm video .......................................................................................... 48 3.8.33. Chỉnh sửa video ......................................................................................... 49 3.8.34. Yêu thích video .......................................................................................... 50 3.8.35. Thêm ảnh, video vào album ...................................................................... 50 3.8.36. Xem ảnh ..................................................................................................... 51 3.8.37. Chỉnh sửa ảnh ........................................................................................... 52 3.8.38. Xóa ảnh ...................................................................................................... 53 3.8.39. Chia sẻ ảnh ................................................................................................ 53 3.8.40. Tải ảnh lên hệ thống .................................................................................. 54 3.8.41. Tìm kiếm ảnh ............................................................................................ 54 3.8.42. Kiểm tra ảnh có tính chất phản cảm ........................................................ 55 3.8.43. Yêu thích ảnh ............................................................................................ 55 3.8.44. Lấy lại tài khoản từ hệ thống .................................................................... 56 3.8.45. Cập nhật ảnh bìa ....................................................................................... 56 3.8.46. Cập nhật ảnh đại diện ............................................................................... 57 3.8.47. Cập nhật thông tin cá nhân ...................................................................... 57 3.8.48. Đăng ký tài khoản vào hệ thống ............................................................... 58 3.8.49. Nhận dạng hình ảnh .................................................................................. 59 3.9. Biểu đồ lớp ....................................................................................................... 59 3.9.1. Biểu đồ lớp đăng nhập hệ thống ............................................................... 59 3.9.2. Biểu đồ lớp đăng ký thành viên ................................................................ 60 3.9.3. Biểu đồ lớp quản lý ảnh/video .................................................................. 61 3.9.4. Biểu đồ lớp quản lý người dùng ............................................................... 61 3.9.5. Biểu đồ lớp trao đổi thông tin ................................................................... 62 3.9.6. Biểu đồ lớp quản lý hệ thống .................................................................... 62 3.9.7. 3.10. Biểu đồ lớp quản lý tìm kiếm .................................................................... 63 Thiết kế dữ liệu ............................................................................................. 64 3.10.1. Mô hình dữ liệu logic ở dạng sơ đồ .......................................................... 64 3.10.2. Danh sách các bảng dữ liệu ...................................................................... 66 3.10.3. Danh sách các thành phần của lược đồ dữ liệu........................................ 68 3.10.4. Danh sách các thuộc tính của từng thành phần ....................................... 69 3.11. Thiết kế kiến trúc ......................................................................................... 69 Chương 4: CÀI ĐẶT .................................................................................................... 71 4.1. Cài đặt chương trình ....................................................................................... 71 4.2. Triển khai và thử nghiệm chương trình ......................................................... 80 Chương 5: TỔNG KẾT ................................................................................................ 83 5.1. Kết luận ............................................................................................................ 83 5.2. Hướng phát triển ............................................................................................. 84 5.2.1. Xây dựng hoàn thiện hệ thống .................................................................. 84 5.2.2. Mở rộng thêm các chức năng edit Ảnh/Video ......................................... 84 5.2.3. Sử dụng AI cho việc nhận diện Ảnh và Video ......................................... 84 5.2.4. Tăng cường quảng cáo giới thiệu hệ thống tới người dùng ..................... 84 PHỤ LỤC ...................................................................................................................... 85 TÀI LIỆU THAM KHẢO .......................................................................................... 137 9 Chương 1: GIỚI THIỆU Trong cuộc sống hiện đại internet đóng một vai trò rất quan trọng trong sự phát triển kinh tế, xã hội và trở thành một công cụ không thể thiếu trong công việc hàng ngày của rất nhiều người. Internet vừa là một công cụ học tập hữu hiệu cũng vừa là một phương tiện giải trí hiệu quả. Internet cũng đã thay đổi cách chúng ta kết nối chia sẻ thông tin với nhau và internet cũng là một môi trường kinh doanh lý tưởng cho các cá nhân cũng như các doanh nghiệp. Nhu cầu chụp ảnh, quay video và chia sẻ cho nhau ngày càng phát triển mạnh trong những năm trở lại đây. Ở thời điểm hiện tại, biểu tượng của thời kỳ này là những chiếc điện thoại với tốc độ xử lý nhanh và thông minh cùng những chiếc camera hiện đại. Tất cả nhằm phục vụ nhu cầu chia sẻ thông tin dưới dạng hình ảnh và video. Và tất nhiên không thể không kể đến sự phát triển không ngừng của máy ảnh chuyên nghiệp tích hợp nhiều công nghệ hơn, hiện đại hơn và chụp ảnh quay phim đẹp hơn. Mỗi bức ảnh hay video luôn có một câu chuyện “ẩn” trong đó, do đó mọi người luôn muốn lưu giữ lại cũng như chia sẻ với nhau. Khái niệm thương mại điển tử, bán hàng online cũng không còn xa lạ với mọi người. Công việc kinh doanh online, bán hàng cần có những bức hình giới thiệu sản phẩm và cần sự chia sẻ hình ảnh đó để hàng hóa được quảng cáo nhiều hơn tới tất cả mọi người. Do đó việc tạo ra một nơi để lưu trữ những bức ảnh, những đoạn video cũng như chia sẻ chúng là một việc làm rất đáng được quan tâm. Xuất phát từ nhu cầu trên tôi muốn xây dựng một hệ thống nơi mà mọi người có thể chia sẻ và lưu trữ ảnh và video trực tuyến. 1.1. Sự cần thiết xây dựng hệ thống Ở thời điểm hiện tại, việc chụp ảnh, quay video để ghi lại những khoảnh khắc mà bản thân mỗi người muốn lưu giữ đã không còn xa lạ đối với mỗi người trong chúng ta. Những hình ảnh sống động đó có thể sẽ kể lại cả một kỷ niệm, cả một câu chuyện, một quá trình của một người nào đó. Hay có những khoảnh khắc xinh đẹp, bùng cháy, những hình ảnh chớp nhoáng, những phút giây bên nhau đều được ghi lại một cách chân thực nhất trong những tấm hình. Hình ảnh, video có thể được tạo ra mọi lúc mọi nơi và trong mọi hoàn cảnh vì với công nghệ ngày nay những thiết bị có chức năng chụp ảnh quay phim đã và đang phát triển nhanh như vũ bão và ngày càng hiện đại. Ngày nay để đánh giá một chiếc điện thoại smart phone người ta còn đưa cả tiêu chí chiếc điện thoại đấy có quay phim, chụp ảnh đẹp hay không, đó là còn chưa kể tới những chiếc máy ảnh chuyên nghiệp đã và đang ngày càng phát triển. Điều đó cho thấy nhu cầu chụp ảnh, quay video để ghi lại những hình ảnh đẹp, những khoảnh khắc của mỗi cá nhân lớn tới nhường nào. Từ đó nhu cầu về việc quản lý hình ảnh, video cần phải được quan tâm hơn nữa. Bạn hãy thử tưởng tượng khi những thiết bị lưu trữ cá nhân hết dung lượng không còn dung lượng để mình ghi lại những khoảnh khắc mới. Hãy thử tưởng tượng bao nhiều hình ảnh đẹp chúng ta lưu trữ trong thiết bị tới một ngày xấu trời thiết bị lưu trữ hỏng mà chưa được sao lưu vào đâu. Hãy thử tưởng tượng những bức hình đẹp mình chụp được muốn khoe với bạn bè nhưng ảnh lại đang lưu trữ trong chiếc ổ cứng của máy tính ở nhà. Bạn phải làm thế nào? 10 Vấn đề tiếp theo tác giả muốn nói tới việc quảng cáo và giới thiệu sản phẩm. Có những mặt hàng sản phẩm từ nhà sản xuất sẽ được phân phối cho nhiều doanh nghiệp thứ cấp. Các doanh nghiệp thứ cấp sẽ cần hình ảnh quảng cáo và thông tin để đưa lên trang giới thiệu sản phẩm của mình. Nhà sản xuất đã thiết kế và chụp những quảng cáo đó vậy làm sao để chia sẻ cho các doanh nghiệp thứ cấp. Vậy nên sẽ thực sự hữu ích nếu có một hệ thống lưu trữ trung gian chuyên lưu trữ ảnh/video chất lượng cao và có thể chia sẻ các hình ảnh quảng cáo một cách đơn giản và nhanh chóng. Từ những vấn đề trên chúng ta thấy được việc lưu trữ và quản lý ảnh trực tuyến là thực sự cần thiết. Do đó cần tạo ra một hệ thống lưu trữ trực tuyến để lưu trữ các hình ảnh, video cá nhân và quản lý chúng theo dòng thời gian sẽ giải quyết được vấn đề trên. Xuất phát từ nhu cầu trên, ở thời điểm hiện tại cũng đã có rất nhiều hệ thống quản lý ảnh/video online đã được phát triển và đang được sử dụng rộng rãi như: https://youtube.com, https://www.dropbox.com, https://photos.google.com, https://www.flickr.com, https://onedrive.live.com, https://www.facebook.com, https://www.instagram.com, …..Tuy nhiên mỗi hệ thống quản lý ảnh/video đều có những điểm mạnh và điểm yếu riêng nên các hệ thống vẫn tồn tại song song và vẫn thu hút được lượng người dùng nhất định. Sau khi sử dụng tác giả nhận thấy được một số nhược điểm của các hệ thống quản lý ảnh/video trực tuyến. Thứ nhất, các hệ thống trên đều có máy chủ đặt tại nước ngoài nên việc tải ảnh lên hoặc chậm hoặc là sẽ bị giảm chất lượng ảnh trước khi được tải lên. Thứ hai, hầu hết các hệ thống sẽ yêu cầu trả phí hoặc sẽ giới hạn dung lượng lưu trữ của người dùng. Thứ ba, đa số các hệ thống chưa có cơ chế tự động phân loại ảnh, tự động thêm từ khóa vào ảnh để nâng cao khả năng tìm kiếm giúp việc quảng cáo hình ảnh sản phẩm rộng rãi hơn tới người sử dụng. Tiếp nữa, rất nhiều các hệ thống chưa hỗ trợ Tiếng Việt nên việc sử dụng sẽ gây khó khăn với một số bộ phận người dùng phổ thông. Mặt khác với xu thế mới hiện nay việc bán hàng online đang ngày càng phát triển tại nước ta. Người mua sẽ muốn tham khảo trước hình ảnh sản phẩm của mình trước khi ra quyết định có mua mặt hàng đó hay không. Còn về phần người bán sẽ muốn giới thiệu các sản phẩm của mình rộng rãi hơn nữa tới người tiêu dùng. Cũng với lý do này tác giả muốn xây dựng và quảng bá hệ thống như một nơi người bán hàng có thể đăng các sản phẩm của mình để quảng bá và giới thiệu sản phẩm. Hệ thống được xây dựng sẽ là một nơi lưu giữ nhiều mẫu ảnh về các sản phầm, các mặt hàng khác nhau để khi cần người bán hàng có thể sử dụng các hình ảnh để tham khảo và giới thiệu sản phầm một cách trực quan nhất. Về mặt hàng sản phẩm tác giả đang chú ý hướng tới là: các mẫu thiết kế nhà, nội thất, hoa, cây cảnh, bonsai,…Và hệ thống sẽ là nơi chia sẻ thiết kế của các kiến trúc sư về các tác phẩm của mình nhằm quảng bá tên tuổi và thương hiệu một cách có hiệu quả. Chính vì điều này tác giả muốn thực hiện một đề tài luận văn “Xây dựng hệ thống quản lý ảnh/video online”. 11 1.2. Nội dung của luận văn Vì luận văn có tính thực tiễn cao nên mục tiêu mà tác giả hướng tới là xây dựng hoàn chỉnh được hệ thống quản lý ảnh/video online. Quảng cáo và tăng lượng người dùng đăng ký sử dụng hệ thống nhằm tăng sự tín nhiệm và tin cậy của hệ thống với người dùng. Tác giả cần thúc đẩy việc upload ảnh/video nhằm quảng bá sản phẩm bán hàng trên hệ thống. Để hướng tới mục tiêu trên tác giả chia nhỏ các mục tiêu như sau: Thứ nhất cần thực hiện việc phân tích và thiết kế hệ thống, cần thu thập và phân tích yêu cầu của hệ thống, xây dựng thiết kế hệ thống hoàn thiện nhằm đảm bảo tính chính xác và đúng đắn trong hệ thống sẽ xây dựng, phân tích các thách thức của công nghệ cần sử dụng trong hệ thống, đảm bảo việc phát triển hệ thống có tính mở rộng trong tương lai. Thứ hai cần phải phân tích được ưu nhược điểm của hệ thống sắp xây dựng, đặt ra các mục tiêu mà hệ thống cần đạt được trong quá trình phát triển. Và đây là hệ thống mang tính thực tiễn nên điều cuối cùng và cũng là quan trọng nhất hệ thống cần hoàn thành việc cài đặt và được đưa triển khai để sử dụng. 1.3. Cấu trúc của luận văn Luận văn bao gồm những nội dung như sau: Chương 1: Giới thiệu tổng quan về hệ thống sẽ xây dựng, sự cần thiết và các nhiệm vụ mà hệ thống sẽ thực hiện và đóng góp của luận văn. Chương 2: Giới thiệu và phân tích các công nghệ sẽ sử dụng trong việc phát triển hệ thống như: ngôn ngữ lập trình ASP.NET, mô hình MVC, hệ quản trị cơ sở dữ liệu SQL Server. Chương 3: Trình bày quá trình phân tích thiết kế hệ thống bao gồm: phân tích các yêu cầu chức năng và phi chức năng, các mô hình use case và đặc tả use case, các mô hình lớp và các lưu đồ hoạt động, thiết kế dữ liệu, thiết kế kiến trúc, thiết kế chức năng. Chương 4: Trình bày các vấn đề liên quan đến cài đặt và triển khai hệ thống như: cài đặt giao diện, cài đặt chương trình, triển khai hệ thống trên môi trường Windows. Chương 5: Trình bày tóm tắt các kết quả đạt được và đề xuất các hướng mở rộng, phát triển trong tương lai. 12 Chương 2: MỘT SỐ CÔNG NGHỆ ĐỂ XÂY DỰNG HỆ THỐNG Ngày nay có rất nhiều công cụ hỗ trợ cho việc lập trình các ứng dụng thương mại điện tử như: ASP với các ngôn ngữ script là VBScript Jscript, Macromedia Dreamweaver MX, Microsoft ASP.NET Web Maxtrix, JBuilder X, PHP, Python .v..v. Một số công cụ còn tích hợp sẵn các templates cho phép tạo ra một trang web nhanh chóng và dễ dàng. Tuy nhiên, một trong các công nghệ tiên tiến và mạnh mẽ nhất được nhắc đến nhiều nhất hiện nay vẫn phải kể đến ASP.NET MVC dựa trên nền tảng công nghệ .NET của Microsoft. Công nghệ ASP.NET MVC mang đến cho các trang web được tạo ra từ nó có thể chạy nhanh hơn do dùng cơ chế chỉ biên dịch ra tập tin DLL lần đầu tiên triệu gọi; ngoài ra ASP.NET MVC còn hỗ trợ nhiều công cụ lập trình và cho phép sử dụng các tài nguyên đang sử dụng tự động dò tìm và khắc phục lỗi phát sinh (sử dụng cấu trúc try….catch), quản lý trạng thái giao dịch (Session State) trên nhiều Sever, sử dụng bộ nhớ truy cập nhanh, sử dụng ngôn ngữ biên dịch trang ASP.NET thay vì thông dịch như đã sử dụng trong ASP 3.0, xây dựng và triển khai các ứng dụng Web services dễ dàng … Về cơ sở dữ liệu thì có: SQL Sever, Oracle, MySQL… Việc lựa chọn một môi trường lập trình thích hợp cũng góp phần vào thành công của việc xây dựng một hệ thống Website. Với hệ thống mà tác giả đang nghiên cứu tác giả phân tích thấy hệ thống sẽ cần lựa chọn một hệ cơ sở dữ liệu cần chịu được tải lớn, và là một hệ thống phức tạp về dự liệu với số lượng và dung lượng ảnh/video sẽ tăng nhanh theo thời gian. Thêm nữa cần lựa chọn một ngôn ngữ phù hợp với hướng phát triển và có tính mở rộng sau này cũng như khả năng cải tiến các chức năng cho phù hợp với sự phát triển trong tương lai. Với các đặc điểm như trên nên tác giả đã chọn ASP.NET MVC làm môi trường để xây dựng ứng dụng và quản lý cơ sở dữ liệu sẽ dùng SQL Server. 2.1. Ngôn ngữ lập trình ASP.NET MVC  Tổng quát về ASP.NET MVC Asp.Net MVC là một Framework sử dụng .Net Framework cho việc phát triển ứng dụng web động. Asp.Net MVC phát triển trên mẫu thiết kế chuẩn MVC, cho phép người sử dụng phát triển các ứng dụng phần mềm[1,tr.9]. MVC là tên một mẫu phát triển ứng dụng, phương pháp này chia nhỏ một ứng dụng thành ba thành phần để cài đặt, mỗi thành phần đóng một vai trò khác nhau và ảnh hưởng lẫn nhau, đó là models, views, và controllers. Các đặc trưng của chính của Model, View và Controller trong mẫu thiết kế chuẩn MVC[2,tr.28]: Model: các đối tượng Models là một phần của ứng dụng, các đối tượng này thiết lập logic của phần dữ liệu của ứng dụng. Thông thường, các đối tượng model lấy và lưu trạng thái của model trong CSDL. 13 View: là các thành phần dùng để hiển thị giao diện người dùng (UI), view được tạo dựa vào thông tin dữ liệu model. Controller: là các thành phần dùng để quản lý tương tác người dùng, làm việc với model và chọn view để hiển thị giao diện người dùng. Trong một ứng dụng MVC, view chỉ được dùng để hiển thị thông tin, controller chịu trách nhiệm quản lý và đáp trả nội dung người dùng nhập và tương tác với người dùng. Hình 2.1 [2,tr29] mô tả mô hình thiết kế MVC: Sends a user request Controller Request processing Returned to user View Model Send as part of the request Sent to be presented to user Hình 2.1: Mẫu thiết kế MVC  Lợi ích khi xây dựng ứng dụng dựa trên mô hình MVC Có nhiều lợi ích mà mô hình MVC mang lại trong quá trình phát triển hệ thống phần mềm. Thứ nhất với mô hình MVC thì việc quản lý sự phức tạp của ứng dụng sẽ dễ dàng hơn và tường minh hơn vì ứng dụng sẽ được chia thành ba thành phần model, view, controller. Tiếp theo đối với mô hình MVC thì việc phát triển ứng dụng sẽ dễ dàng hơn trong việc phát triển theo hướng kiểm thử, từ đó nâng cao được tính bảo mật của hệ thống và dễ dàng bảo trì cũng như nâng cấp hệ thống mà vẫn đảm bảo chất lượng, dễ dàng hơn cho đội kiểm thử có thể kiểm tra các chức năng của hệ thống. Tiếp theo nữa là việc phân chia theo mô hình trên thì việc phát triển một hệ thống lớn sẽ dễ dàng hơn trong việc quản lý dự án, nó cho phép các nhà phát triển và các nhà thiết kế có thể làm việc đồng thời với nhau. MVC cho 14 phép thay đổi trong một phần của ứng dụng mà không ảnh hưởng đến các phần khác của ứng dụng. Sở dĩ như vậy vì kiến trúc MVC đã tách biệt (decoupling) sự phụ thuộc giữa các thành phần trong một đối tượng đồ họa, làm tăng tính linh động (flexibility) và tính tái sử dụng (reusebility) của đối tượng đồ họa đó. Một đối tượng đồ họa bấy giờ có thể dễ dàng thay đổi giao diện bằng cách thay đổi thành phần View của nó trong khi cách thức lưu trữ (Model) cũng như xử lý (Controller) không hề thay đổi. Tương tự, ta có thể thay đổi cách thức lưu trữ (Model) hoặc xử lý (Controller) của đối tượng đồ họa mà những thành phần còn lại vẫn giữ nguyên. Chính vì vậy mà kiến trúc MVC đã được ứng dụng để xây dựng rất nhiều framework và thư viện đồ họa khác nhau. Tiêu biểu là bộ thư viện đồ họa của ngôn ngữ lập trình hướng đối tượng SmallTalk (cũng do Xerox PARC nghiên cứu và phát triển vào thập niên 70 của thế kỷ 20). Các Swing Components của Java cũng được xây dựng dựa trên kiến trúc MVC. Đặc biệt là nền tảng ASP.NET MVC Framework do Microsoft xây dựng và phát triển.  Tính năng quan trọng của nền tảng ASP.NET MVC [16] 1. Tách bạch các tác vụ của ứng dụng (logic nhập liệu, business logic, và logic giao diện), dễ dàng kiểm thử và mặc định áp dụng hướng phát triển hướng kiểm thử. Tất cả các tính năng chính của mô hình MVC được cài đặt dựa trên giao diện và được kiểm thử bằng cách sử dụng các đối tượng mocks, mock object là các đối tượng mô phỏng các tính năng của những đối tượng thực sự trong ứng dụng. Bạn có thể kiểm thử unit-test cho ứng dụng mà không cần chạy controller trong tiến trình ASP.NET, và điều đó giúp unit test được áp dụng nhanh chóng và tiện dụng. Bạn có thể sử dụng bất kỳ nền tảng unit-testing nào tương thích với nền tảng .NET. 2. MVC là một nền tảng khả mở rộng (extensible) và khả nhúng (pluggable). Các thành phần của ASP.NET MVC được thiết kể để chúng có thể được thay thế một cách dễ dàng hoặc dễ dàng tùy chỉnh. Bạn có thể nhúng thêm view engine, cơ chế định tuyến cho URL, cách kết xuất tham số của action-method và các thành phần khác. ASP.NET MVC cũng hỗ trợ việc sử dụng Dependency Injection (DI) và Inversion of Control (IoC). DI cho phép bạn gắn các đối tượng vào một lớp cho lớp đó sử dụng thay vì buộc lớp đó phải tự mình khởi tạo các đối tượng. IoC quy định rằng, nếu một đối tượng yêu cầu một đối tượng khác, đối tượng đầu sẽ lấy đối tượng thứ hai từ một nguồn bên ngoài, ví dụ như từ tập tin cấu hình. Và nhờ vậy, việc sử dụng DI và IoC sẽ giúp kiểm thử dễ dàng hơn. 3. ASP.NET MVC có thành phần ánh xạ URL mạnh mẽ cho phép bạn xây dựng những ứng dụng có các địa chỉ URL xúc tích và dễ tìm kiếm. Các địa chỉ URL không cần phải có phần mở rộng của tên tập tin và được thiết kế để hỗ trợ các mẫu định dạng tên phù hợp với việc tối ưu hóa tìm kiếm (URL) và phù hợp với lập địa chỉ theo kiểu REST. 15 4. Hỗ trợ các tính năng có sẵn của ASP.NET như cơ chế xác thực người dùng, quản lý thành viên, quyền, output caching và data caching, seession và profile, quản lý tình trạng ứng dụng, hệ thống cấu hình… 5. ASP.NET MVC sử dụng view engine Razor View Engine cho phép thiết lập các view nhanh chóng, dễ dàng và tốn ít công sức hơn so với việc sử dụng Web Forms view engine.  Giao tiếp trong kiến trúc ASP.NET MVC Các thành phần cơ bản của ứng dụng Asp.Net MVC là: Route engine, Route configuration, MVC Framework, View, View engine, Model, Control. Các thành phần sẽ giao tiếp với nhau nhằm xử lý yêu cầu của ứng dụng Asp.Net MVC. Quá trình xử lý yêu cầu thường liên quan tới một chuỗi xử lý, mỗi xử lý sẽ được một component trong Asp.net đảm nhiệm[2,tr.43]. Hình 2.2[2,tr.43] mô tả cách giao tiếp trong kiến trúc ASP.NET theo mô hình MVC. MVC Framwork 1 Browser 2 Route Engine 3 Router Configuration 5 ? 4 Controller 9 6 Model 7 8 View Engine Hình 2.2: Giao tiếp trong kiến trúc ASP.NET MVC 1. Trình duyệt gửi yêu cầu của ứng dụng Asp.Net MVC 2. MVC Engine chuyển yêu cầu tới cho Routing engine (Bộ điều hướng) 3. Routing engine kiểm tra cấu hình điều hướng (route configuration) của ứng dụng nhằm chuyển đến các Controller phù hợp với yêu cầu. 4. Khi Controller được tìm thấy, Control này sẽ được thực thi 16 5. Nếu Controller không được tìm thấy, bộ điều hướng sẽ chỉ ra rằng Controller không được tìm thấy và MVC Engine sẽ thông báo lỗi cho trình duyệt. 6. Controller giao tiếp với Model, tầng Model đại diện cho các Entity bên trong hệ thống, Controller làm việc với tầng model để lấy thông tin cần cho người dùng. 7. Controller yêu cầu View engine hiển thị thông tin dựa trên dữ liệu của tầng Model 8. View engine trả kết quả cho Controller 9. Controller gửi kết quả cho trình duyệt thông qua giao thức Http. Từ những phân tích trên có thể ASP.NET là ngôn ngữ rất phù hợp để xây dựng hệ thống quản lý ảnh/video mà tác giả muốn xây dựng. Với cả nhân tác giả thì sau thời gian sử dụng ngôn ngữ ASP.NET cho việc lập trình website và sử dụng các website chạy bằng ngôn ngữ ASP.NET như https://dantri.com.vn/; https://vnexpress.net/; https://stackoverflow.com/; https://myspace.com/;...thì đánh giá website lập trình bằng ASP.NET chạy rất mượt và ổn định, có tốc độ tải trang nhanh. ASP.NET sẽ giúp việc lập trình có thể dễ dàng tùy biến, các thành phần của website có thể thay đổi nhanh chóng và dễ dàng mở rộng. Tuy nhiên song song với đó thì việc lập trình bằng ASP.NET cũng có những thách thức như việc lập trình sẽ phải tạo mã nguồn mới hoàn toàn chứ không có mã nguồn sẵn như một số framework của các ngôn ngữ khác. Do đó việc lập trình cần yêu cầu người phát triển cần có kỹ năng và tư duy tốt để có thể chau chuốt kỹ hơn các tính năng của hệ thống sẽ phát triển. 2.2. Hệ quản trị cơ sở dữ liệu SQL Server SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management System (RDBMS) sử dụng câu lệnh SQL (Transact-SQL) để trao đổi dữ liệu giữa máy khách và máy cài SQL Server. Một RDBMS bao gồm databases, database engine và các ứng dụng dùng để quản lý dữ liệu và các bộ phận khác nhau trong RDBMS[3,tr.11]. SQL Server được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớn (Very Large Database Environment) lên đến Tera-Byte và có thể phục vụ cùng lúc cho hàng ngàn user. SQL Server có thể kết hợp “ăn ý” với các server khác như Microsoft Internet Information Server (IIS), E-Commerce Server, Proxy Server[4,tr.21]… SQL Server được cấu tạo bởi nhiều thành phần như Database Engine, Reporting Services, Notification Services, Integration Services, Full Text Search Service…. Các thành phần này khi phối hợp với nhau tạo thành một giải pháp hoàn chỉnh giúp cho việc lưu trữ và phân tích dữ liệu một cách dễ dàng. Hình 2.3[5,tr.64] mô tả các thành phần chính của SQL Server: 17 Hình 2.3: Các thành phần chính của SQL Server Như những phân tích ban đầu hệ thống quản lý ảnh/video online cần chú trọng rất lớn vào cơ sở dữ liệu do hệ thống sẽ có lượng dữ liệu tăng dần theo thời gian. Từ đó việc lựa chọn cơ sở dữ liệu cho hệ thống rất quan trọng. Từ những đặc tính mạnh mẽ trong quản lý và truy xuất dữ liệu của SQL Server, tính tương thích với ASP.NET, khả năng chịu tải và SQL Server có thể chạy trên môi trường cơ sở dữ liệu rất lớn,…nên tác giả đánh giá SQL Server rất phù hợp để sử dụng cho hệ thống của mình. Tuy sẽ phải đầu tư về mặt tài chính nhiều hơn so với việc sử dụng một hệ cơ sở dữ liệu miễn phí khác nhưng việc đầu tư này tác giả đánh giá là phù hợp cho việc mở rộng và phát triển của hệ thống sau này. 2.3. Mô hình cài đặt  Lựa chọn mô hình cài đặt Một trong những mô hình cài đặt có thể được lựa chọn đầu tiên để cài đặt các ứng dụng ngày nay là kiến trúc đa tầng N-tier. Mô hình kiến trúc N-tier (với 3 Tier) được mô tả như hình 2.4[6,tr.29] và hình 2.5[6,tr.31]dưới đây: Hình 2.4: Ví dụ mô hình 3-tier 18 Users UI Components UI Process Components Service Interfaces (Facades) Business Workflows Business Components Business Entities Data Access Logic Components Other Resources Data Sources Resources Hình 2.5: Mô hình mô tả kiến trúc 3-Tier Các thuận lợi mà kiến trúc này có thể mang lại là[6,tr.35]: 1. Việc thay đổi các xử lý ở tầng truy xuất dữ liệu sẽ không ảnh hưởng và làm thay đổi tầng giao diện người dùng. 2. Tất cả các thủ tục truy xuất dữ liệu sẽ được đóng gói vào các đối tượng thay vì dùng các lời gọi hàm. 3. SQL sẽ được loại trừ ra khỏi code phía client. Client chỉ còn quan tâm đến các phương thức và các thuộc tính. 4. Tên của các bảng và cột sẽ được loại trừ ra khỏi code phía client. Các datasets được định kiểu có thể mô tả các bảng và cột dữ liệu như là các thuộc tính, cung cấp một danh sách các IntellliSense. 19 5. Code phía client sẽ không quan tâm đến việc dữ liệu có từ đâu. Nó chỉ quan tâm rằng nó có thể nhận và điều chỉnh dữ liệu trong các đối tượng và đối tượng này sẽ quan tâm tới các chi tiết. 6. Code phía client sẽ được đơn giản hóa, thay vì sử dụng nhiều hàm (functions) thì các ứng dụng nên sử dụng các đối tượng với các thuộc tính (properties) và phương thức (methods). 7. Việc tạo và sử dụng các đối tượng sẽ dễ dàng hơn là dùng các lời gọi hàm. 8. Việc thêm và thay đổi các chức năng của ứng dụng cũng sẽ dễ dàng hơn do không làm thay đổi code phía client. Mặc dù có những thuận lợi như vậy, kiến trúc 3-tier cũng gặp phải một số bất lợi nhất định. Thứ nhất phải tạo nhiều classes hơn, điều này có thể sẽ ảnh hưởng đến vấn đề bảo trì và vấn đề hiệu suất vì nó sẽ mất thời gian để tạo một class mới vào thời điểm run time. Thứ hai 3-tier sẽ không làm việc tốt khi chúng ta không biết cấu trúc của các bảng mà dữ liệu sẽ được nhận từ nó. Thứ ba việc truyền dữ liệu giữa các tầng sẽ chậm hơn vì phải truyền giữa các tiến trình khác nhau (IPC), dữ liệu cần phải đóng gói rồi truyền đi rồi mở gói mới có thể dùng được.Và cuối cùng việc phát triển ứng dụng sẽ phức tạp hơn so với các kiến trúc khác. Tóm lại, mặc dù có một vài bất lợi trong kiến trúc 3-tier nhưng những lợi thế do nó mang lại lớn hơn nhiều, và vì vậy với ứng dụng này tác giả sẽ xây dựng theo kiến trúc 3-tier.  Xây dựng các lớp xử lý chính Với mỗi tầng trong kiến trúc 3-tier sẽ có các lớp đối tượng riêng chịu các trách nhiệm tương ứng khác nhau. Ở tầng giao diện người dùng, các trang .aspx với các web forms sẽ trình bày nội dung của website cho phía client. Tầng giữa là các xử lý trung gian liên kết hai tầng còn lại (tầng giao diện và tầng dữ liệu). Và tầng dữ liệu sẽ đảm bảo cho vấn đề truy xuất và cập nhật dữ liệu. Sẽ có các lớp đối tượng riêng biệt cho từng nhiệm vụ của các tầng nêu trên. Trong ứng dụng này mỗi đối tượng phục vụ của hệ thống sẽ được đóng gói trong các namespace khác nhau, và như vậy ở tầng giao diện và xử lý các đối tượng này sẽ được xây dựng độc lập. Trong tầng dữ liệu sẽ tập trung xử lý cho tất cả các yêu cầu truy xuất xữ liệu của tất cả các đối tượng. Do đó ta có thể thấy được sự tách biệt khá rõ ràng trong việc xây dựng các lớp xử lý của từng tầng theo kiến trúc 3-tier. 2.4. Cách thức truy cập cơ sở dữ liệu (ADO.NET) Trong môi trường phát triển Microsoft .NET tất cả các ứng dụng webform hay winform đều thống nhất sử dụng chung một bộ thư viện để truy xuất và thao tác với cơ sở dữ liệu gọi là ADO.NET (Active Data Object). ADO.NET là một bộ các thư viện hướng đối tượng nằm trong bộ thư viện lớp cơ sở của .NET Framework, cho phép các ứng dụng windows (như C#, VB.NET) hay ứng dụng web (như ASP.NET) thao tác dễ dàng với các nguồn dữ liệu. Nguồn dữ liệu ở đây có thể là một cơ sơ dữ liệu, có thể là file text, file excel, hoặc 20 XML. Như chúng ta đã biết hiện nay có rất nhiều loại cơ sở dữ liệu như SQL Server, MS Access, Oracle,…và nhiệm vụ của mô hình ADO.NET là cho phép người lập trình thao tác với nhiều loại cơ sở dữ liệu theo cùng một cách[17]. Hình 2.6 mô tả vị trí của ADO.NET trong kiến trúc của .NET Framework: Windows Forms ASP.NET Class Framework Drawing XML Data ADO .NET Common Language Runtime System Service Hình 2.6: Vị trí của ADO .NET trong kiến trúc của .NET Framwork Kiến trúc trên hình 2.6 cũng cho ta thấy rằng ADO.NET là một thành phần nội tại của .NET Framework, do vậy nó có thể được sử dụng trong tất cả các ngôn ngữ hỗ trợ .NET như C#, VB.NET… mà không có sự khác biệt nào. Như đã phân tích trên đây ADO.NET cho phép tương tác với các loại dữ liệu và kiểu database. Mỗi loại dữ liệu cần một cách thức khác nhau để có thể truy xuất. Các loại dữ liệu cũ sử dụng giao thức ODBC, các loại dữ liệu mới hơn sử dụng giao thức OleDb. Vì vậy cần có một thư viện thống nhất để làm việc với chúng, đây chính là lý do mà ADO.NET được tạo ra. ADO.NET cung cấp một cách thức chung để tương tác với nguồn dữ liệu, nhưng với mỗi loại dữ liệu bạn phải sử dụng một thư viện khác nhau. Các thư viện này được gọi là Data Provider và thường được đặt tên theo giao thức hoặc loại dữ liệu mà chúng cho phép bạn truy xuất. ADO.NET có năm đối tượng chính mà bạn bắt buộc phải biết tới khi thao tác với dữ liệu là: SqlConnection, SqlCommand, SqlDataReader, DataSet, SqlDataAdapter. 1. 2. 3. 4. 5. Đối tượng SqlConnection cho phép bạn quản lý một kết nối đến nguồn dữ liệu. Đối tượng SqlCommand cho phép bạn gửi lệnh đến dữ liệu. Đối tượng SqlDataReader cho phép đọc dữ liệu nhanh theo cơ chế forward-only. Đối tượng DataSet sẽ được sử dụng nếu muốn làm việc với dữ liệu đã ngắt kết nối. Đối tượng SqlDataAdalter sẽ cho phép bạn thực hiện việc đọc và ghi đến dữ liệu nguồn. Hình 2.7 sau đây mô tả kiến trúc của ADO.NET:
- Xem thêm -