Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2Đồ án tốt nghiệp: Xây dựng hệ thống thư viện online sử dụng MVC Entity Framework 6 và API Restful 2
CƠ SỞ LÝ THUYẾT
Giới thiệu về mô hình MVC [1]
Mô hình MVC là một chuẩn kiến trúc phần mềm quan trọng trong quá trình xây dựng, phát triển, vận hành và bảo trì hệ thống hoặc ứng dụng Mô hình này tạo ra cấu trúc 3 lớp gồm Model, View và Controller, giúp tách biệt các thành phần nhưng vẫn tương tác để xử lý nghiệp vụ một cách hiệu quả Được phát triển từ những năm 1970 tại phòng thí nghiệm Xerox PARC ở Palo Alto, MVC không phụ thuộc vào nền tảng, môi trường hay ngôn ngữ lập trình, cho phép áp dụng linh hoạt trên các hệ điều hành như Windows, Linux và các ngôn ngữ phổ biến như PHP, ASP, JSP.
Các thành phần trong MVC
Hình 1 1: Các thành phần trong mô hình MVC
Model là thành phần chứa các nghiệp vụ liên quan đến tương tác dữ liệu hoặc hệ quản trị cơ sở dữ liệu như MySQL, MS SQL Nó bao gồm các lớp và hàm xử lý các tác vụ chính như kết nối database, truy vấn dữ liệu, cũng như thực hiện các thao tác thêm, sửa, xóa dữ liệu để đảm bảo quản lý dữ liệu hiệu quả và chính xác.
View là nơi chứa các giao diện như nút bấm, khung nhập, menu và hình ảnh, đảm nhiệm chức năng hiển thị dữ liệu và tạo điều kiện cho người dùng tương tác dễ dàng với hệ thống.
Controller là nơi tiếp nhận các yêu cầu xử lý từ người dùng, đảm nhận nhiệm vụ điều hướng dữ liệu giữa các thành phần của ứng dụng Nó gồm các lớp hoặc hàm xử lý các nghiệp vụ logic để lấy đúng dữ liệu cần thiết từ lớp Model, giúp đảm bảo tính chính xác và hiệu quả của quá trình truy xuất dữ liệu Sau đó, controller truyền dữ liệu này tới lớp View để hiển thị thông tin tới người dùng một cách rõ ràng và dễ hiểu.
1.1.3 Hoạt động của mô hình MVC trong dự án Website
Hình 1 2: Hoạt động của mô hình MVC
Mô hình MVC trong các dự án website và sẽ hoạt động theo quy trình sau:
Người dùng truy cập trang web bằng một trình duyệt (Firefox, Chrome, hoặc IE) để gửi các yêu cầu HTTP chứa dữ liệu nhập vào Các yêu cầu này sẽ được chuyển đến các Controller xử lý phù hợp dựa trên hệ thống Routing điều hướng Hệ thống Routing sẽ xác định Controller phù hợp để đảm bảo yêu cầu được xử lý chính xác và hiệu quả.
Khi Controller nhận được yêu cầu từ người dùng, nó có nhiệm vụ kiểm tra xem yêu cầu đó có cần dữ liệu từ Model không Nếu cần, Controller sẽ sử dụng các lớp hoặc hàm cần thiết trong Model để lấy dữ liệu, sau đó trả về các mảng kết quả Tiếp theo, Controller xử lý dữ liệu này và truyền đến View phù hợp để hiển thị cho người dùng Cuối cùng, Controller xác định các View tương ứng để đảm bảo nội dung hiển thị đúng với yêu cầu của người dùng.
Khi nhận dữ liệu từ Controller, View chịu trách nhiệm xây dựng các thành phần hiển thị như hình ảnh và thông tin dữ liệu, sau đó trả về nội dung GUI để Controller hiển thị kết quả lên màn hình trình duyệt.
- BROWSER sẽ nhận giá trị trả về (HTTP Response) và sẽ hiển thị với người dùng Kết thúc một quy trình hoạt động.
Ưu, nhược điểm của mô hình MVC
- Hệ thống phân ra từng phần độc lập nên dễ dàng phát triển
- Chia thành nhiều module nhỏ nên nhiều người có thể làm chung dự án
Dễ dàng xây dựng, phát triển, quản lý, vận hành và bảo trì dự án giúp đảm bảo sự rõ ràng và minh bạch trong quá trình phát triển Việc kiểm soát các luồng xử lý và tạo ra các thành phần xử lý nghiệp vụ chuyên biệt hóa là yếu tố quan trọng để nâng cao hiệu quả của dự án Với các giải pháp tối ưu, doanh nghiệp có thể quản lý dự án một cách dễ dàng và chuyên nghiệp, đảm bảo sự thành công bền vững.
- Dễ dàng debug trong quá trình xây dựng
- Yêu cầu về chuyên môn khá cao, có kiến thức vững về các mô hình chuẩn
- Khó triển khai với những dự án yêu cầu phức tạp hơn
Khái niệm về ASP.NET MVC5 [2]
ASP.NET MVC là mô hình lập trình web chiến lược của Microsoft, giúp xây dựng các ứng dụng web linh hoạt và dễ bảo trì MVC (Model-View-Controller) là kiến trúc phân tách ứng dụng thành ba thành phần chính: model quản lý dữ liệu, view xử lý giao diện người dùng và controller điều hướng nghiệp vụ Áp dụng mô hình MVC trong ASP.NET giúp tối ưu hóa quy trình phát triển, nâng cao hiệu suất và khả năng mở rộng của ứng dụng web.
- Model: giúp lưu trữ dữ liệu của ứng dụng và trạng thái của một cơ sở dữ liệu
- View: là một giao diện người dùng được sử dụng bởi khách truy cập trang web của bạn để nhìn thấy các dữ liệu
Controller chịu trách nhiệm xử lý các tương tác của người dùng với trang web và xác định loại view cần hiển thị để cung cấp trải nghiệm người dùng tối ưu Ngoài ra, Controller còn đóng vai trò giao tiếp với Model, giúp quản lý dữ liệu và logic ứng dụng một cách hiệu quả.
ASP.NET MVC5 được phát hành vào tháng 10 năm 2013 trên nền tảng bộ Net Framework 4.5 và Net Framework 4.5.1 trên phiên bản Visual Studio 2013
Tới nay đã có một số update về phiên bản:
Hình 1 3: Các phiên bản ASP.NET MVC
Những ưu, nhược điểm của ASP.NET
Trang ASP.Net hỗ trợ lựa chọn nhiều ngôn ngữ lập trình như Visual Basic.Net, J#, và C#, giúp nhà phát triển dễ dàng phát triển ứng dụng phù hợp với nhu cầu Trang ASP.Net được biên dịch thành các tập tin DLL trước, cho phép Server thực thi nhanh chóng và hiệu quả, tối ưu hóa hiệu suất vận hành của ứng dụng web.
.Net Framework cung cấp một bộ thư viện phong phú và đa dạng, hỗ trợ tốt cho việc xử lý XML, tích hợp Web Service và truy cập dữ liệu dễ dàng qua ADO.Net, mang lại hiệu suất cao và khả năng mở rộng cho các ứng dụng phần mềm.
- ASPX và ASP có thể cùng hoạt động trong một ứng dụng
- Sử dụng phong cách lập trình mới: Code behide Tách code riêng, giao diện riêng do vậy dễ đọc, dễ quản lý và bảo trì
- Kiến trúc lập trình giống ứng dụng trên Windows
- Hỗ trợ quản lý trạng thái của các control
- Tự động phát sinh mã HTML cho các Server control tương ứng với từng loại Browser
+ Không cần lock, không cần đăng ký DLL
+ Cho phép nhiều hình thức cấu hình ứng dụng
- Hỗ trợ quản lý ứng dụng ở mức toàn cục
+ Global.aspx có nhiều sự kiện hơn
+ Quản lý session trên nhiều Server, không cần Cookies
- Không thể chạy được trên linux
- Không có Visual Studio thì khó có thể viết code cho Asp.net
- Biên dịch chậm làm tốc độ website chậm hơn
1.2 TỔNG QUAN VỀ ENTITY FRAMEWORK
Giới thiệu về Entity Framework [3]
Microsoft® ADO.NET Entity Framework là bộ ánh xạ đối tượng – quan hệ (ORM) giúp lập trình viên làm việc với dữ liệu quan hệ như các đối tượng dễ dàng hơn, giảm thiểu mã plumbing cần viết Với Entity Framework, người phát triển sử dụng LINQ để truy vấn và thao tác dữ liệu dưới dạng các đối tượng đã định nghĩa, giúp tăng hiệu quả và linh hoạt trong lập trình Các tính năng của ORM trong Entity Framework như theo dõi thay đổi (change tracking), giải quyết danh tính (identity resolution), tải lười (lazy loading) và dịch truy vấn (query translation) cho phép nhà phát triển tập trung vào phát triển ứng dụng kinh doanh hơn là các nguyên tắc truy cập dữ liệu phức tạp.
Hình 1 4: Giới thiệu về Entity Framework
Các tính năng nổi trội của Entity Framework
- Làm việc được với nhiều máy chủ cơ sở dữ liệu (bao gồm Microsoft SQL Server,
Công cụ ánh xạ mạnh mẽ giúp dễ dàng xử lý trên sơ đồ cơ sở dữ liệu thực tế, tối ưu hóa quá trình quản lý dữ liệu và tích hợp hiệu quả với các thủ tục lưu trữ.
Chúng tôi cung cấp các công cụ Visual Studio tích hợp trực quan giúp tạo mô hình thực thể một cách dễ dàng và hiệu quả Công cụ này cho phép tự động generate mô hình từ cơ sở dữ liệu có sẵn, giảm thiểu thời gian và công sức phát triển Ngoài ra, bạn có thể triển khai một cơ sở dữ liệu mới dựa trên mô hình đã tạo, với khả năng tùy chỉnh toàn diện để phù hợp với yêu cầu của dự án.
Code First cho phép tạo mô hình thực thể bằng mã, giúp phát triển linh hoạt và tối ưu hóa quy trình lập trình Phương pháp này có thể ánh xạ tới cơ sở dữ liệu có sẵn hoặc tự động tạo mới dựa trên mô hình đã xây dựng, phù hợp với các dự án phát triển ứng dụng yêu cầu tùy chỉnh cao Đây là giải pháp hiệu quả cho việc quản lý dữ liệu trong các ứng dụng của doanh nghiệp, giúp tiết kiệm thời gian và tăng tính linh hoạt trong quá trình phát triển phần mềm.
This framework is highly compatible with various NET application development models, including ASP.NET, Windows Presentation Foundation (WPF), Windows Communication Foundation (WCF), and WCF Data Services (formerly known as ADO.NET Data Services), ensuring seamless integration across diverse NET applications.
Lợi ích của Entity Framework
Entity Framework được xây dựng dựa trên mô hình dịch vụ ADO.NET, bổ sung các dịch vụ mới để hỗ trợ tính năng nâng cao Nhờ đó, các ứng dụng hiện tại sử dụng ADO.NET có thể dễ dàng chuyển đổi sang Entity Framework mà không cần học lại từ đầu Điều này giúp các lập trình viên ADO.NET làm quen với mô hình lập trình của Entity Framework một cách dễ dàng và nhanh chóng.
Sử dụng Entity Framework để viết các ứng dụng theo hướng dữ liệu có các lợi ích:
- Giảm thời gian phát triển; framework cung cấp khả năng truy cập dữ liệu lõi để người lập trình có thể tập trung vào ứng dụng logic
Người lập trình có thể làm việc hiệu quả hơn nhờ vào các mô hình đối tượng hướng trung tâm, như kế thừa, thành viên phức hợp và các mối quan hệ phức tạp, giúp tăng tính linh hoạt và mở rộng của hệ thống Trong NET Framework 4, Entity Framework hỗ trợ Persistence Ignorance bằng cách hoạt động với các thực thể Plain Old CLR Objects, giúp giảm sự phụ thuộc vào cấu trúc dữ liệu cụ thể và tối ưu hóa quá trình quản lý dữ liệu.
Các ứng dụng hiện nay được giải thoát khỏi phụ thuộc vào mã cứng của công cụ dữ liệu cụ thể hoặc lược đồ lưu trữ nhờ vào việc hỗ trợ một mô hình ý niệm độc lập với mô hình lưu trữ hoặc vật lý Điều này giúp tăng tính linh hoạt và khả năng mở rộng của hệ thống, đồng thời giảm thiểu rủi ro liên quan đến phụ thuộc vào cấu trúc dữ liệu cụ thể Nhờ đó, các ứng dụng có thể dễ dàng thích nghi với các thay đổi về lưu trữ dữ liệu mà không cần chỉnh sửa lớn trong mã nguồn.
- Sự ánh xạ giữa mô hình đối tượng và lược đồ lưu trữ cụ thể có thể thay đổi mà không cần thay đổi code ứng dụng
Ngôn ngữ tích hợp truy vấn (LINQ to Entity) hỗ trợ IntelliSense giúp lập trình viên dễ dàng viết và chỉnh sửa các truy vấn, đồng thời cung cấp xác nhận cú pháp trong thời gian biên dịch để đảm bảo tính chính xác của mã nguồn Với LINQ to Entity, việc tạo các truy vấn dựa trên mô hình ý niệm trở nên đơn giản và trực quan hơn, nâng cao hiệu suất phát triển ứng dụng dữ liệu Công cụ này giúp tối ưu hóa quá trình lập trình bằng cách cung cấp các gợi ý tự động và kiểm tra lỗi sớm, đảm bảo các truy vấn hoạt động chính xác theo mô hình dữ liệu đã định nghĩa.
Các thành phần của Entity Framework
Entity Framework utilizes the Entity Data Model (EDM) to describe application objects and conceptual models developed during software development Built on the widely used Entity Relationship model, EDM enhances abstraction levels within logical database diagrams, facilitating easier data management Designed as a universal data model, EDM aims to unify development and server technologies across Microsoft's ecosystem Consequently, applications leveraging Entity Framework and EDM can seamlessly integrate with WCF Data Services, Windows Azure Table Storage, SharePoint 2010, SQL Server Reporting Services, SQL Server PowerPivot for Excel, and future technologies, ensuring scalable and flexible data solutions.
Các thành phần của Entity Framework trong EDM:
Entity Framework hoạt động dựa trên các tập tin XML để thực hiện các nhiệm vụ chính của nó Những tập tin này đóng vai trò xác định mô hình ý niệm, xác định mô hình lưu trữ và tạo ra ánh xạ (mapping) giữa mô hình và cơ sở dữ liệu vật lý, giúp quá trình quản lý dữ liệu trở nên chuyên nghiệp và hiệu quả.
Hình 1 5 Các thành phần của Entity Framework trong EDM
Conceptual schema definition language (CSDL)
CSDL là một ngôn ngữ dựa trên XML, giúp mô tả các thực thể, mối quan hệ và hàm tạo thành mô hình ý niệm của ứng dụng hướng dữ liệu Nó đóng vai trò quan trọng trong việc xây dựng các hệ thống quản lý dữ liệu hiệu quả, hỗ trợ quá trình thiết kế và quản lý database một cách trực quan và linh hoạt Nhờ đó, CSDL giúp tối ưu hoá quá trình phát triển ứng dụng dữ liệu, nâng cao khả năng mở rộng và tích hợp của hệ thống.
Mô hình ý niệm này có thể được sử dụng bởi Entity Framework hoặc WCF Data Services để quản lý dữ liệu hiệu quả Các siêu dữ liệu (metadata) mô tả rõ ràng về Cơ sở dữ liệu (CSDL) giúp Entity Framework ánh xạ các thực thể và mối quan hệ trong mô hình ý niệm với nguồn dữ liệu một cách chính xác Việc sử dụng mô hình này tối ưu hóa quá trình tương tác giữa ứng dụng và nguồn dữ liệu.
CSDL được lưu trữ trong tập tin có phần mở rộng là csdl bên trong thư mục chứa project
Store schema definition language (SSDL)
SSDL là một ngôn ngữ dựa trên XML mô tả các mô hình lưu trữ của một ứng dụng Entity Framework
SSDL được lưu trữ trong tập tin có phần mở rộng là ssdl bên trong thư mục chứa project
MSL là một ngôn ngữ dựa trên XML mô tả các ánh xạ giữa mô hình ý niệm và mô hình lưu trữ của một ứng dụng Entity Framework
MSL được lưu trữ trong tập tin có phần mở rộng là msl bên trong thư mục chứa project.
Kiến trúc xử lý dữ liệu của Entity Framework
Hình 1 6: Kiến trúc xử lý dữ liệu của Entity Framework
EDM (Entity Data Model): EDM bao gồm ba phần chính: mô hình ý niệm (Concept model), ánh xạ (Mapping) và mô hình lưu trữ (Storage model)
Mô hình ý niệm là tập hợp các lớp mô hình cùng các mối quan hệ giữa chúng, giúp thể hiện cấu trúc dữ liệu một cách rõ ràng và linh hoạt Đây là phương pháp thiết kế trung lập, không phụ thuộc vào cách bố trí bảng trong cơ sở dữ liệu, giúp tối ưu hóa quá trình quản lý và mở rộng hệ thống dữ liệu Việc xây dựng mô hình ý niệm chính là bước quan trọng để xác định rõ các thành phần dữ liệu và mối liên hệ của chúng trước khi triển khai vào thiết kế cơ sở dữ liệu thực tế.
502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared
- Mapping: bản đồ ánh xạ bao gồm thông tin về sự ánh xạ từ mô hình ý niệm thành mô hình lưu trữ
LINQ to Entities là ngôn ngữ truy vấn mạnh mẽ được sử dụng để thao tác và truy vấn các mô hình đối tượng trong ứng dụng Nó cho phép lập trình viên viết các truy vấn linh hoạt và dễ hiểu, đồng thời trả về các thực thể đã xác định trong mô hình ý niệm của hệ thống Nhờ đó, LINQ to Entities giúp tối ưu hóa quá trình xử lý dữ liệu, nâng cao hiệu suất và tăng tính linh hoạt trong việc phát triển các ứng dụng dựa trên cơ sở dữ liệu.
Entity SQL: Entity SQL lại là một ngôn ngữ truy vấn giống như LINQ to Entities
Tuy nhiên nó khó khăn hơn một chút so với L2E và cũng phát triển cần phải tìm hiểu nó một cách riêng biệt
Object Service: là một entry point xử lý dữ liệu từ cơ sở dữ liệu và trả lại dữ liệu
Object Service chịu trách nhiệm cụ thể hóa quá trình chuyển đổi dữ liệu từ tầng Entity client data provide trả về thành cấu trúc đối tượng thực thể
Entity Client Data Provider chịu trách nhiệm chính trong việc chuyển đổi các câu truy vấn L2E và Entity Framework thành các truy vấn SQL phù hợp với hệ quản trị cơ sở dữ liệu phía dưới Nó giao tiếp trực tiếp với ADO.Net data provider để gửi yêu cầu truy vấn và nhận dữ liệu, đảm bảo quá trình truy vấn diễn ra chính xác và hiệu quả EntityClient sử dụng Entity SQL để thực hiện các truy vấn, giúp tối ưu hóa hiệu suất và độ chính xác trong quá trình truy xuất dữ liệu.
ADO.Net Data Provider: là layer giao tiếp với cơ sở dữ liệu theo tiêu chuẩn
EntityDataReader là lớp bên trong EntityClient, được sử dụng để đọc kết quả truy vấn
DBDataReader đọc kết quả trả về từ cơ sở dữ liệu
Các lệnh truy vấn từ layer trên sẽ được chuyển thành cấu trúc lệnh dạng cây (Command Tree) và chuyển xuống các layer dưới.
Các phiên bản của Entity Framework
The first versions of Entity Framework (EF 3.5 and EF 4.0) were included with the NET Framework, sharing the same version numbers as the platform they were integrated with Subsequently, Entity Framework transitioned to an independent stand-alone product, adopting semantic versioning standards outlined by semver.org to ensure clearer version control and compatibility.
Các phiên bản của Entity Framework:
Entity Framework 3.5 is the first version of Entity Framework included in NET 3.5 SP1 and Visual Studio 2008 SP1 This version provides essential support for Object-Relational Mapping (ORM), enabling developers to work efficiently with database workflows using the Database First approach.
Entity Framework 4.0: Phiên bản này được đưa vào NET Framework 4.0 và
Visual Studio 2010 giới thiệu nhiều tính năng mới nổi bật như hỗ trợ POCO, lazy loading, cải thiện khả năng kiểm tra, thế hệ mã tùy biến và tiến trình Model First, giúp nhà phát triển tối ưu hóa quy trình lập trình và nâng cao hiệu suất dự án.
Entity Framework 4.1: là phiên bản đầu tiên phát hành NuGet Phiên bản này bao gồm DbContext API và Code First được đơn giản hóa
Entity Framework 4.1.1 không chỉ vá lỗi đáng kể mà còn giới thiệu một số thành phần mới giúp công cụ thiết kế làm việc hiệu quả hơn với mô hình Code First, nâng cao trải nghiệm người dùng và tối ưu hóa quá trình phát triển ứng dụng.
Entity Framework 4.2: phiên bản sửa lỗi cho EF 4.1.1
Entity Framework 4.3: phiên bản bao gồm tính năng mới Code First Migrations
Quá trình cho phép các ứng dụng hiện có chạy trên nhiều máy và hệ điều hành khác nhau giúp mở rộng khả năng tương thích của phần mềm Trong đó, cơ sở dữ liệu được tạo ra bằng phương pháp Code First có thể thay đổi dần theo sự phát triển của mô hình Code First Điều này đảm bảo tính linh hoạt và khả năng mở rộng trong quá trình phát triển phần mềm.
Entity Framework 4.3.1: Bản vá lỗi bao gồm một số sửa lỗi của phiên bản EF 4.3 và hỗ trợ LocalBb tốt hơn cho người sử dụng EF 4.3 trên Visual Studio 2012
- Phiên bản này có thể được sử dụng trong Visual Studio 2010 và Visual Studio
In 2012, development focused on creating applications using NET Framework 4.0 and 4.5 The NET 4.5 update introduced several new features, including enhanced enum support, table-valued functions, spatial data types, and various performance improvements These advancements aimed to improve application efficiency and expand functionality for developers working with NET technologies.
When creating a new model using Entity Framework in Visual Studio 2012, the EFI 5 NuGet packages are automatically installed in your project, and the generated code will utilize EF 5 Additionally, new ASP.NET projects built with Visual Studio 2012, including MVC applications, come with EF 5 NuGet packages installed by default, ensuring seamless integration and compatibility.
502 Bad GatewayUnable to reach the origin service The service may be down or it may not be responding to traffic from cloudflared
Entity Framework 6: Phiên bản này có thể được sử dụng trong Visual Studio 2013,
Visual Studio 2012 và Visual Studio 2010 (runtime only) để viết các ứng dụng nhằm mục tiêu NET 4.0 và NET 4.5
Entity Framework 6.0.1: Phiên bản sửa lỗi cho EF 6
Entity Framework 6.0.3: Phiên bản sửa lỗi cho EF 6.0.1 và 6
1.3 TỔNG QUAN VỀ API RESTFUL 2 [4]
Các khái niệm về API Restful
API (giao diện lập trình ứng dụng) là bộ quy tắc và cơ chế cho phép các ứng dụng hoặc thành phần tương tác với nhau một cách hiệu quả API thường trả về dữ liệu dưới các định dạng phổ biến như JSON hoặc XML, giúp tích hợp dễ dàng vào ứng dụng của bạn Các nền tảng lớn như Facebook và Google cung cấp các API riêng biệt, cho phép người dùng truy xuất thông tin về người dùng, repository và nhiều dữ liệu hữu ích khác để phát triển các ứng dụng tiện ích hơn.
REST là viết tắt của "Representational State Transfer," là một phương pháp kiến trúc để xây dựng API chứ không phải là một chuẩn hay giao thức cụ thể Web service dựa trên kiến trúc REST gọi là RESTful webservice, sử dụng các phương thức HTTP để thực thi các định nghĩa của REST Các ứng dụng theo thiết kế REST được gọi là RESTful, mặc dù trong thực tế, thuật ngữ REST thường được sử dụng thay cho RESTful và ngược lại, nhằm mục đích trao đổi dữ liệu hiệu quả giữa các hệ thống.
API RESTful, còn gọi là dịch vụ web RESTful, dựa trên kiến trúc chuyển giao trạng thái đại diện (REST), là phương pháp phổ biến trong phát triển dịch vụ web Nó sử dụng các nguyên tắc truyền thông chuẩn để xây dựng các ứng dụng linh hoạt, dễ mở rộng và dễ bảo trì API RESTful giúp các hệ thống giao tiếp hiệu quả qua các phương thức HTTP như GET, POST, PUT, DELETE, phù hợp với yêu cầu của các ứng dụng hiện đại.
Công nghệ REST thường được ưa chuộng hơn so với SOAP bởi vì REST tận dụng băng thông ít hơn, phù hợp hơn để sử dụng trên Internet API cho trang web là mã cho phép hai phần mềm giao tiếp với nhau một cách hiệu quả API giúp hướng dẫn các nhà phát triển viết chương trình yêu cầu dịch vụ từ hệ điều hành hoặc các ứng dụng khác một cách chính xác và dễ dàng hơn.
REST là ngôn ngữ của internet được trình duyệt sử dụng để truy cập và tương tác Với sự phát triển của điện toán đám mây, các API REST ngày càng phổ biến để tiết lộ dịch vụ web một cách hiệu quả API RESTful là lựa chọn hàng đầu cho phép người dùng dễ dàng kết nối và tương tác với các dịch vụ đám mây, được các công ty lớn như Amazon, Google, LinkedIn và Twitter sử dụng rộng rãi.
Khác biệt giữa REST và SOAP:
SOAP là giao thức truy cập Webservice dựa trên tiêu chuẩn đã xuất hiện từ lâu, mang lại nhiều lợi ích khi sử dụng lâu dài Được phát triển đầu tiên bởi Microsoft, SOAP không đơn giản như tên gọi của nó, mà còn cung cấp các tính năng mạnh mẽ để tích hợp hệ thống hiệu quả.
SOAP chắc chắn là lựa chọn nặng ký để truy cập Web service Nó cung cấp những ưu điểm sau đây khi so sánh với REST:
- Ngôn ngữ, nền tảng và phương tiện độc lập (REST yêu cầu sử dụng HTTP)
- Hoạt động tốt trong môi trường doanh nghiệp (REST giao tiếp thẳng trực tiếp)
- Cung cấp khả năng mở rộng đáng kể trước khi xây dựng dưới dạng các tiêu chuẩn
- Tích hợp xử lý lỗi
- Tự động hóa khi sử dụng với một số sản phẩm ngôn ngữ
Bên cạnh đó, REST dễ sử dụng hơn và linh hoạt hơn Nó có những lợi thế sau khi so sánh với SOAP:
- Không có tools đắt tiền nào yêu cầu tương tác với Web service
- Hiệu quả (SOAP sử dụng XML cho tất cả các truyền tin, REST có thể sử dụng định dạng truyền tin ngắn gọn hơn)
- Nhanh (không yêu cầu xử lý rộng rãi), gần gũi hơn với các công nghệ Web khác trong triết lý design
RESTful API là tiêu chuẩn thiết kế API phổ biến nhất hiện nay, giúp quản lý các resource trên các ứng dụng web Nó quy định cách sử dụng các phương thức HTTP như GET, POST, PUT, DELETE để truy cập và thao tác dữ liệu RESTful không giới hạn ngôn ngữ lập trình của ứng dụng và không quy định logic code, mang lại tính linh hoạt cao cho phát triển phần mềm.
PHÂN TÍCH HỆ THỐNG ỨNG DỤNG
Yêu cầu chức năng
Yêu cầu chức năng nghiệp vụ:
- Lưu trữ: Hệ thống lưu trữ thông tin về
+ Thông tin sách eBook, khóa luận, tiểu luận
+ Thông tin Sinh viên, Giảng viên, Admin
+ Thông tin tác giả, lượt xem, lượt tải và thông tin về thời gian xem sách của sinh viên
+ Tra cứu thông tin về sách, tài liệu
+ Tra cứu thông tin User
+ Tra cứu thông tin môn học
+ Tổng lượt xem và tải tài liệu, sách
+ Trung bình lượt đánh giá tài liệu, sách
Yêu cầu chức năng hệ thống:
Bảng 2 1: Yêu cầu chức năng hệ thống
STT Tên chức năng Mô tả Ghi chú
1 Môi trường Ứng dụng Website trên nền tảng ASP.NET MVC
2 Phân quyền Mỗi người dùng tùy vào quyền người dùng sẽ có những chức năng tương ứng:
- Sinh viên: Đăng nhập, xem, tải, đánh giá sách và xem lại thời gian xem sách và tài liệu của mình
- Giảng viên: Đăng nhập, quản lý sinh viên, quản lý upload sách và tài liệu
- Admin: Quản lý user, môn học.
Yêu cầu phi chức năng
+ Ứng dụng dễ chỉnh sửa và nâng cấp cho phù hợp với nhu cầu quản lý của admin về sau
+ Thân thiện với người sử dụng
+ Dễ dàng thao tác tìm kiếm, quản lý
+ Giao diện dễ nhìn không phức tạp
+ Cơ sở dữ liệu được lưu trữ an toàn và dễ dàng truy xuất
+ Phần mềm hoạt động ổn định, tốc độ truy cập và xử lý nhanh
+ Các thiết kế và chức năng của phần mềm có thể được sử dụng lại cho những lần phát triển sau này
+ Các đoạn mã có thể được sử dụng nhiều lần và áp dụng được cho nhiều chương trình khác nhau mà không cần phải thay đổi code quá nhiều
2.3 PHÂN TÍCH MÔ HÌNH HÓA YÊU CẦU
Nhận diện tác nhân và chức năng trong sơ đồ Use case
Bảng 2 2: Nhận diện tác nhân
- Xem sách và các tài liệu khóa luận, tiểu luận
- Đánh giá sách và tài liệu
- Quản lý upload tài liệu, sách
- Xem thời gian đọc tài liệu online của sinh viên
- Quản lý Sinh viên và Giảng viên
Mô tả chi tiết từng chức năng và từng tác nhân
Bảng 2 3: Mô tả tác nhân
Tên tác nhân Công việc/vai trò
Admin - Đăng nhập hệ thống
- Xem danh sách User (Giảng viên, Sinh viên)
Bảng 2 4 Mô tả tác chức năng
- Sửa thông tin môn học
- Xem thời gian đọc của User
- Sửa thông tin sách, tài liệu upload của Giảng viên đó
- Xóa sách, tài liệu upload của Giảng viên đó
- Xem thời gian đọc tài liệu của sinh viên
- Đăng nhập vào hệ thống
- Xem lại thời gian đã xem sách của mình
- Thay đổi thông tin cá nhân
- Sửa mật khẩu đăng nhập
STT Chức năng Mô tả
1 Đăng nhập Cho phép Admin, Giảng viên và Sinh viên đăng nhập vào hệ thống
Admin dùng chức năng để kiểm tra thông tin User, thông tin xem bao gồm: email, quyền, họ tên, mã số sinh viên, mã lớp
Khi có user mới (Sinh viên hoặc Giảng viên) thì Admin có thể tạo thêm user mới với các quyền tương ứng với user đó
4 Sửa thông tin User Admin sửa thông tin user, thông tin sửa bao gồm: email, quyền, họ tên, mã số sinh viên, mã lớp
5 Xóa User Khi user đó không còn hoạt động trên hệ thống nữa,
Admin có thể xóa user đó khỏi hệ thống
6 Thêm môn học Admin có thể thêm môn học mới khi khoa có thêm môn bổ xung
7 Sửa môn học Admin sửa thông tin môn học, thông tin sửa bao gồm: mã môn, tên môn
8 Xóa môn học Khi môn học đó không còn hoạt động trên hệ thống nữa, Admin có thể xóa môn học đó khỏi hệ thống
Admin hoặc giảng viên có thể tải lên sách và tài liệu mới trên hệ thống, bao gồm các thông tin quan trọng như mã sách, tiêu đề, tác giả, mô tả, niên khóa, tên file và tên môn học Việc cập nhật tài nguyên học tập dễ dàng giúp nâng cao chất lượng giảng dạy và học tập hiệu quả hơn Hệ thống cho phép quản lý dễ dàng các tài liệu, đảm bảo thông tin luôn chính xác và thuận tiện truy xuất cho người dùng.
Admin hoặc giảng viên có thể chỉnh sửa thông tin sách và tài liệu để phù hợp, bao gồm các yếu tố như mã sách, tiêu đề, tác giả, mô tả, niên khóa, tên file và tên môn học Việc cập nhật thông tin giúp quản lý tài nguyên học tập hiệu quả hơn và đảm bảo tính chính xác của dữ liệu Thông qua việc sửa đổi các thông tin này, người dùng có thể dễ dàng tìm kiếm và truy cập tài liệu phù hợp với môn học hoặc chương trình đào tạo.
11 Xóa tài liệu Upload Admin hoặc Giảng viên có thể xóa các tài liệu mình upload lên hệ thống khi cần thiết
12 Xem đánh giá Admin, Giảng viên hoặc Sinh viên có thể xem lại các đánh giá và người đánh giá sách và tài liệu
13 Xem thời gian đọc sách, tài liệu của User
Admin và giảng viên có thể xem lại danh sách thời gian sinh viên đã đọc sách, giúp quản lý hiệu quả hoạt động học tập Sinh viên cũng có thể kiểm tra lại thời gian đọc sách của chính mình, từ đó nâng cao hiệu suất học tập Việc theo dõi thời gian đọc sách giúp tối ưu hóa quá trình học và dễ dàng đánh giá tiến bộ của từng sinh viên.
14 Thay đổi mật khẩu đăng nhập
Người dùng có thể sửa mật khẩu đăng nhập của mình trên hệ thống
Lược đồ Use case
Các lược đồ Use case
Hình 2 1: Lược đồ Use case chung của hệ thống uc uc_chung
Quan ly thong tin ca nhan
Quan ly upload tai lieu
Thay doi thong tin tai khoan
Hình 2 2: Lược đồ Use case Quản lý thông tin cá nhân
Hình 2 3: Lược đồ Use case Quản lý upload tài liệu uc Quanlythongtincanhan
Quan ly thong tin ca nhan
Xem thong tin ca nhan
Chinh sua thong tin ca nhan ôextendằ ôextendằ uc Quanlyuploadtailieu
Quan ly upload tai lieu
Chinh sua thong tin upload
Tra cuu tai lieu upload
Upload tai lieu ôextendằ ôextendằ ôextendằ ôextendằ ôextendằ
Hình 2 4: Lược đồ Use case Quản lý người dùng
Hình 2 5: Lược đồ Use case Thay đổi thông tin tài khoản uc Quanlynguoidung
Xem danh sach nguoi dung
Chinh sua thong tin nguoi dung
Xoa nguoi dung ôextendằ ôextendằ ôextendằ ôextendằ uc Thaydoithongtintaikhoan
Thay doi thong tin tai khoan
Hình 2 6: Lược đồ Use case Quản lý môn học
Hình 2 7: Lược đồ Use case Đánh giá tài liệu
Hình 2 8: Lược đồ Use case Xem/Tải tài liệu uc Quanlymonhoc
Xem danh sach mon hoc
Xoa mon hoc ôextendằ ôextendằ ôextendằ ôextendằ uc Danhgiatailieu
Danh gia tai lieu Gui danh gia ôextendằ uc Xem/Tai tai lieu
Tai tai lieu ôextendằ ôextendằ
Bảng 2 5: Đặt tả Use case Đăng nhập/Đăng xuất
Use Case Đăng nhập/Đăng xuất
Mô tả Cho phép Admin, Giảng viên và Sinh viên đăng nhập vào hệ thống
Tác nhân kích hoạt Admin, Giảng viên và Sinh viên
Tiền điều kiện Có tài khoản và mật khẩu đăng nhập
Các bước thực hiện (1) Truy cập vào trang đăng nhập
(3) Nhấn nút “Đăng Nhập” hoặc nhấn Enter
(4) Nếu đăng nhập thất bại, thông báo “Nhập sai tên tài khoản hoặc mật khẩu” Người dùng nhập lại thông tin và đăng nhập lại lần nữa
(5) Nếu đăng nhập thành công Xuất hiện giao diện chương trình với đầy đủ chức năng của mỗi đối tượng
(6) Nếu người dùng muốn thoát khỏi tài khoản thì nhấn nút
Bảng 2 6: Đặt tả Use case Xem thông tin cá nhân
Use Case Xem thông tin cá nhân
Mô tả Cho phép Sinh viên, Giảng viên, Admin xem thông tin cá nhân của mình
Tác nhân kích hoạt Sinh viên, Giảng viên, Admin
Tiền điều kiện Đã đăng nhập thành công vào hệ thống
Các bước thực hiện (1) Tại màn hình chính của Sinh viên, Giảng viên, Admin chọn vào thông tin cá nhân
(2) Nhấn nút “Thông tin cá nhân”
(3) Màn hình sẽ hiển thị thông tin cá nhân mà người dùng đã cung cấp
Bảng 2 7: Đặt tả Use case Chỉnh sửa thông tin cá nhân
Use Case Chỉnh sửa thông tin cá nhân
Mô tả Cho phép sinh viên, giảng viên, quản trị viên chỉnh sửa thông tin cá nhân của mình
Tác nhân kích hoạt Sinh viên, Giảng viên, quản trị viên
Tiền điều kiện Đã đăng nhập thành công vào hệ thống
Các bước thực hiện (1) Tại màn hình chính của sinh viên, giảng viên, quản trị viên
Chọn vào biểu tượng “Thông tin cá nhân”
(2) Nhấn vào nút “Thông tin cá nhân”
(3) Màn hình sẽ hiển thị thông tin cá nhân mà người dùng đã cung cấp
(4) Người dùng tùy ý thay đổi thông tin cá nhân Sau đó, nhấn nút “Cập nhật” để hoàn tất chỉnh sửa hoặc nhấn nút “Hủy” để hủy thao tác
Bảng 2 8: Đặt tả Use case Đổi mật khẩu
Use Case Đổi mật khẩu
Mô tả Cho phép sinh viên, giảng viên, quản trị viên cập nhật mật khẩu mới
Tác nhân kích hoạt Sinh viên, giảng viên, quản trị viên
Tiền điều kiện Đã đăng nhập thành công vào hệ thống
Các bước thực hiện (1) Tại màn hình chính của Sinh viên, Giảng viên, Quản trị viên
Chọn biểu tượng thông tin của mình
(2) Nhấn vào nút “Thay đổi mật khẩu”
(3) Màn hình sẽ hiện thị hộp thông tin, yêu cầu người dùng nhập mật khẩu cũ và mật khẩu mới
(4) Bấm nút “Lưu” để kết thúc và “Đóng” để đóng màn hình
Bảng 2 9: Đặt tả Use case Thêm User
Mô tả Cho phép Admin thêm User mới
Tác nhân kích hoạt Admin
Tiền điều kiện Khi có thêm user mới
Các bước thực hiện (1) Đăng nhập vào hệ thống với tài khoản có quyền hạn trên
(2) Vào danh mục “Quản lý User”
(4) Điền mọi thông tin đầy đủ của User
(5) Bấm nút “Lưu” để kết thúc và nhấn “Đóng” để đóng màn hình
Bảng 2 10: Đặt tả Use case Sửa thông tin User
Use Case Sửa thông tin User
Mô tả Admin sửa thông tin User đã có trên hệ thống lại cho chính xác
Tác nhân kích hoạt Admin
Tiền điều kiện User đã có thông tin trên hệ thống
Các bước thực hiện (1) Đăng nhập vào hệ thống với tài khoản có quyền hạn trên
(2) Vào danh mục “Quản lý User”
(3) Click vào Tra cứu thông tin User
(4) Nhập mã hoặc tên User rồi bấm Enter
(5) Nếu User tồn tại sẽ đưa ra toàn bộ thông tin User cần tra
(6) Click vào Sửa thông tin User
(7) Điền mọi thông tin đầy đủ của User cần chỉnh sửa (không thể sửa các thuộc tính khóa)
(8) Bấm nút “Lưu” để kết thúc
Bảng 2 11 Đặt tả Use Case Xóa User
Mô tả Cho phép Admin xóa User
Tác nhân kích hoạt Admin
Tiền điều kiện User đó không còn hoạt động trên hệ thống
Các bước thực hiện (1) Đăng nhập vào hệ thống với tài khoản có quyền hạn trên
(2) Vào danh mục “Quản lý User”
(3) Click vào Tra cứu thông tin User
(4) Nhập mã hoặc tên User rồi bấm Enter
(5) Nếu User tồn tại sẽ đưa ra toàn bộ thông tin User cần tra
(7) Màn hình sẽ hiện thị hộp thông báo hỏi lại “Bạn có chắc chắn muốn xóa hay không?”
(8) Nhấn nút “Xóa” để xóa hoặc nhấn “Đóng” để hủy thao tác
Bảng 2 12: Đặt tả Use case Thêm môn học
Use Case Thêm môn học
Mô tả Cho phép Admin thêm môn học mới
Tác nhân kích hoạt Admin
Tiền điều kiện Đã có thông tin về môn học mới
Các bước thực hiện (1) Đăng nhập vào hệ thống với tài khoản có quyền hạn trên
(2) Vào danh mục “Quản lý môn học”
(3) Click vào Thêm môn học
(4) Điền mọi thông tin đầy đủ của môn học
(5) Bấm nút “Lưu” để kết thúc
Bảng 2 13: Đặt tả Use case Sửa thông tin môn học
Use Case Sửa thông tin môn học
Mô tả Cho phép giảng viên và quản trị viên sửa thông tin môn học đã có trên hệ thống lại cho chính xác
Tác nhân kích hoạt Giảng viên và quản trị viên
Tiền điều kiện Môn học đã có thông tin trên hệ thống
Các bước thực hiện (1) Đăng nhập vào hệ thống với tài khoản có quyền hạn trên
(2) Vào danh mục “Quản lý môn học”
(3) Click vào Tra cứu thông tin môn học
(4) Nhập mã hoặc tên môn học rồi bấm Enter
(5) Nếu môn học tồn tại sẽ đưa ra toàn bộ thông tin môn học cần tra
(6) Click vào Sửa thông tin môn học
(7) Điền mọi thông tin đầy đủ của môn học cần chỉnh sửa (không thể sửa các thuộc tính khóa)
(8) Bấm nút “Lưu” để kết thúc hoặc bấm “Đóng” để hủy thao tác
Bảng 2 14: Đặt tả Use case Xóa môn học
Use Case Xóa Môn học
Mô tả Cho phép Admin xóa Môn học
Tác nhân kích hoạt Admin
Tiền điều kiện Môn học đó không còn hoạt động trên hệ thống
Các bước thực hiện (1) Đăng nhập vào hệ thống với tài khoản có quyền hạn trên
(2) Vào danh mục “Quản lý Môn học”
(3) Click vào Tra cứu thông tin môn học
(4) Nhập mã hoặc tên Môn học rồi bấm Enter
(5) Nếu môn học tồn tại sẽ đưa ra toàn bộ thông tin môn học cần tra
(6) Click vào “Xóa” môn học
(7) Màn hình sẽ hiện thị hộp thông báo hỏi lại “Bạn có chắc chắn muốn xóa hay không?”
(8) Nhấn nút “Xóa” để xóa hoặc nhấn “Đóng” để hủy thao tác
Bảng 2 15: Đặt tả Use case Upload tài liệu
Use Case Upload tài liệu
Mô tả Cho phép giảng viên và quản trị viên thêm môn học mới
Tác nhân kích hoạt Giảng viên hoặc quản trị viên
Tiền điều kiện Đã có thông tin về tài liệu sắp upload
Các bước thực hiện (1) Đăng nhập vào hệ thống với tài khoản có quyền hạn trên
(2) Tại màn hình chính của giảng viên và quản trị viên ta chọn xem tài liệu theo môn học hoặc vào trang “Quản lý upload”
(3) Click vào biểu tượng “Add”
(4) Điền mọi thông tin đầy đủ của tài liệu upload
(5) Bấm nút “Lưu” để kết thúc hoặc bấm “Đóng” để hủy thao tác
Bảng 2 16: Đặt tả Use case Sửa thông tin tài liệu upload
Use Case Sửa thông tin tài liệu upload
Mô tả Giảng viên và quản trị viên có thể sửa thông tin tài liệu upload đã có trên hệ thống lại cho chính xác
Tác nhân kích hoạt Quản trị viên và giảng viên
Tiền điều kiện Tài liệu đã có thông tin trên hệ thống
Các bước thực hiện (1) Đăng nhập vào hệ thống với tài khoản có quyền hạn trên
(2) Vào danh mục “Quản lý upload”
(3) Click vào Tra cứu thông tin tài liệu upload
(4) Nhập mã hoặc tên tài liệu rồi bấm Enter
(5) Nếu câu tài liệu tại sẽ đưa ra toàn bộ thông tin tài liệu cần tra
(6) Click vào Sửa thông tin tài liệu
(7) Điền mọi thông tin đầy đủ của tài liệu cần chỉnh sửa (không thể sửa các thuộc tính khóa)
(8) Bấm nút “Lưu” để kết thúc hoặc bấm “Đóng” để hủy thao tác
Bảng 2 17: Đặt tả Use case Xóa tài liệu upload
Use Case Xóa tài liệu upload
Mô tả Cho phép Giảng viên và quản trị viên xóa tài liệu upload
Tác nhân kích hoạt Quản trị viên và Giảng viên
Tiền điều kiện Tài liệu không cần thiết nữa
Các bước thực hiện (1) Đăng nhập vào hệ thống với tài khoản có quyền hạn trên
(2) Vào danh mục “Quản lý Upload”
(3) Click vào Tra cứu thông tin tài liệu upload
(4) Nhập mã hoặc tên tài liệu rồi bấm Enter
(5) Nếu tài liệu tồn tại sẽ đưa ra toàn bộ thông tin tài liệu cần tra
(6) Click vào “Xóa” tài liệu
(7) Màn hình sẽ hiện thị hộp thông báo hỏi lại “Bạn có chắc chắn muốn xóa hay không?”
(8) Nhấn nút “Xóa” để xóa hoặc nhấn “Đóng” để hủy thao tác
Bảng 2 18: Xem thời gian xem tài liệu của Sinh viên
Use Case Xem thời gian xem tài liệu của Sinh viên
Mô tả Cho phép Giảng viên và quản trị viên xem lịch sử xem tài liệu của sinh viên
Tác nhân kích hoạt Quản trị viên và Giảng viên
Tiền điều kiện Sinh viên đã xem tài liệu
Các bước thực hiện (1) Đăng nhập vào hệ thống với tài khoản có quyền hạn trên
(2) Vào danh mục “Quản lý Time”
(3) Click vào Tra cứu thông tin sinh viên
(4) Nhập tên sách hoặc tên sinh viên rồi bấm Enter
(5) Nếu thông tin tồn tại sẽ đưa ra toàn bộ thông tin tài liệu cần tra.
Các lược đồ hoạt động cho từng Use case
Hình 2 9: Lược đồ hoạt động Use case Đăng nhập
Hình 2 10: Lược đồ hoạt động Use case Đánh giá tài liệu
Hình 2 11: Lược đồ hoạt động Use case Quản lý bộ môn act Activ ity Dang Nhap
Dang nhap v oi Email v à passw ord
Kiem tra thong tin Khong hop le act Activ ity Danhgiatailieu
Truy cap man hinh chi tiet tai lieu
Ket thuc act Activ ity Quanlybomon
Truy cap trang quan ly mon hoc
Xem thong tin mon hoc
Hình 2 12: Lược đồ hoạt động Use case Quản lý người dùng
Hình 2 13: Lược đồ hoạt động Use case Quản lý thông tin cá nhân act Activ ity Quanlynguoidung
Truy cap trang quan ly nguoi dung
Xem thong tin nguoi dung
Sua thong tin nguoi dung
Ket thuc act Activ ity Quanlythongtincanhan
Truy cap man hinh thong tin ca nhan
Xem thong tin ca nhan
Chinh sua thong tin ca nhan
Hình 2 14: Lược đồ hoạt động Use case Quản lý upload tài liệu
Hình 2 15: Lược đồ hoạt động Use case Thay đổi thông tin tài khoản
THIẾT KẾ VÀ XÂY DỰNG ỨNG DỤNG
Các bảng cơ sở dữ liệu
Bảng 3 1: Các bảng cơ sở dữ liệu
STT Tên bảng Mô tả
1 Users Danh sách người dùng
2 Ebook Danh sách tài liệu eBook
3 Essay Danh sách các tài liệu tiểu luận
4 Thesis Danh sách các tài liệu khóa luận
5 RateStar Danh sách đánh giá
6 Role Danh sách quyền người dùng
7 SearchFile Danh sách tài liệu cho tìm kiếm
8 Subject_Ebook Danh sách môn học của tài liệu eBook
9 Subject_Essay Danh sách môn học của tài liệu tiểu luận
10 Subject_Thesis Danh sách môn học của tài liệu khóa luận
11 Time Thời gian xem tài liệu của người dùng
12 SlideImage Slide giới thiệu các thông tin nổi bật
Mô tả chi tiết các bảng cơ sở dữ liệu
Bảng 3 2: Mô tả chi tiết bảng Users
STT Thuộc tính Kiểu dữ liệu Miền giá trị Ý nghĩa Ghi chú
2 username nvarchar(50) Tài khoản đăng nhập
4 role_id int Khóa ngoại
5 fullname nvarchar(50) Tên người dùng
6 stu_id nvarchar(10) Mã số sinh viên
7 class_id nvarchar(10) Khóa ngoại
8 image nvarchar(Max) Hình đại diện
8 resetPasswordCode nvarchar(100) Đổi mật khẩu
Bảng 3 3: Mô tả chi tiết bảng Ebook STT Thuộc tính Kiểu dữ liệu Miền giá trị Ý nghĩa Ghi chú
1 id int Khóa chính Id
2 ebook_id nvarchar(10) Mã sách
3 title nvarchar(Max) Tiêu đề sách
4 author nvarchar(Max) Tác giả
5 year nvarchar(10) Năm xuất bản
6 describe nvarchar(Max) Mô tả tài liệu
7 filename nvarchar(Max) Tên file đính kèm
8 date_upload datetime Ngày upload
9 user_id int Khóa ngoại Mã người dùng
10 sub_id int Khóa ngoại Mã môn
Bảng 3 4: Mô tả chi tiết bảng Essay STT Thuộc tính Kiểu dữ liệu Miền giá trị Ý nghĩa Ghi chú
1 id int Khóa chính Id
2 essay_id nvarchar(10) Mã tiểu luận
3 title nvarchar(Max) Tiêu đề tiểu luận
4 instructor nvarchar(Max) Tác giả
5 executor1 nvarchar(50) Người thực hiện 1
6 executor2 nvarchar(50) Người thực hiện 2
7 describe nvarchar(Max) Mô tả tài liệu
8 filename nvarchar(Max) Tên file đính kèm
9 date_upload datetime Ngày upload
10 user_id int Khóa ngoại Mã người dùng
11 sub_id int Khóa ngoại Mã môn
Bảng 3 5: Mô tả chi tiết bảng Thesis STT Thuộc tính Kiểu dữ liệu Miền giá trị Ý nghĩa Ghi chú
1 id int Khóa chính Id
2 thesis_id nvarchar(10) Mã khóa luận
3 title nvarchar(Max) Tiêu đề tiểu luận
4 instructor nvarchar(Max) Tác giả
5 executor1 nvarchar(50) Người thực hiện 1
6 executor2 nvarchar(50) Người thực hiện 2
7 describe nvarchar(Max) Mô tả tài liệu
8 filename nvarchar(Max) Tên file đính kèm
9 date_upload datetime Ngày upload
10 user_id int Khóa ngoại Mã người dùng
11 sub_id int Khóa ngoại Mã môn
Bảng 3 6: Mô tả chi tiết bảng RateStar STT Thuộc tính Kiểu dữ liệu Miền giá trị Ý nghĩa Ghi chú
1 id int Khóa chính Id
2 book_id nvarchar(10) Mã sách
4 user_id int Khóa ngoại Mã người dùng
5 rate int Lượt đánh giá
Bảng 3 7: Mô tả chi tiết bảng Role STT Thuộc tính Kiểu dữ liệu Miền giá trị Ý nghĩa Ghi chú
1 id int Khóa chính Id
3 describe nvarchar(MAX) Mô tả
Bảng 3 8: Mô tả chi tiết bảng SearchFile STT Thuộc tính Kiểu dữ liệu Miền giá trị Ý nghĩa Ghi chú
1 id int Khóa chính Id
2 book_id nvarchar(10) Mã tài liệu
3 title nvarchar(Max) Tiêu đề
4 author nvarchar(Max) Tác giả
6 instructor nvarchar(Max) Người hướng dẫn
7 executor1 nvarchar(50) Người thực hiện 1
8 executor2 nvarchar(50) Người thực hiện 2
9 describe nvarchar(Max) Mô tả tài liệu
10 filename Nvarchar(Max) Tên file đính kèm
9 date_upload datetime Ngày upload
10 user_id int Khóa ngoại Mã người dùng
11 sub_id int Khóa ngoại Mã môn
13 type nchar(10) Loại tài liệu
Bảng 3 9: Mô tả chi tiết bảng Subject_Ebook STT Thuộc tính Kiểu dữ liệu Miền giá trị Ý nghĩa Ghi chú
1 id int Khóa chính Id
2 subebook_id nvarchar(MAX) Mã môn ebook
3 name nvarchar(MAX) Tên môn
Bảng 3 10: Mô tả chi tiết bảng Subject_Essay STT Thuộc tính Kiểu dữ liệu Miền giá trị Ý nghĩa Ghi chú
1 id int Khóa chính Id
2 subessay_id nvarchar(MAX) Mã môn tiểu luận
3 name nvarchar(MAX) Tên môn
Bảng 3 11: Mô tả chi tiết bảng Subject_Thesis STT Thuộc tính Kiểu dữ liệu Miền giá trị Ý nghĩa Ghi chú
1 id int Khóa chính Id
2 subthesis_id nvarchar(MAX) Mã môn khóa luận
3 name nvarchar(MAX) Tên môn
Bảng 3 12: Mô tả chi tiết bảng SlideImage STT Thuộc tính Kiểu dữ liệu Miền giá trị Ý nghĩa Ghi chú
1 id int Khóa chính Id
2 title nvarchar(MAX) Tiêu đề ảnh
3 link nvarchar(MAX) Link liên kết
4 image nvarchar(MAX) Ảnh đại diện
5 sortid int Số ưu tiên slide
Sơ đồ quan hệ
Sơ đồ quan hệ chung của hệ thống:
Hình 3 1: Sơ đồ quan hệ chung của hệ thống
Ebook id ebook_id title author year describe filename date_upload user_id sub_id countView countDowload
Essay id essay_id title instructor executor1 executor2 describe filename date_upload user_id sub_id course countView countDowload
RateStar id book_id usename user_id rate sub_id
SearchFile id book_id title author year instructor executor1 executor2 describe filename date_upload user_id sub_id username type
SlideImage id title link image sortid
Subject_Ebook id subebook_id name
Subject_Essay id subessay_id name
Subject_Thesis id subthesis_id name
Thesis id thesis_id title instructor executor1 executor2 describe filename date_upload user_id sub_id cource countView countDowload
Time id userid bookid bookname time date sub_id
Users id username password role_id fullname mssv class_id image resetPasswordCode
3.2 XÂY DỰNG SƠ ĐỒ LỚP CHO ỨNG DỤNG
Hình 3 2: Sơ đồ lớp Controller class Controllers
+ Details(string): ActionResult + DetailsEssay(string): ActionResult + DetailsThesis(string): ActionResult
+ DeleteFileById(Subject_Ebook): string + DeleteFileUploadById(int): string + DeleteSubjectById(Subject_Ebook): string + EditFileById(): string
+ EditSubjectById(Subject_Ebook): SubjectCreationResult + GetFile(): object
+ CreateSubject(SubjectViewModel): string + DeleteSubjectById(Subject_Ebook): string + GetEbook(int): IEnumerable
+ GetFileById(int): Ebook + GetSubjectEbook(): IEnumerable
- RandomString(int, bool): string + UploadFiles(): string
+ Details(int?): ActionResult + Index(): ActionResult + ManageUploadEbook(): ActionResult + Student(): ActionResult
+ Index(): ActionResult + Manage(int ?): ActionResult + ManageEssay(int?): ActionResult + ManageThesis(int?): ActionResult
+ Essay(string): ActionResult + Index(string): ActionResult + Thesis(string): ActionResult
+ Index(): ActionResult + Readed(int?): ActionResult
Hình 3 3: Sơ đồ lớp API Controller class API
+ GetEbook_Lecturer(int): object + GetEssay_Lecturer(int): object + GetThesis_Lecturer(int): object
+ ConvertToUnSign(string): string + Search(string): IHttpActionResult
+ BookId(): string+ SubId(): int+ Time(): string+ UserId(): int
Hình 3 4: Sơ đồ lớp Model 3.3 THIẾT KẾ GIAO DIỆN ỨNG DỤNG
Sơ đồ luân chuyển màn hình
+ date_upload(): Nullable
+ course(): string + date_upload(): Nullable
+ describe(): string + essay_id(): string + executor1(): string + executor2(): string + filename(): string + id(): int + instructor(): string + sub_id(): Nullable
+ Subject_Essay(): Subject_Essay + title(): string
+ User(): User + user_id(): Nullable
The article details a comprehensive data structure for managing course-related information, including attributes like Course(), Date_Upload(), and Describe() to capture essential details about each course It also covers identifiers such as Essay_Id(), Id(), and Sub_Id(), along with metadata like FileName(), Title(), and User_Id() to facilitate tracking and organization Additionally, the structure includes fields for personnel and communication, such as Executor1(), Executor2(), Instructor(), and Message(), ensuring clear assignment and messaging capabilities The inclusion of User_Name(), Sub_Name(), and Date_Upload() helps enhance user engagement and content relevance, aligning with SEO best practices for improved visibility and accessibility.
+ class_id(): string + fullname(): string + id(): int + image(): string + mssv(): string + password(): string + role_id(): Nullable
The OnModelCreating method in DbModelBuilder facilitates the configuration of entity mappings and database schemas It includes various stored procedures such as sp_alterdiagram, sp_creatediagram, and sp_dropdiagram, which are used to modify, create, and delete diagrams within the database These procedures, including sp_alterdiagram1, sp_alterdiagram2, sp_creatediagram1, and sp_creatediagram2, provide enhanced functionality for managing database diagrams with optional parameters like diagram names, IDs, and byte arrays for diagram data Utilizing these stored procedures ensures precise control over database schema design and management within Entity Framework.
The provided methods facilitate diagram management and retrieval within a database environment Functions like sp_dropdiagram1 and sp_dropdiagram2 are used to delete diagrams specified by a string identifier and an optional integer parameter for additional options Conversely, sp_helpdiagramdefinition, along with its variants sp_helpdiagramdefinition1 and sp_helpdiagramdefinition2, allows users to retrieve detailed information about specific diagrams based on identifiers and optional parameters Additionally, sp_helpdiagrams enables listing all diagrams associated with a given parameter, providing comprehensive insight into diagram structures and properties within the database These stored procedures streamline diagram handling, making it easier to manage and query diagram metadata efficiently.
+ sp_helpdiagrams1(string, Nullable): ObjectResult
+ sp_helpdiagrams2(string, Nullable): ObjectResult
+ sp_renamediagram(string, Nullable, string): int + sp_renamediagram1(string, Nullable, string): int + sp_renamediagram2(string, Nullable, string): int + sp_upgraddiagrams(): int
+ sp_upgraddiagrams1(): int + sp_upgraddiagrams2(): int ôpropertyằ
+ Subject_Ebook(): DbSet
+ Subject_Essay(): DbSet
+ Subject_Thesis(): DbSet
+ book_id(): string + id(): int + rate(): int + sub_id(): Nullable
+ usename(): string + User(): User + user_id(): int
+ BookId(): string + Id(): int + Rate(): int + SubId(): int + UserId(): int + Username(): string
+ ConfirmPassword(): string + NewPassword(): string + ResetCode(): string
+ describe(): string + id(): int + name(): string + Users(): ICollection
+ date_upload(): Nullable
+ Id(): int + Message(): string + Name(): string + Subebook_Id(): string + Subessay_Id(): string + Subthesis_Id(): string
+ id(): int + name(): string + subebook_id(): string
+ id(): int + name(): string + subessay_id(): string
+ id(): int + name(): string + subthesis_id(): string + Theses(): ICollection sysdiagram ôpropertyằ
+ diagram_id(): int + name(): string + principal_id(): int + version(): Nullable
+ cource(): string + date_upload(): Nullable
+ describe(): string + executor1(): string + executor2(): string + filename(): string + id(): int + instructor(): string + sub_id(): Nullable
+ Subject_Thesis(): Subject_Thesis + thesis_id(): string + title(): string + User(): User + user_id(): Nullable
The article outlines various essential methods and properties related to a course management system It includes functions such as Course() for retrieving course names, Date_Upload() indicating upload timestamps, Describe() providing course descriptions, and Title() for the course titles Additionally, it references identifiers like Id(), Sub_Id(), and Thesis_Id(), along with user-related information such as User_Id() and User_Name() The system also tracks instructors through Instructor() and messages via Message(), while Executor1() and Executor2() specify responsible persons File management is handled with FileName(), and other properties include Sub_Name() These components collectively facilitate comprehensive course content management and tracking within the platform.
+ bookid(): string + bookname(): string + date(): Nullable
+ id(): int + sub_id(): Nullable
+ time1(): string + User(): User + userid(): Nullable
+ class_id(): string + Ebooks(): ICollection
+ fullname(): string + id(): int + image(): string + mssv(): string + password(): string + RateStars(): ICollection
+ resetPasswordCode(): string + Role(): Role + role_id(): int + Theses(): ICollection
+ Class_Id(): string + FullName(): string + Id(): int + Mssv(): string + PassWord(): string + Role_Id(): int + RoleName(): string + UserName(): string
Hình 3 5: Sơ đồ luân chuyển màn hình
Các màn hình giao diện
Ý nghĩa: Cho phép sinh viên, giảng viên và quản trị viên đăng nhập vào hệ thống
Hình 3 6: Màn hình đăng nhập
Các đối tượng trong màn hình:
Bảng 3 13: Bảng các đối tượng Màn hình đăng nhập
3 simpleButton Đăng nhập vào hệ thống
4 linkControl Mở cửa sổ quên mật khẩu để đặt lại mật khẩu
Chuyển đến màn hình sinh viên, giảng viên hoặc quản trị viên
Hình 3 7: Sơ đồ biến cố Màn hình đăng nhập
3.3.2.2 Màn hình quên mật khẩu
Ý nghĩa: Cho phép sinh viên, giảng viên và quản trị viên reset lại password
Hình 3 8: Màn hình quên mật khẩu Bảng 3 14: Bảng các đối tượng Màn hình quên mật khẩu
3 linkControl Trở về màn hình đăng nhập
3.3.2.3 Màn hình trang quản trị viên
Ý nghĩa: Màn hình làm việc chính của quản trị viên
Hình 3 10: Màn hình trang Admin
3.3.2.4 Màn hình đổi mật khẩu
Ý nghĩa: Cho phép sinh viên, giảng viên, quản trị viên đổi mật khẩu đăng nhập
Màn hình quên mật khẩu
Gửi mail xác nhận thông tin đổi mật khẩu
Hình 3 9: Sơ đồ biến cố Màn hình quên mật khẩu
Hình 3 11: Màn hình đổi mật khẩu
Các đối tượng trong màn hình:
Bảng 3 15: Bảng các đối tượng Màn hình đổi mật khẩu
1 textControl Nhập mật khẩu hiện tại của tài khoản
2 textControl Nhập mật khẩu mới
3 simpleButton Cập nhật mật khẩu mới
3.3.2.5 Màn hình thay đổi thông tin cá nhân
Màn hình thay đổi mật khẩu đăng nhập
Xác nhận cập nhật mật khẩu mới
Hủy cập nhật Click Đóng
Hình 3 12: Sơ đồ biến cố Màn hình thay đổi mật khẩu đăng nhập
Hình 3 13: Màn hình thay đổi thông tin cá nhân Bảng 3 16: Bảng các đối tượng Màn hình thay đổi thông tin cá nhân
2 textControl Hiển thị mật khẩu
3 textControl Hiển thị và cho phép chỉnh sửa họ tên
4 simpleButton Mở File Explorer để chọn ảnh đại diện
5 simpleButton Lưu thông tin cập nhật
6 simpleButton Hủy cập nhật và đóng màn hình
7 Image Hiển thị ảnh đại diện
3.3.2.6 Màn hình quản lý User
Ý nghĩa: Cho phép quản trị viên quản lý thông tin cá nhân của sinh viên và giảng viên
Hình 3 14: Màn hình quản lý User
Các đối tượng trong màn hình:
Bảng 3 17: Bảng các đối tượng Màn hình quản lý User
1 simpleButton Mở giao diện màn hình thêm người dùng mới
2 textControl Nhập thông tin mã người dùng, tên, email,
3 simpleButton Chọn file để thêm nhiều người dùng với file excel
4 simpleButton Thêm người dùng từ file đã chọn ở (3)
5 gridTable Danh sách người dùng hiện có của hệ thống hoặc kết quả trả về khi tìm kiếm
6 simpleButton Mở màn hình xem, sửa thông tin người dùng
7 simpleButton Xác nhận xóa thông tin người dùng
3.3.2.7 Màn hình quản lý Xem, thêm và chỉnh sửa thông tin người dùng của Quản trị viên
Ý nghĩa: Cho phép quản trị viên thêm, chỉnh sửa và xóa thông tin người dùng
Hình 3 16: Màn hình quản lý Xem, thêm và chỉnh sửa thông tin người dùng
Mở File Explorer cho phép chọn file
Xác nhận Import người dùng
Mở giao diện tiến hành thêm người dùng mới
Click Xóa Xác nhận xóa thông tin người dùng
Mở giao diện tiến hành xem và chỉnh sửa thông tin người dùng
Hình 3 15: Sơ đồ biến cố Màn hình quản lý người dùng
Các đối tượng trong màn hình:
Bảng 3 18: Bảng các đối tượng Màn hình chỉnh sửa thông tin người dùng
1 textControl Hiển thị thông tin và cho phép chỉnh sửa email người dùng
2 textControl Hiển thị thông tin và cho phép chỉnh sửa họ tên
3 combobox Hiển thị thông tin và cho phép chỉnh sửa quyền
4 textControl Hiển thị thông tin và cho phép chỉnh sửa password
5 textControl Hiển thị thông tin và cho phép chỉnh sửa mã số sinh viên
6 textControl Hiển thị thông tin và cho phép chỉnh sửa mã lớp
7 simpleButton Lưu thông tin cá nhân mới nếu có chỉnh sửa
3.3.2.8 Màn hình quản lý môn học
Ý nghĩa: Cho phép quản trị viên quản lý thông tin môn học
Màn hình thêm, xem, và chỉnh sửa người dùng
Xác nhận lưu thông tin mới nếu có chỉnh sửa
Xác nhận hủy thao tác
Hình 3 17: Sơ đồ biến cố Màn hình thêm, xem và chỉnh sửa người dùng
Hình 3 18: Màn hình quản lý môn học
Các đối tượng trong màn hình:
Bảng 3 19: Bảng các đối tượng Màn hình quản lý môn học
1 simpleButton Mở giao diện màn hình thêm môn học mới
2 textControl Nhập thông tin mã môn, hoặc tên môn
3 gridTable Danh sách môn học hiện có của hệ thống hoặc kết quả trả về khi tìm kiếm
4 simpleButton Mở màn hình xem, sửa thông tin môn học
5 simpleButton Xác nhận xóa thông tin môn học
Click Thêm Mở giao diện tiến hành thêm môn học mới
Click Xóa Xác nhận xóa thông tin môn học
Mở giao diện tiến hành xem và chỉnh sửa thông tin môn học
Hình 3 19: : Sơ đồ biến cố Màn hình quản lý môn học
3.3.2.9 Màn hình thêm, chỉnh sửa môn học
Ý nghĩa: Cho phép quản trị viên thêm, chỉnh sửa môn học
Hình 3 20: Màn hình chỉnh sửa môn học
Các đối tượng trong màn hình:
Bảng 3 20: Bảng các đối tượng Màn hình thêm, chỉnh sửa môn học
1 textControl Hiển thị thông tin và cho phép chỉnh sửa mã môn học
2 textControl Hiển thị thông tin và cho phép chỉnh sửa tên môn học
3 simpleButton Lưu thông tin môn học mới nếu có chỉnh sửa
Màn hình thêm, xem, và chỉnh sửa môn học
Xác nhận lưu thông tin mới nếu có chỉnh sửa
Xác nhận hủy thao tác
Hình 3 21: Sơ đồ biến cố Màn hình thêm, xem và chỉnh sửa môn học
3.3.2.10 Màn hình quản lý upload
Ý nghĩa: Cho phép quản trị viên, giảng viên quản lý upload tài liệu
Hình 3 22: Màn hình quản lý upload
Các đối tượng trong màn hình:
Bảng 3 21: Bảng các đối tượng Màn hình quản lý upload
1 simpleButton Mở giao diện màn hình thêm upload
2 textControl Nhập thông tin mã sách, hoặc tên sách,
3 gridTable Danh sách tài liệu hiện có của hệ thống hoặc kết quả trả về khi tìm kiếm
4 simpleButton Mở màn hình xem, sửa thông tin
5 simpleButton Xác nhận xóa thông tin
3.3.2.11 Màn hình Thêm, chỉnh sửa tài liệu upload
Ý nghĩa: Cho phép quản trị viên, giảng viên thêm, chỉnh sửa tài liệu upload
Hình 3 24: Màn hình thêm, chỉnh sửa tài liệu upload
Các đối tượng trong màn hình:
Click Thêm Mở giao diện tiến hành thêm upload mới
Click Xóa Xác nhận xóa thông tin tài liệu upload
Mở giao diện tiến hành xem và chỉnh sửa thông tin tài liệu upload Click Edit
Hình 3 23: Sơ đồ biến cố Màn hình quản lý upload
Bảng 3 22: Bảng các đối tượng Màn hình thêm, chỉnh sửa tài liệu upload
1 textControl Hiển thị thông tin và cho phép chỉnh sửa tiêu đề
2 textControl Hiển thị thông tin và cho phép chỉnh sửa năm xuất bản
3 textControl Hiển thị thông tin và cho phép chỉnh sửa quyền
4 combobox Hiển thị thông tin và cho phép chọn bộ môn
5 simpleButton Cho phép chọn tệp
6 textAreaControl Hiển thị thông tin và cho phép chỉnh sửa mô tả giới thiệu tài liệu
7 simpleButton Lưu thông tin cá nhân mới nếu có chỉnh sửa
Thêm, chỉnh sửa tài liệu upload
Click Chọn tệp Mở File Explorer cho phép chọn file pdf
Click Lưu Xác nhận Lưu thông tin tài liệu upload
Xác nhận hủy thao tác và đóng màn hình
Hình 3 25: Sơ đồ biến cố Màn hình thêm, chỉnh sửa tài liệu upload