Công cụ cần thiết
Trước khi bắt đầu sử dụng khung ABP, bạn cần cài đặt một số công cụ trên máy tính.
Môi trường phát triển
Bài viết này giả định bạn sử dụng Visual Studio 2022 (phiên bản 10.0 hỗ trợ .NET 6.0) hoặc cao hơn. Nếu bạn chưa cài đặt, phiên bản Community được cung cấp miễn phí tại https://visualstudio.microsoft.com. Tất nhiên, bạn cũng có thể sử dụng IDE hoặc trình soạn thảo ưa thích của mình, miễn là nó hỗ trợ phát triển ứng dụng .NET bằng C#.
.NET 6 SDK
Nếu bạn đã cài đặt Visual Studio, bạn cũng sẽ đồng thời cài đặt .NET SDK. Nếu không, hãy tải xuống .NET 6.0 hoặc phiên bản mới hơn từ https://dotnet.microsoft.com/download.
Chuẩn bị cơ sở dữ liệu
Khung ABP có thể tích hợp với bất kỳ nguồn dữ liệu nào. Hiện tại đã tích hợp sẵn: Entity Framework Core (EF Core) và MongoDB. Đối với EF Core, hỗ trợ tất cả các hệ quản trị cơ sở dữ liệu (DBMS), chẳng hạn như SQL Server, MySQL, PostgreSQL, Oracle, v.v.
Trong chương này, tôi sẽ sử dụng SQL Server làm DBMS. Giải pháp khởi động sử dụng LocalDB (một phiên bản SQL Server đơn giản, phù hợp với các nhà phát triển đã cài đặt Visual Studio). Tuy nhiên, bạn có thể sử dụng phiên bản đầy đủ của SQL Server. Nếu bạn muốn sử dụng SQL Server đầy đủ, bạn có thể tải xuống SQL Server Developer Edition từ https://www.microsoft.com/sql-server/sql-server-downloads.
Cài đặt ABP CLI
Hầu hết các khung phổ biến đều cung cấp CLI, và khung ABP cũng không ngoại lệ. ABP CLI là một công cụ dòng lệnh thực hiện các tác vụ phổ biến cho ứng dụng ABP. Ví dụ: tạo giải pháp mới dựa trên khung ABP.
Thực hiện lệnh sau trong terminal để cài đặt:
dotnet tool install -g Volo.Abp.Cli
Nếu bạn đã cài đặt, bạn có thể sử dụng lệnh sau để cập nhật lên phiên bản mới nhất:
dotnet tool update -g Volo.Abp.Cli
Tạo giải pháp mới
Khung ABP cung cấp một mẫu khởi động ứng dụng được xây dựng sẵn. Có hai cách để sử dụng mẫu này để tạo giải pháp mới.
Tải xuống từ trang web chính thức
Bạn có thể tạo và tải xuống giải pháp trực tiếp từ https://abp.io/get-started. Trên trang này, bạn có thể dễ dàng chọn khung giao diện người dùng (UI), nhà cung cấp cơ sở dữ liệu và các tùy chọn khác:
Đáng chú ý là các tùy chọn trên trang này sẽ ảnh hưởng đến kiến trúc, cấu trúc và công cụ khác nhau.
- Tên dự án là tên của giải pháp Visual Studio (tệp .sln) và cũng là không gian tên gốc của dự án.
- Đối với loại dự án, có hai tùy chọn:
- Mẫu Module được sử dụng để tạo các mô-đun ứng dụng có thể tái sử dụng.
- Mẫu Application được sử dụng để xây dựng ứng dụng web.
Mẫu Module sẽ được giới thiệu chi tiết trong chương [*Sử dụng mô-đun hóa*]. Ở đây, tôi chọn Application vì tôi muốn tạo một ứng dụng web mới, chúng ta sẽ sử dụng nó trong chương tiếp theo.
Hiện tại có bốn tùy chọn khung UI có sẵn:
- MVC/Razor Page
- Angular
- Blazor WebAssembly
- Blazor Server
Bạn có thể chọn tùy chọn phù hợp nhất với yêu cầu ứng dụng của mình. Chúng ta sẽ giới thiệu các tùy chọn MVC/Razor Page và Blazor trong phần 4 của cuốn sách, phát triển UI và API. Bạn có thể tìm hiểu thêm về UI Angular trong tài liệu chính thức của ABP. Ở đây, tôi chọn tùy chọn MVC/Razor Page làm ví dụ.
Hiện tại có hai tùy chọn nhà cung cấp cơ sở dữ liệu:
- Entity Framework Core
- MongoDB
Nếu chọn tùy chọn Entity Framework Core, bạn có thể sử dụng bất kỳ DBMS nào được EF Core hỗ trợ. Tôi chọn tùy chọn SQLServer với EF Core ở đây.
ABP cũng cung cấp mẫu di động dựa trên React Native, một khung ứng dụng đơn trang (SPA) phổ biến do Facebook cung cấp. Cuốn sách này chưa đề cập đến phát triển di động, vì vậy tôi để nó là None.
Cuối cùng, nếu bạn muốn tách UI của mình khỏi HTTP API về mặt vật lý, bạn có thể chọn tùy chọn Layered. Trong trường hợp này, UI sẽ không có kết nối cơ sở dữ liệu trực tiếp, nó thực hiện các cuộc gọi thông qua HTTP API. Bạn có thể triển khai UI và HTTP API riêng biệt. Ở đây chúng ta sử dụng kiến trúc đơn thể thay vì hệ thống phân tán, mặc dù ABP cũng hỗ trợ kịch bản phân tán này.
Khi bạn chọn xong các tùy chọn này, ABP sẽ tạo ra một giải pháp có thể sử dụng được ở cấp độ sản xuất, bạn có thể bắt đầu xây dựng ứng dụng của mình trên đó. Nếu bạn muốn thay đổi các tùy chọn sau này (ví dụ: nếu bạn muốn sử dụng MongoDB thay vì EF Core), bạn nên tạo lại giải pháp của mình hoặc cấu hình thủ công các gói NuGet liên quan, hiện tại không có phương pháp tự động thay đổi các tùy chọn này.
Sử dụng ABP CLI
Bạn có thể sử dụng lệnh new trong ABP CLI để tạo giải pháp mới. Mở terminal dòng lệnh và gõ lệnh sau trong một thư mục trống:
abp new QuanLySanPham
QuanLySanPham là tên giải pháp. Lệnh này mặc định tạo ứng dụng web với EF Core, SQL Server LocalDB và UI MVC/Razor Page. Nếu tôi muốn chỉ định các tùy chọn, tôi có thể viết lại cùng một lệnh như sau:
abp new QuanLySanPham -t app -u mvc -d ef -dbms SqlServer --mobile none
Nếu bạn muốn chỉ định chuỗi kết nối cơ sở dữ liệu, bạn cũng có thể truyền tham số --connection-string như trong ví dụ sau:
abp new QuanLySanPham -t app -u mvc -d ef -dbms SqlServer --mobile none --connection-string "Server=(LocalDb)\\MSSQLLocalDB;Database=QuanLySanPham;Trusted_Connection=True"
Bây giờ chúng ta có một giải pháp hoàn chỉnh, có thể sử dụng ở cấp độ sản xuất QuanLySanPham. Phần tiếp theo sẽ hướng dẫn cách chạy giải pháp này.
Chạy giải pháp
Chúng ta mở giải pháp QuanLySanPham.sln bằng Visual Studio hoặc trình soạn thảo, tạo cơ sở dữ liệu và chạy ứng dụng web. Bạn sẽ thấy cấu trúc giải pháp như hình sau:
Giải pháp này là cấu trúc phân tầng bao gồm nhiều dự án. Thư mục test chứa các dự án kiểm thử các lớp tương ứng. Trong các dự án này, một số là thư viện lớp và một số là ứng dụng có thể thực thi:
QuanLySanPham.Weblà ứng dụng web.QuanLySanPham.DbMigratorđược sử dụng để áp dụng di chuyển cơ sở dữ liệu và khởi tạo dữ liệu hạt.
Chuỗi kết nối
Chuỗi kết nối được định nghĩa trong tệp appsettings.json của các dự án QuanLySanPham.Web và QuanLySanPham.DbMigrator, bao gồm máy chủ, tên cơ sở dữ liệu và thông tin xác thực. Như đoạn mã sau:
"ConnectionStrings": {
"Default": "Server=(LocalDb)\\MSSQLLocalDB;Database=QuanLySanPham;Trusted_Connection=True"
}
Chuỗi kết nối mặc định sử dụng LocalDb, một cơ sở dữ liệu nhẹ, tương thích với SQL Server. Nó được cài đặt trong Visual Studio. Nếu bạn muốn kết nối với một phiên bản SQL Server khác, bạn cần thay đổi chuỗi kết nối.
Tạo cơ sở dữ liệu
Giải pháp này sử dụng Code First của EF Core để quản lý các thay đổi cơ sở dữ liệu. Do đó, chúng ta có thể sử dụng các lệnh tiêu chuẩn Add-Migration và Update-Database để quản lý các thay đổi cơ sở dữ liệu.
QuanLySanPham.DbMigrator là một ứng dụng console giúp đơn giản hóa việc tạo và di chuyển cơ sở dữ liệu trong môi trường phát triển và sản xuất. Nó cũng cung cấp khởi tạo dữ liệu, chẳng hạn như tạo người dùng admin và vai trò mặc định được sử dụng để đăng nhập.
Nhấp chuột phải vào dự án QuanLySanPham.DbMigrator và chọn lệnh Set as Startup Project. Sau đó, sử dụng Ctrl+F5 để chạy dự án mà không cần gỡ lỗi.
Về di chuyển ban đầu
Nếu bạn sử dụng IDE khác ngoài Visual Studio (ví dụ: JetBrains Rider), bạn có thể gặp sự cố khi chạy lần đầu. Trong trường hợp này, bạn có thể mở terminal dòng lệnh trong thư mục dự án QuanLySanPham.DbMigrator và thực thi lệnh dotnet run. Lần sau, bạn có thể chạy nó như bình thường trong IDE.
Cơ sở dữ liệu đã sẵn sàng, chúng ta có thể chạy ứng dụng để xem giao diện UI.
Chạy ứng dụng web
Thiết lập QuanLySanPham.Web làm dự án khởi động và sử dụng Ctrl+F5 để chạy nó (khởi động mà không cần gỡ lỗi).
Lưu ý: Ctrl+F5 chạy không gỡ lỗi
Trừ khi bạn gỡ lỗi chúng, người ta rất khuyến khích chạy ứng dụng mà không cần gỡ lỗi, vì nó sẽ nhanh hơn nhiều.
Sau đó sẽ mở một trang đăng nhập như trong ảnh chụp màn hình sau:
Người dùng mặc định là admin, mật khẩu mặc định là 1q2w3E*. Bạn có thể thay đổi sau khi đăng nhập.
ABP là một khung mô-đun hóa, giải pháp khởi động đã cài đặt các mô-đun cơ bản. Trước khi bắt đầu xây dựng ứng dụng của bạn, tốt nhất là nên khám phá các tính năng của các mô-đun được xây dựng sẵn.
Khám phá các mô-đun được xây dựng sẵn
Tiếp theo, chúng ta sẽ tìm hiểu ngắn gọn về các mô-đun được cài đặt sẵn trong giải pháp: Account, Identity và Tenant Management.
Nguồn của các mô-đun này có thể được tìm thấy miễn phí trên GitHub và cũng có thể lấy phiên bản mới nhất trên NuGet. Trừ khi cần thiết, chúng ta thực sự không cần chạm vào mã nguồn, vì chúng rất có thể mở rộng và tùy chỉnh. Tất nhiên, bạn cũng có thể bao gồm mã nguồn của chúng trong giải pháp để tự do thay đổi chúng.
Mô-đun Account
Mô-đun này thực hiện các chức năng như đăng nhập, đăng ký, quên mật khẩu, v.v. Nó cũng hiển thị lựa chọn tenant, được sử dụng để chuyển đổi tenant trong môi trường phát triển đa tenant. Phân tích đa tenant sẽ được giới thiệu chi tiết trong chương [*Thực hiện đa tenant*].
Khi bạn hoàn tất đăng nhập, bạn sẽ thấy một mục Quản trị với menu con. Các mục menu này là các menu được xây dựng sẵn của các mô-đun Identity và Tenant Management của ABP.
Mô-đun Identity
Mô-đun Identity được sử dụng để quản lý người dùng, vai trò và quyền của họ. Nó thêm một mục menu Quản lý Identity trong menu Administration, trong đó Roles và Users là các menu con, như hình sau:
Nếu bạn nhấp vào mục menu Roles, trang quản lý vai trò sẽ mở ra, như hình sau:
Trên trang này, bạn có thể quản lý các vai trò và quyền trong ứng dụng. Trong ABP, vai trò là một nhóm quyền, vai trò được gán cho người dùng. Default trong hình biểu thị vai trò mặc định. Khi người dùng mới đăng ký vào hệ thống, họ sẽ được gán vai trò mặc định tự động.
Bên cạnh đó, một người dùng có thể có không hoặc nhiều vai trò.
Vai trò và người dùng gần như là tiêu chuẩn trong hầu hết các ứng dụng, không cần giải thích ở đây.
Mô-đun Tenant Management
Mô-đun Tenant Management là nơi bạn tạo và quản lý tenant trong hệ thống đa tenant. Trong môi trường đa tenant, dữ liệu của tenant này hoàn toàn tách biệt với dữ liệu của tenant khác (bao gồm vai trò, người dùng và quyền). Nếu ứng dụng của bạn không muốn đa tenant, bạn có thể xóa mô-đun này khỏi giải pháp.