GIỚI THIỆU
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?
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”.
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.
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.
MỘT SỐ CÔNG NGHỆ ĐỂ XÂY DỰNG HỆ THỐNG
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
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:
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
Sent to be presented to user
Send as part of the request 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
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
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
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
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:
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.
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
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
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.
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
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:
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 Đối tượng SqlConnection cho phép bạn quản lý một kết nối đến nguồn dữ liệu
2 Đối tượng SqlCommand cho phép bạn gửi lệnh đến dữ liệu
3 Đối tượng SqlDataReader cho phép đọc dữ liệu nhanh theo cơ chế forward-only
4 Đố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
5 Đố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:
Common Language Runtime System Service
Hình 2.7: Kiến trúc của ADO.NET
Từ những phân tích trên đây tác giả củng cố thêm cho việc lựa chọn ASP.NET để sử dụng cho việc phát triển hệ thống Sử dụng ASP.NET và có sự hỗ trợ của ADO.NET sẽ giúp mở rộng và phát triển cho hệ cơ sở dữ liệu của hệ thống sau này.
Bảo mật và cơ chế phân quyền trong hệ thống
Quản lý vai trò của các đối tượng là phần bắt buộc đối với bất kỳ ứng dụng nào Mục đích của quản lý vai trò của đối tượng là nhằm đảm bảo an toàn cho hệ thống và phân chia nhiệm vụ giữa các đối tượng trong hệ thống Khi thiết kế và sử dụng quản lý vai trò của các đối tượng trong hệ thống thì bạn sẽ cung cấp quyền cho đối tượng truy cập tới đúng tài nguyên tương ứng với quyền hạn của đối tượng từ đó hệ thống sẽ đảm bảo an toàn hơn Hầu hết các framework đều hỗ trợ tính năng phân quyền một cách mặc định Với NET Framwork thì chính là Membership Provider (ASP.NET 2.0), SimpleMembership (ASP.NET 4.5), Universal Provider (ASP.NET 4.0), Identity (ASP.NET 4.5.1), Role Provider (ASP.NET MVC 5), tuy nhiên việc thao tác với database của người dùng sẽ rất khó khăn Do đó Custom Provider là phương án hợp lý để điều chỉnh sự bất tiện này o NET Framwork Data Provider for SQL Server o NET Framwork Data Provider for OLE DB o NET Framwork Data Provider for ODBC o NET Framwork Data Provider for Oracle NET Framwork Data Providers available in ADO NET:
PHÂN TÍCH THIẾT KẾ HỆ THỐNG
Các đối tượng tham gia vào hệ thống
Người quản trị có quyền đăng nhập vào hệ thống từ bất kỳ nơi đâu Họ có quyền kiểm soát tất cả mọi hoạt động của hệ thống, cụ thể như: Xem danh sách người dùng đăng ký, thêm, xóa, sửa cập nhật thông tin người dùng nếu cần thiết Tùy chỉnh giao diện của hệ thống, thay đổi cho phù hợp với từng thời điểm Admin còn có thể thống kê ảnh/video theo lượng người xem, theo thể loại, theo số lượng lượt người dùng khác yêu thích ảnh/video.
3.1.2 Người sử dụng hệ thống (User)
User là đối tượng sau khi đã có tài khoản và là thành viên của hệ thống Do vậy user có thể đăng nhập, đăng xuất khỏi hệ thống User có thể đăng tải những hình ảnh, video của cá nhân lên hệ thống Có thể sử dụng một số chức năng chỉnh sửa ảnh, video mà hệ thống cung cấp để chỉnh sửa ảnh, video của cá nhân User cũng có thể tìm kiếm ảnh hoặc video của một thành viên khác, có thể thêm ảnh của thành viên khác vào album ảnh của mình User cũng có thể thiết kế, tạo slide trình chiếu ảnh cá nhân và có thể xem trực tiếp trên hệ thống
User còn có thể tùy chỉnh trang cá nhân như thay ảnh đại diện, ảnh bìa của trang cá nhân, tùy chỉnh thông tin cá nhân của mình Có thể yêu thích, bình luận đối với ảnh, video của cá nhân hay của bạn bè trên hệ thống
3.1.3 Khách vãng lai (User Guest)
User Guest là đối tượng người dùng chưa có tài khoản đăng nhập vào hệ thống Do vậy user guest có thể thực hiện đăng ký vào hệ thống, có thể thực hiện việc tìm kiếm ảnh, video theo từ khóa mà không cần phải đăng nhập.
Các yêu cầu chính mà hệ thống phải thực hiện
1 Từng đối tượng user sẽ có các chức năng được xử lý độc lập như thêm, sửa, đăng ký thông tin
2 Admin có thể thực hiện được các chức năng quản trị cả hệ thống như: quản lý user, quản lý thông tin đăng ký Admin có thể tùy chỉnh giao diện của hệ thống cho bắt mắt và phù hợp với thị yếu theo thời gian
3 User có thể đăng ký làm thành viên, đăng nhập vào hệ thống, xem và tìm kiếm ảnh theo chủ đề, có thể tải ảnh của cá nhân lên và cài đặt các quyền hạn cho ảnh tương ứng User còn có thể chỉnh sửa ảnh và video của mình bằng một số tính năng trên hệ thống cung cấp
4 User guest có thể xem và tìm kiếm ảnh theo chủ đề, có thể đăng ký thành viên và có thể bình luận về ảnh, video mà có quyền public
5 Hệ thống phải đảm bảo tính bảo mật trong các thông tin đăng ký, đăng nhập, quản trị
6 Hệ thống có khả năng nhận diện những hình ảnh phản cảm để lọc và không cho công khai để tránh tình trạng thành nơi lưu giữ ảnh phản cảm
7 Hệ thống có cơ chế tự nhận dạng và phân loại ảnh theo chủ đề nếu user không tự thực hiện phân loại.
Phân tích yêu cầu hệ thống
Đối với người dùng: Hệ thống cần cung cấp chức năng đăng ký và đăng nhập Khi đăng nhập vào hệ thống thì hệ thống cần xác định tài khoản để phân quyền truy cập của người đăng nhập với vai trò admin hoặc người dùng thông thường Hệ thống cần đảm bảo việc lưu trữ thông tin của tất cả các đối tượng một cách an toàn Hệ thống cho phép người dùng tìm kiếm ảnh, video theo từ khóa hoặc theo chủ đề, cung cấp giao diện thân thiện để người dùng có thể tải ảnh, video lên một cách dễ dàng Hệ thống cũng cần hỗ trợ công cụ giúp người dùng trong việc quản lý, chỉnh sửa ảnh, video cá nhân Người dùng có thể hiệu chỉnh thông tin cá nhân khi cần thiết Hệ thống cũng cần có cơ chế hỗ trợ phân loại ảnh, video khi người dùng tải ảnh, video lên hệ thống Hỗ trợ thêm tính năng chia sẻ, bình luận, yêu thích ảnh để tăng tính tương tác giữa người dùng với nhau Đối với người quản trị: Hệ thống cần có giao diện riêng đối với người quản trị giúp quản lý thông tin của tất cả các đối tượng trong hệ thống, cần có quyền thêm, xóa, sửa thông tin của các đối tượng này Hệ thống cần có cơ chế nhận diện ảnh giúp hỗ trợ người quản trị trong việc phân loại ảnh phản cảm để tránh tình trạng hình ảnh xấu gây mất uy tín và ảnh hưởng tới người dùng
3.3.1.2 Yêu cầu chức năng hệ thống
Hệ thống cần phân quyền với từng đối tượng người dùng, cho phép người dùng đăng nhập vào hệ thống với vai trò khác nhau ứng với từng đối tượng và quản lý việc truy cập tới tài nguyên của hệ thống tương ứng với từng vai trò của từng đối tượng Hệ thống cần đảm bảo tính bảo mật các thông tin của người dùng như: địa chỉ email, số điện thoại, địa chỉ, user name, password,…
3.3.2 Các yêu cầu phi chức năng 3.3.2.1 Nhắm tới lợi ích của các đối tượng người dùng
Tính tiện dụng: Giao diện thân thiện dễ sử dụng đối với những người sử dụng Windows, dễ tìm kiếm thông tin cần thiết và nhanh chóng
Tính hiệu quả: Đảm bảo việc truy xuất nhanh đến các trang và khả năng kiểm soát lỗi tốt, đăng ký, đăng nhập dễ dàng nhanh chóng
Tính tương thích: Hỗ trợ tốt trên các trình duyệt từ IE 8 trở lên và các trình duyệt khác như Opera, Mozilla Firefox, Google Chrome, …
Tính tiến hóa: Sử dụng AI trong việc phân loại ảnh và nhận diện hình ảnh phản cảm Có tính tự học hỏi khi được học máy trong quá trình tự phân loại ảnh của người dùng
3.3.2.2 Nhắm tới lợi ích của việc phát triển dự án
Thiết kế theo mô hình Three-tiers
Các tham số của hệ thống được thiết kế động, dễ tùy chỉnh
Tính dùng lại của code.
Bảng chú giải
Bảng chú giải này được dùng để định nghĩa các thuật ngữ đặc thù trong lĩnh vực của bài toán, giải thích các từ ngữ có thể không quen thuộc với người đọc trong các mô tả của ca sử dụng hoặc các tài liệu khác của đề tài Thường thì tài liệu này có thể được dùng như một từ điển dữ liệu không chính thức, ghi lại các định nghĩa dữ liệu để mô tả ca sử dụng và các tài liệu khác và các định nghĩa này có thể tập trung vào những gì hệ thống phải thực hiện
3.4.2 Bảng danh sách các tác nhân
Bảng 3.1: Bảng danh sách các tác nhân:
STT Tác nhân Mô tả
1 Admin Admin - Quản trị của hệ thống
2 User User - Là người sử dụng có thể đăng ký, đăng nhập vào hệ thống để tải ảnh, video lên hệ thống và có thể chỉnh sửa ảnh, video của người dùng đó
3 User Guest User Guest - là kiểu người dùng có thể vào tìm kiếm và xem ảnh, video mà không cần đăng nhập Sẽ chỉ có thể xem được những ảnh, video mà người dùng tải lên và để quyền là cho phép tất cả mọi người có thể xem
3.4.3 Bảng chuyển đổi các yêu cầu chức năng sang ca sử dụng
Từ các phân tích về các đối tượng sẽ tham gia vào hệ thống, các yêu cầu và chức năng mà hệ thống cần phải đạt được Tác giả phân rã và chuyển đổi các chức năng sang ca sử dụng tại bảng 3.2 sau đây:
Bảng 3.2: Bảng chuyển đổi các yêu cầu chức năng sang ca sử dụng STT ID Ca sử dụng Actor chính Actor phụ Mô tả tóm tắt
Cho phép actor đăng nhập vào hệ thống
Cho phép actor đăng xuất khỏi hệ thống
Quản lý việc trao đổi giữa người dùng và người quản trị hệ thống
Báo cáo các lỗi trên hệ thống hoặc yêu cầu hỗ trợ liên quan tới tài khoản trong hệ thống
Cho phép actor chỉnh sửa, update nội dung thông báo
Cho phép actor xem nội dung các yêu cầu mình gửi hoặc được gửi tới mình
Trả lời lại các thông báo, yêu cầu mà actor nhận được
Gửi các thông báo, yêu cầu, trao đổi thông tin giữa người quản trị và user
Quản lý nội dung bình luận của User
Admin Ẩn bình luận của người dùng có nội dung vi phạm
Admin Hiển thị lại nội dung bình luận của người dùng
Quản lý ảnh mà người dùng tải lên hệ thống
Admin Ẩn ảnh có nội dung không phù hợp
Admin Hiển thị lại ảnh của người dùng
Quản lý video mà người dùng tải lên hệ thống
Admin Ẩn video có nội dung không phù hợp
Admin Hiển thị lại video của người dùng
Admin Quản lý người dùng
18 UC18 LockUser Admin Khóa tài khoản người dùng
19 UC19 UnlockUser Admin Mở khóa cho tài khoản người dùng
Admin Quản lý tài khoản admin
Admin Thêm một tài khoản admin vào hệ thống
22 UC22 EditAdmin Admin Chỉnh sửa tài khoản admin
Admin Vô hiệu hóa tài khoản admin
Tìm kiếm user từ trong hệ thống
Quản lý giao diện cá nhân hoặc của hệ thống
Admin Thêm quảng cáo trên hệ thống
27 UC27 SettingsSite Admin Thay đổi cài đặt của hệ thống
Thay đổi ngôn ngữ hiển thị
Admin Cập nhật các menu hiển thị trên hệ thống
User Thực hiện bình luận về ảnh hoặc video
User Chỉnh sửa lại nội dung bình luận
Xóa nội dung bình luận
User Actor thực hiện việc xóa video
User Tải video lên hệ thống
User Cập nhật thêm thông tin về video ví dụ như loại video, từ khóa, điều chỉnh quyền hiển thị video,…
User Actor thêm password vào ảnh,video để tăng bảo mật
User User cập nhật từ khóa cho ảnh, video giúp dễ dàng hơn trong việc tìm kiếm ảnh,video
User User cập nhật quyền hiển thị ảnh,video
40 UC40 ShareVideo User Chia sẻ video trên một hệ thống khác
Actor thực hiện việc tìm kiếm video
42 UC42 EditVideo User Actor sử dụng công cụ của hệ thống chỉnh sửa video
43 UC43 LikeVideo User Actor yêu thích một video
User Actor thêm video hoặc ảnh vào album của mình
Actor thực hiện việc xem ảnh
46 UC46 EditImage User Actor sử dụng công cụ của hệ thống chỉnh sửa ảnh
48 UC48 ShareImage User Chia sẻ ảnh trên một hệ thống khác
User Cập nhật thêm thông tin về ảnh ví dụ như loại ảnh, từ khóa, điều chỉnh quyền hiển thị ảnh,…
User Tải ảnh lên hệ thống
Actor thực hiện việc tìm kiếm ảnh
System Sau khi người dùng tải ảnh lên hệ thống thì hệ thống sẽ tự động thực hiện việc kiểm tra ảnh có hợp lệ để đưa lên hệ thống không
53 UC53 LikeImage User User thực hiện yêu thích ảnh
User Khôi phục tài khoản trong hệ thống
User Người dùng thực hiện việc cập nhật ảnh bìa của trang cá nhân
User Người dùng thực hiện việc cập nhật ảnh đại diện
User Người dùng thực hiện việc cập nhật thông tin cá nhân
58 UC58 Registration User Guest Khách vãng lai thực hiện đăng ký tài khoản trên hệ thống
System Khi người dùng tải ảnh lên hệ thống thì hệ thống tự động nhận diện hình ảnh và thêm từ khóa giúp việc tìm kiếm dễ dàng hơn.
Đặc tả ca sử dụng
Phần Đặc tả ca sử dụng xin xem chi tiết tại Phụ lục 1.
Đặc tả bổ sung
Mục tiêu của tài liệu này là để định nghĩa các yêu cầu của Hệ thống quản lý ảnh/video online Đặc tả bổ sung này liệt kê các yêu cầu chưa được thể hiện trong các ca sử dụng Đặc tả bổ sung cùng với các ca sử dụng trong mô hình ca sử dụng thể hiện đầy đủ các yêu cầu của hệ thống này
3.6.2 Phạm vi Đặc tả bổ sung áp dụng cho Hệ thống quản lý ảnh/video online do người thực hiện đề tài phát triển Đặc tả này vạch rõ các yêu cầu phi chức năng của hệ thống, như tính ổn định, tính khả dụng, và tính hỗ trợ cũng như các yêu cầu chức năng chung của một số ca sử dụng.
Hệ thống cần đáp ứng hỗ trợ nhiều người dùng làm việc đồng thời Đồng thời hệ thống cần thực hiện việc tải ảnh, video lên một cách nhanh chóng Cơ chế tự động phân loại và kiểm tra ảnh cần thực hiện nhanh và có độ chính xác cao
Vì hệ thống có liên quan tới nghệ thuật nên hệ thống cần được thiết kế với giao diện đẹp bắt mắt phù hợp với xu hướng người dùng Tuy nhiên giao diện không được quá rườm rà khó sử dụng, cần có thêm hướng dẫn cụ thể cho người sử dụng Cần tạo các hướng dẫn cho người quản trị hệ thống để người quản trị có thể dễ dàng hơn trong việc tiếp cận hệ thống
Hệ thống phải hoạt động 24h một ngày, 7 ngày một tuần, với thời gian ngừng để bảo trì không quá 5 phút Hệ thống cần đáp ứng yêu cầu người dùng một cách nhanh nhất và đòi hỏi tính chính xác cao.
Hệ thống phải có khả năng hỗ trợ hàng ngàn người cùng truy cập tới cơ sở dữ liệu trung tâm trong một lúc ở bất kì thời điểm nào Cần có cơ chế mở rộng và đáp ứng được việc tăng thêm về số lượng người sử dụng đồng thời tại một thời điểm trong tương lai.
1 Vai trò của từng đối tượng phải được thể hiện rõ ràng
2 Người quản trị có quyền cao nhất có thể thêm hay xóa bất kì đối tượng nào
3 Các đối tượng được phân cấp quyền rõ ràng
4 Các thông tin chung của mỗi đối tượng do tự đối tượng đó quản lý
3.6.8 Các ràng buộc thiết kế
Hệ thống phải hỗ trợ hầu hết các trình duyệt của Windows như: Internet Explorer, Opera, Mozilla Firefox, Google Chrome…
Các sơ đồ ca sử dụng
Hình 3.3: Mô hình ca sử dụng của Admin
3.7.2 Mô hình các ca sử dụng của User
Hình 3.4: Mô hình ca sử dụng của User
3.7.3 Mô hình các trường hợp sử dụng của User Guest
Hình 3.5: Mô hình ca sử dụng của User Guest
Các biểu đồ tuần tự
Sau khi thực hiện đặc tả ca sử dụng và đặc tả bổ sung cần thiết kế các lớp tác giả sẽ phân tích thiết kế biểu đồ tuần tự của các ca sử dụng tương ứng để xác định các trình tự diễn ra sự kiện của một nhóm đối tượng tác động lên hệ thống Việc thiết kế biểu đồ tuần tự cần đáp ứng được yêu cầu sau: cần miêu tả chi tiết các thông điệp được gửi và nhận giữa các đối tượng đồng thời cũng chú trọng đến việc trình tự về mặt thời gian gửi và nhận các thông điệp đó
Khi bắt đầu vào hệ thống, hệ thống mở màn hình chính ở trạng thái chưa đăng nhập Người dùng khi có tài khoản có thể lựa chọn đăng nhập vào hệ thống bằng cách chọn “Đăng nhập” ở góc trái màn hình
Tên biểu đồ: UC01:Login
Biểu đồ tuần tự (Sequence Diagram):
Hình 3.6: Biểu đồ tuần tự: Đăng nhập hệ thống
3.8.2 Người dùng đăng xuất khỏi hệ thống
Tên biểu đồ: UC02:Logout
Hình 3.7: Biểu đồ tuần tự: Đăng xuất khỏi hệ thống
3.8.3 Người dùng chỉnh sửa nội dung báo cáo
Tên biểu đồ: UC04:UpdateReport
Hình 3.8: Biểu đồ tuần tự: Chỉnh sửa báo cáo
Tên biểu đồ: UC05:View Report
Hình 3.9: Biểu đồ tuần tự: Xem thông báo, báo cáo
Tên biểu đồ: UC06:ReplyReport
Hình 3.10: Biểu đồ tuần tự: Trả lời lại báo cáo
3.8.6 Gửi báo cáo lên hệ thống
Tên biểu đồ: UC07:SendReport
Hình 3.11: Biểu đồ tuần tự: Gửi báo cáo lên hệ thống
3.8.7 Vô hiệu hóa bình luận
Tên biểu đồ: UC09:DeactiveComment
Hình 3.12: Biểu đồ tuần tự: Vô hiệu hóa bình luận
Tên biểu đồ: UC10:ActiveComment
Hình 3.13: Biểu đồ tuần tự: Kích hoạt bình luận
Tên biểu đồ: UC12:DeactiveImage
Hình 3.14: Biểu đồ tuần tự: Vô hiệu hóa ảnh
Tên biểu đồ: UC13:ActiveImage
Hình 3.15: Biểu đồ tuần tự: Kích hoạt ảnh
Tên biểu đồ: UC15:DeactiveVideo
Hình 3.16: Biểu đồ tuần tự: Vô hiệu hóa video
Tên biểu đồ: UC16:ActiveVideo
Hình 3.17: Biểu đồ tuần tự: Kích hoạt video
3.8.13 Khóa tài khoản người dùng
Tên biểu đồ: UC18:LockUser
Hình 3.18: Biểu đồ tuần tự: Khóa tài khoản người dùng
3.8.14 Mở khóa tài khoản người dùng
Tên biểu đồ: UC19:UnlockUser
Hình 3.19: Biều đồ tuần tự: Mở khóa tài khoản người dùng
Tên biểu đồ: UC21:AddNewAdmin
Hình 3.20: Biểu đồ tuần tự: Thêm tài khoản admin
3.8.16 Chỉnh sửa tài khoản admin
Tên biểu đồ: UC22:EditAdmin
Hình 3.21: Biểu đồ tuần tự: Chỉnh sửa tài khoản admin
3.8.17 Vô hiệu hóa tài khoản admin
Tên biểu đồ: UC23:DeactiveAdmin
Hình 3.22: Biểu đồ tuần tự: Vô hiệu hóa tài khoản admin
Tên biểu đồ: UC24:FindUser
Hình 3.23: Biểu đồ tuần tự: Tìm kiếm người dùng
Tên biểu đồ: UC26:AddAdvertisement
Hình 3.24: Biểu đồ tuần tự: Thêm quảng cáo
3.8.20 Thay đổi ngôn ngữ hiển thị
Tên biều đồ: UC28:Choose Language
Hình 3.25: Biểu đồ tuần tự: Thay đổi ngôn ngữ hiển thị
Tên biều đồ: UC29:UpdateMenus
Hình 3.26: Biểu đồ tuần tự: Cập nhật menus
Tên biều đồ: UC30:AddComment
Hình 3.27: Biểu đồ tuần tự: Thêm bình luận
Tên biều đồ: UC31:EditComment
Hình 3.28: Biểu đồ tuần tự: Chỉnh sửa bình luận
Tên biều đồ: UC32:DeleteComment
Hình 3.29: Biểu đồ tuần tự: Xóa bình luận
Tên biều đồ: UC33:ViewVideo
Hình 3.30: Biểu đồ tuần tự: Xem video
Tên biều đồ: UC34:DeleteVideo
Hình 3.31: Biểu đồ tuần tự: Xóa video
3.8.27 Tải video lên hệ thống
Tên biều đồ: UC35:UploadVideo
Hình 3.32: Biểu đồ tuần tự: Tải video lên hệ thống
3.8.28 Thêm mật khẩu cho ảnh, video
Tên biều đồ: UC37:AddPassword
Hình 3.33: Biểu đồ tuần tự: Thêm mật khẩu cho ảnh, video
3.8.29 Cập nhật từ khóa cho ảnh, video
Tên biều đồ: UC38:UpdateKeyWord
Hình 3.34: Biểu đồ tuần tự: Cập nhật từ khóa cho ảnh, video
3.8.30 Cập nhật quyền xem ảnh, video
Tên biều đồ: UC39:UpdatePermission
Hình 3.35: Biểu đồ tuần tự: Cập nhật quyền xem ảnh, video
Tên biều đồ: UC40:ShareVideo
Hình 3.36: Biểu đồ tuần tự: Chia sẻ video
Tên biều đồ: UC41:FindVideo
Hình 3.37: Biểu đồ tuần tự: Tìm kiếm video
Tên biều đồ: UC42:EditVideo
Hình 3.38: Biểu đồ tuần tự: Chỉnh sửa video
Tên biều đồ: UC43:LikeVideo
Hình 3.39: Biểu đồ tuần tự: Yêu thích video
3.8.35 Thêm ảnh, video vào album
Tên biều đồ: UC44:AddToAlbum
Hình 3.40: Biểu đồ tuần tự: Thêm ảnh, video vào album
Tên biều đồ: UC45:ViewImage
Hình 3.41: Biểu đồ tuần tự: Xem ảnh
Tên biều đồ: UC46:EditImage
Hình 3.42: Biểu đồ tuần tự: Chỉnh sửa ảnh
Tên biều đồ: UC47:DeleteImage
Hình 3.43: Biểu đồ tuần tự: Xóa ảnh
Tên biều đồ: UC48:ShareImage
Hình 3.44: Biểu đồ tuần tự: Chia sẻ ảnh
3.8.40 Tải ảnh lên hệ thống
Tên biều đồ: UC50:UploadImage
Hình 3.45: Biểu đồ tuần tự: Tải ảnh lên hệ thống
Tên biều đồ: UC51:FindImage
Hình 3.46: Biểu đồ tuần tự: Tìm kiếm ảnh
3.8.42 Kiểm tra ảnh có tính chất phản cảm
Tên biều đồ: UC52:CheckImage
Hình 3.47: Biểu đồ tuần tự: Kiểm tra ảnh có tính chất phản cảm
Tên biều đồ: UC53:LikeImage
Hình 3.48: Biểu đồ tuần tự: Yêu thích ảnh
3.8.44 Lấy lại tài khoản từ hệ thống
Tên biều đồ: UC54:RecoverAccount
Hình 3.49: Biểu đồ tuần tự: Lấy lại tài khoản từ hệ thống
Tên biều đồ: UC55:UpdateCoverImage
Hình 3.50: Biểu đồ tuần tự: Cập nhật ảnh bìa
3.8.46 Cập nhật ảnh đại diện
Tên biều đồ: UC56:UpdateAvatar
Hình 3.51: Biểu đồ tuần tự: Cập nhật ảnh đại diện
3.8.47 Cập nhật thông tin cá nhân
Tên biều đồ: UC57:UpdatePersonalInfo
Hình 3.52: Biểu đồ tuần tự: Cập nhật thông tin cá nhân
3.8.48 Đăng ký tài khoản vào hệ thống
Tên biều đồ: UC58:Registration
Hình 3.53: Biểu đồ tuần tự: Đăng ký tài khoản vào hệ thống
Tên biều đồ: UC59:ImageRecognition
Hình 3.54: Biểu đồ tuần tự: Nhận dạng hình ảnh
Biểu đồ lớp
Dựa vào biều đồ tuần tự tại mục 5.8.1 và phần đặc tả ca sử dụng xác định được các class tham gia khi user thực hiện quá trình đăng nhập:
STT Tên lớp Mô tả
1 login Hiển thị giao diện trang đăng nhập cho người dùng
2 UsersBO Thao tác với cơ sở dữ liệu nhằm kiểm tra tài khoản người dùng
3 indexAfterUserControl Hiển thị giao diện sau khi người dùng đăng nhập thành công
4 PhotosBO Class indexAfterUserControl sẽ dùng để lấy ảnh hiển thị sau khi đăng nhập thành công
5 VideosBO Class indexAfterUserControl sẽ dùng để lấy video hiển thị sau khi đăng nhập thành công
6 SearchCategoryBO Class indexAfterUserControl lấy ảnh, video phân loại theo category
Hình 3.55: Biểu đồ lớp: Đăng nhập hệ thống
3.9.2 Biểu đồ lớp đăng ký thành viên
Dựa vào biểu đồ tuần tự tại mục 5.48.8 và phần đặc tả ca sử dụng xác định được các class tham gia khi user thực hiện quá trình đăng ký thành viên như bảng sau:
STT Tên lớp Mô tả
1 register Hiển thị giao diện trang đăng ký cho người dùng
2 UsersBO Thao tác với cơ sở dữ liệu nhằm lưu thông tin tài khoản người dùng mới đăng ký vào cơ sở dữ liệu
Hình 3.56: Biểu đồ lớp: Đăng ký thành viên
3.9.3 Biểu đồ lớp quản lý ảnh/video
Hình 3.57: Biểu đồ lớp: Quản lý ảnh/video
3.9.4 Biểu đồ lớp quản lý người dùng
Hình 3.58: Biểu đồ lớp: Quản lý người dùng
3.9.5 Biểu đồ lớp trao đổi thông tin
Hình 3.59: Biểu đồ lớp: Trao đổi thông tin
3.9.6 Biểu đồ lớp quản lý hệ thống
Hình 3.60: Biểu đồ lớp: Quản lý hệ thống
3.9.7 Biểu đồ lớp quản lý tìm kiếm
Hình 3.61: Biểu đồ lớp: Quản lý tìm kiếm
Thiết kế dữ liệu
Dựa vào các biểu đồ lớp đã được tạo, và biểu đồ tuần tự xác định các đối tượng tương ứng trong biểu đồ quan hệ tại bảng 3.62:
Bảng 3.62: Bảng mô tả ánh xạ giữa đối tượng trong lớp và đối tượng trong biểu đồ quan hệ
STT Tên lớp Mô tả ánh xạ giữa thiết kế lớp và thiết kế dữ liệu
Ca sử dụng liên quan
1 UserBO Lớp chứa các phương thức để lấy các thông tin về người dùng như: họ tên, số điện thoại, địa chỉ email, giới tính,…Để lưu các thông tin này cần phải tạo ra một lớp tên là “UserInfo” trong mô tả tại
Biểu đồ lớp: Quản lý người dùng
UC01 UC54 UC55 UC56 UC57 UC58
2 AlbumBO Lớp lưu thông tin về một album như: tên, ngày tạo, mô tả về album Lớp AlBumBO được mô tả trong Biểu đồ lớp:
3 MenuBO Quản lý các menus mà hệ người quản trị tạo ra cho hệ thống
4 SearchCategoryBO Lớp SearchCategoryBO chứa các phương thức và thuộc tính hỗ trợ việc tìm kiếm ảnh theo loại Sẽ tạo ra một bảng SearchCategory tương ứng giúp việc tìm kiếm được nhanh hơn
5 SearchKeywordBO Lớp SearchKeywordBO chứa các phương thức và thuộc tính hỗ trợ việc tìm kiếm ảnh theo từ khóa Sẽ tạo ra một bảng SearchKeyword tương ứng giúp việc tìm kiếm được tối ưu hơn
6 PhotosBO Lớp lưu thông tin ảnh, video: tên, ngày tải lên, đường dẫn tới ảnh,…Lớp PhotosBO được mô tả trong Biểu đồ lớp:
UC12,UC13 UC15,UC16 UC30,UC31 UC32,UC33 UC34,UC35 UC37,UC38
UC39,UC40 UC41,UC42 UC43,UC44 UC45,UC46 UC47,UC48 UC50,UC51 UC52,UC53 UC59
7 CategoryBO Lớp CategoryBO lưu thông tin về loại ảnh, video như: tên category, ngày tạo,…Do đó tương ứng với lớp CategoryBO này cần tạo ra một đối tượng Categories tương ứng trong cơ sở dữ liệu giúp lưu trữ các thông tin trên
UC12,UC13 UC15,UC16 UC30,UC31 UC32,UC33 UC34,UC35 UC37,UC38 UC39,UC40 UC41,UC42 UC43,UC44 UC45,UC46 UC47,UC48 UC50,UC51 UC52,UC53 UC59
8 Bảng giúp tạo mối liên kết giữa ảnh với album Để dễ dàng hơn trong việc quản lý ảnh theo album
UC12,UC13 UC15,UC16 UC30,UC31 UC32,UC33 UC34,UC35 UC37,UC38 UC39,UC40 UC41,UC42 UC43,UC44 UC45,UC46 UC47,UC48 UC50,UC51 UC52,UC53 UC59
9 Để thống kê lượng xem ảnh và dự đoán xu hướng về loại ảnh mà cộng đồng muốn xem, tác giả tạo ra bảng Views lưu trữ
10 Trong hệ thống cần lưu trữ người thực hiện bình luận ảnh
Nội dung bình luận tương ứng với ảnh nào nên cần tạo ra bảng Comments
11 Trong hệ thống cần thực hiện lưu lại số lượt thích ảnh Và cần xác định được người dùng nào đã thích ảnh đó nên tạo ra bảng Likes để lưu trữ
12 Như phân tích về các đối tượng tham gia vào hệ thống
Cần tạo ra bảng Roles để phân quyền cho người dùng
UC01 UC18 UC19 UC21 UC22 UC23
Hình 3.63: Sơ đồ mô hình dữ liệu
3.10.2 Danh sách các bảng dữ liệu 3.10.2.1 Roles
Mô tả: Phân quyền cho user trong hệ thống
Các thành phần lưu trữ: RoleID, RoleName Khóa chính là: RoleName
AlbumID AlbumName CreatedDate UserID Description Permission
CommentID Contents UserID PhotoID CreatedDate
MenuID Name Url ParentID Status
PhotoID Title Description KeyWord Permission Url DateOfUpload CategoryID UserID IsVideo Password
UserID Email Password FirstName LastName DateOfBirth Sex RoleID Avatar CoverImage DateOfRegister Phone Address Description Status
Mô tả: Lưu trữ thông tin của người sử dụng
Các thành phần lưu trữ: UserID, Email, Password, FirstName, LastName, DateOfBirth, RoleID, Avatar, DateOfRegister, CoverImage Khóa chính là: UserID
Mô tả: Lưu trữ quản lý thông tin menu
Các thành phần lưu trữ: MenuID, Name, Url, ParentID, Status Khóa chính là:
Mô tả: Lưu trữ quản lý thông tin đánh giá, bình luận
Các thành phần lưu trữ: ID, UserID, PhotoID, CreateDate Khóa chính là: ID
Mô tả: Lưu trữ quản lý album ảnh, video
Các thành phần lưu trữ: AlbumID, AlbumName, CreatedDate, UserID, Description, Permission Khóa chính là: AlbumID
Mô tả: Lưu trữ quản lý bình luận của người dùng
Các thành phần lưu trữ: CommentID, Contents, UserID, PhotoID, CreatedDate
Mô tả: Lưu trữ liên kết album ảnh và ảnh
Các thành phần lưu trữ: ID, PhotoID, AlbumID Khóa chính là: IDCommentID
Mô tả: Lưu trữ quản lý ảnh/video
Các thành phần lưu trữ: PhotoID, Title, Description, KeyWord, Permission, Url, DateOfUpload, CategoryID, UserID, MediaType Khóa chính là: PhotoID
Mô tả: Lưu trữ quản lý categories
Các thành phần lưu trữ: CategoryID, CategoryName, Created, ParentID Khóa chính là: CategoryID
Mô tả: Lưu trữ thông tin về categories giúp tối ưu việc tìm kiếm
Các thành phần lưu trữ: ID, CategoryId, CategoryName, CreateDate Khóa chính là:
Mô tả: Lưu trữ thông tin về ảnh giúp tối ưu việc tìm kiếm
Các thành phần lưu trữ: ID, Keyword, CreateDate Khóa chính là: ID
Mô tả: Lưu trữ quản lý việc xem ảnh của người dùng Giúp người quản trị có thể thống kê được loại ảnh nào được xem nhiều để phán đoán xu hướng người dùng
Các thành phần lưu trữ: ID, UserID, PhotoID, CreatedDate Khóa chính là: ID
3.10.3 Danh sách các thành phần của lược đồ dữ liệu
Bảng 3.64: Danh sách các thành phần của lược đồ dữ liệu
STT Tên Loại Ý nghĩa Ghi chú
1 Roles Tham số Phân quyền user hoặc admin
2 User Đối tượng Danh sách các user đăng ký trong hệ thống
3 Likes Tham số Lưu trữ số lượng yêu thích
4 Menus Đối tượng Quản lý các menus trên hệ thống website
5 Albums Đối tượng Các album ảnh, video
6 Comments Đối tượng Quản lý comment của các bức ảnh, video
7 PhotoAlbum Đối tượng Liên kết ảnh và album
8 Photos Đối tượng Thông tin chi tiết của mỗi bức ảnh, video
9 Categories Tham số Phân loại ảnh, video
10 SearchCategory Tham số Tìm kiếm ảnh theo loại ảnh
11 SearchKeyword Tham số Tìm kiếm ảnh theo từ khóa
12 Views Tham số Thống kê số lượng người xem
3.10.4 Danh sách các thuộc tính của từng thành phần
Về thuộc tính của từng thành phần dữ liệu xin xem chi tiết tại Phụ lục 2.
Thiết kế kiến trúc
Cấu trúc cây phân nhóm - Cấp 1
Cấu trúc cây phân nhóm – Cấp 2: User Guest
Hệ thống quản lý Ảnh/Video Online
Vai trò của User Vai trò của User
Vai trò của User Guest
Xem, đánh giá ảnh, video
Cấu trúc cây phân nhóm – Cấp 2: User
Cấu trúc cây phân nhóm – Cấp 2: Admin
Upload, chia sẻ ảnh, video Điều chỉnh thông tin cá nhân
Quản lý trao đổi thông tin
Quản lý giao diện website
CÀI ĐẶT
Cài đặt chương trình
Dưới đây là một số hình ảnh về hệ thống mà tác giả đã cài đặt:
Giao diện màn hình chính khi bắt đầu vào website:
Người dùng có thể thực hiện tìm kiếm ảnh/video theo từ khóa mà chưa phải đăng nhập vào hệ thống Ví dụ khi tìm kiếm với từ khóa “đẹp” thì hệ thống hiển thị tất cả ảnh được public trong hệ thống mà có từ khóa “đẹp”:
Khi người dùng lựa chọn “Đăng ký” thì giao diện form “Đăng ký” được hiển thị để người dùng có thể “Đăng ký” tài khoản vào hệ thống:
Nếu đã có tài khoản đăng nhập hệ thống người dùng chọn “Đăng nhập”:
Sau khi “Đăng nhập” vào hệ thống ảnh/video của các user khác trong hệ thống mà ở chế độ public được hiển thị:
Click vào “Bạn” để xem tất cả ảnh/video của cá nhân đã upload trước đó:
Có thể thực hiện tìm kiếm ảnh/video theo từ khóa sau khi “Đăng nhập”:
Thực hiện select một Ảnh bất kỳ mà tìm được có thể thực hiện “Thích” hoặc “Comment” dưới ảnh:
Có thể tùy chỉnh thông tin cá nhân bằng cách chọn vào icon của cá nhân và chọn “Thiết lập”
Người dùng có thể thực hiện thay đổi ảnh đại diện hoặc thay đổi ảnh bìa, có thể lấy ảnh trong kho ảnh của mình, trong album hoặc có thể tải ảnh lên từ PC:
Từ hệ thống có thể vào mục “Khám phá” để tìm kiếm ảnh/video theo chủ đề/thể loại có sẵn:
Khi thực hiện view ảnh cá nhân upload có thể thực hiện chỉnh sửa bằng cách click vào biểu tượng tool chỉnh sửa góc dưới bên phải của ảnh:
Khi click vào ảnh cá nhân upload có thể cập nhật lại thông tin về ảnh như: Thêm vào album khác, thêm từ khóa, thay đổi chế độ hiển thị, cập nhật thể loại ảnh, thêm mật khẩu để che dấu ảnh:
Người dùng có thể thực hiện upload ảnh/video lên hệ thống, có thể cập nhật tên ảnh/video, có thể thêm từ khóa, chọn thể loại và chế độ hiển thị cũng như thêm mật khẩu cho ảnh nếu không muốn người khác có thể xem ảnh của mình (Có thể upload một hoặc nhiều ảnh/video đồng thời):
Nếu ảnh có mật khẩu muốn xem được ảnh sẽ cần phải nhập mật khẩu mới có thể xem được: Đối với người quản trị hệ thống thì khi đăng nhập vào trang admin sẽ có giao diện như sau:
Có thể vào mục “Thông tin user” để có thể tùy chỉnh các user trong hệ thống Tại đây admin cũng có thể thêm người quản trị hoặc tìm kiếm user bất kỳ:
Thực hiện thêm danh mục, quản lý danh mục sẽ click vào “Quản lý danh mục” Tại đây admin có thể tạo mới một danh mục hoặc xóa một danh mục đã tạo trước đấy:
Admin có thể xem thống kê theo từ khóa mà người dùng tìm kiếm, hoặc thống kê theo danh mục mà người dùng hay lựa chọn, hay thống kê theo lượt xem lượt thích nhằm phục vụ cho việc tìm hiểu xu hướng người dùng:
Triển khai và thử nghiệm chương trình
Trước tiên bạn copy thư mục ứng dụng có tên PhotosStore vào ổ cứng (Chẳng hạn:
C:/PhotosStore ) Sau đó, bằng việc cấu hình trong IIS cùng với việc cấu hình ASP.NET trong IIS, bạn có thể truy cập vào website thông qua địa chỉ sau: http:// http://localhost:8080/default.aspx/ và trang mặc định sẽ được triệu gọi (Default.aspx) Các bước cấu hình cụ thể như sau: Vào IIS, chọn Default Web Site =>Right-Click => Add Virtual Directory…=> Gõ vào ô Alias tên truy cập (ví dụ: C:/ PhotosStore) => Chọn đường dẫn tới thư mục vừa chép các files chương trình (C:/ PhotosStore) => Thiết lập các quyền truy xuất => Finish
Kế tiếp, cần phải tạo cơ sở dữ liệu cho ứng dụng trong cơ sở dữ liệu SQL Sever bằng cách sử dụng trình điều khiển Microsoft SQL Sever Management Studio như hình 4.1:
Hình 4.1: Microsoft SQL Sever Management Studio
Kế tiếp, bạn tạo cơ sở dữ liệu có tên PhotosManagement bằng cách chọn ngăn Database =>
Right-Click => New Database như hình 4.2 Đặt tên cơ sở dữ liệu là PhotosManagement và chọn địa chỉ để lưu cơ sở dữ liệu như hình 4.3
Hình 4.2: Tạo cơ sở dữ liệu PhotosManagement
Hình 4.3: Chọn chức năng Restore Database
Sau khi tạo thành công cơ sở dữ liệu PhotosManagement, tên cơ sở dữ liệu này sẽ xuất hiện trong danh sách cơ sở dữ liệu của SQL Server Bước kế tiếp là copy tập tin backup có tên PhotosManagement trong thư mục Database của đĩa cài đặt vào đĩa cứng
Trở lại trình điều khiển Microsoft SQL Sever Management Studio, bạn phải phục hồi dữ liệu từ tập tin backup Để làm điều này, bạn chọn tên cơ sở dữ liệu PhotosManagement và Right-Click => Tasks => Restore => Database Sau đó bạn chọn đường dẫn lấy tập tin backup để phục hồi Chọn OK, SQL Server phục hồi thành công cơ sở dữ liệu PhotosManagement Sau đó vào cơ sở dữ liệu PhotosManagement và Refresh, ta sẽ có cơ sở dữ liệu như hình 4.4:
Hình 4.4: Danh sách các đối tượng cơ sở dữ liệu
TỔNG KẾT
Kết luận
Với sự phát triển của công nghệ như hiện nay và sẽ còn phát triển hơn nữa trong thời gian tới Đồng hành với đó là nhu cầu lưu trữ ảnh, video nhằm chia sẻ, giải trí trên internet sẽ còn phát triển hơn nữa Xuất phát từ những nhu cầu thực tế như vậy em mong muốn xây dựng một ứng dụng có tính thực tiễn cao đó là Hệ thống quản lý ảnh/video online nhằm góp phần nào phục vụ, thỏa mãn nhu cầu lưu trữ và chia sẻ của rất nhiều người ở trên Xây dựng một ứng dụng giải trí sử dụng một công nghệ lập trình mới, hiện đại có nhiều những thú vị song cũng không ít thách thức Thứ nhất, đã tồn tại rất nhiều website có tính chất tương tự nên việc phát triển mang tính đột phá khác biệt rất khó Thứ hai, do tính chất công việc hiện tại nên em gần như chưa bao giờ lập trình web và em thực sự chưa làm việc với ASP.NET để xây dựng một ứng dụng Web Dó đó quá trình thực hiện luận văn gặp khá nhiều vấn đề khó khăn, mất khá nhiều thời gian để có thể nắm được cách làm việc với ASP.NET Dó đó dù không mong muốn nhưng Website vẫn chưa theo đúng được ý muốn mà bản thân em đặt ra lúc ban đầu Ngoài ra, để xây dựng một trang Web thành công thì giao diện cũng là một yếu tố rất quan trọng, nó phải có sự kết hợp hài hòa giữa sự hấp dẫn, lôi cuốn người dùng vừa có sự đơn giản thân thiện Nhất là một Website có liên quan nhiều tới nghệ thuật như Website em thực hiện Về mặt này em nhận thấy bản thân còn chưa có nhiều kinh nghiệm về thiết kế giao diện nên giao diện còn khá đơn giản
Sau đây là những phần mà em đã hoàn thành trong luận văn (mặc dù còn rất nhiều ý tưởng, dự định chưa thể thực hiện được do khả năng và thời gian có hạn, hy vọng rằng có thể hoàn thiện hơn trong thời gian tới):
1 Giao diện được xây dựng khá hoàn chỉnh, tương ứng với từng đối tượng người dùng có thanh menu riêng, chứa các khả năng có thể thực hiện
2 Với đối tượng người dùng là Quản trị thì có thể thực hiện được các chức năng sau:
Đăng nhập vào hệ thống
Xem danh sách người dùng với vai trò quản trị
Xem thông tin chi tiết của từng người dùng với vai trò quản trị
Xóa một người dùng khỏi cơ sở dữ liệu
Điều chỉnh thông tin các nhân
Quản lý tùy chỉnh giao diện của website
Thêm một người sử dụng mới với vai trò quản trị
Xem nội dụng thông điệp, gửi và xóa thông điệp trong danh sách
Các yêu cầu về bảo mật: Sử dụng kiến trúc bảo mật của ASP.NET Khả năng tương thích với các trình duyệt khác nhau: Chạy tốt trên các trình duyệt khác nhau hỗ trợ kiến trúc bảo mật mới của ASP.NET như: Internet Explorer, Mozilla Firefox, GoogleChorme.
Hướng phát triển
Như trên đã trình bày, hệ thống đã xây dựng còn khá nhiều hạn chế cả về giao diện lẫn chức năng, nó cũng chưa được đúng với mong muốn và những phân tích về nhu cầu của hệ thống
Trong tương lai, có thể mở rộng thêm nhiều chức năng mới và có thể chuyên biệt hóa về một loại ảnh nghệ thuật cụ thể Nếu làm thế website sẽ hoàn thiện và em tin là sẽ thu hút được nhiều sự chú ý từ người dùng
5.2.2 Mở rộng thêm các chức năng edit Ảnh/Video
Chức năng edit Ảnh/Video còn ở mức khá đơn giản Rất nhiều người hiện tại muốn sau khi upload ảnh lên website có thể chỉnh sửa thêm các hiệu ứng cho ảnh đẹp và lung linh hơn trước khi chia sẻ cho bạn bè Do vậy nếu thực hiện thêm nhiều tính năng edit cho Ảnh/Video sẽ càng thu hút được người dùng hơn nữa.
5.2.3 Sử dụng AI cho việc nhận diện Ảnh và Video
Trong hệ thống của mình em có đề cập tới việc tự động nhận diện ảnh, tự động tag tên, tag từ khóa sử dụng cho việc tìm kiếm ảnh, video Tuy nhiên chức năng này vẫn chưa hoàn thiện Ngày nay AI đang là một bước tiến trong công nghệ Với hướng tiếp theo em mong muốn có thể sử dụng AI cho tính năng này nhằm phân loại ảnh, video chính xác hơn và giúp người quản trị kiểm soát ảnh phản cảm đưa lên hệ thống.
5.2.4 Tăng cường quảng cáo giới thiệu hệ thống tới người dùng
Vì hệ thống đang hướng tới việc sử dụng cho mục đích bán hàng, quảng cáo và giới thiệu sản phầm nên cần đẩy mạnh việc quảng cáo hình ảnh website nhằm tăng lượng truy cập và sử dụng website Có thể tạo ra các mẫu thiết kế mẫu kết hợp với việc chỉnh sửa ảnh, video khi đó người dùng bán hàng có thể sử dụng website như một nơi thiết kế hình ảnh banner giới thiệu các sản phẩm của mình.