Quy trình làm việc với Radzen Blazor

0

Vai trò chính của Radzen là giúp scaffolding (sinh code tự động) để tạo ra ứng dụng từ cơ sở dữ liệu có sẵn. Nghĩa là, khi bạn có sẵn cơ sở dữ liệu, Radzen sẽ tự động sinh ra code để tạo ra một ứng dụng quản lý với đầy đủ các yêu cầu cần có cơ bản của loại ứng dụng này.

Sau đây là quy trình làm việc cơ bản của Radze.

Xây dựng cơ sở dữ liệu

Radzen hỗ trợ quy trình làm việc database-first với Entity Framework Core. Các cơ sở dữ liệu được Radzen hỗ trợ bao gồm Sql Server, MySql, PostgreSql, Oracle.

Nếu không có sẵn cơ sở dữ liệu, Radzen cũng hỗ trợ làm việc với các nguồn dữ liệu dạng web API, bao gồm OData, REST, và Swagger.

Khi có một trong số các nguồn dữ liệu được hỗ trợ, Radzen có khả năng tự động suy đoán cấu trúc (schema) và sinh ra các lớp thực thể (domain class). Đây là mô hình hoạt động database-first nếu bạn đã quen thuộc với Entity Framework.

Cơ sở dữ liệu nên được xây dựng với ý tưởng ORM (Object – Relational Mapping), bao gồm từ cách đặt tên, xây dựng quan hệ, kiểu dữ liệu. Điều này sẽ giúp cho quá trình đọc hiểu sơ đồ cấu trúc dữ liệu và sinh domain class tốt hơn.

Bạn nên sử dụng một công cụ thiết kế cơ sở dữ liệu để dễ dàng hình dung trực quan, thay vì trực tiếp viết mã SQL. Ví dụ, có thể sử dụng Sql Server Management Studio (SSMS), Navicat, MySql Workbench, hoặc các công cụ hỗ trợ thiết kế online (sqldbm.com, dmodelaid.com, v.v.).

Tùy thuộc vào kế hoạch triển khai, bạn nên lựa chọn hệ quản trị cơ sở dữ liệu phù hợp. Ví dụ, nếu dự định triển khai trên máy chủ Linux, bạn nên lựa chọn MySql, mặc dù Sql Server đã hỗ trợ Linux nhưng Sql Server rất nặng.

Scaffolding – sinh code tự động

Scaffolding là quá trình sinh code tự động để tạo ra chương trình. Nếu từng làm việc với Asp.net (Core) MVC, bạn hẳn rất quen thuộc với khái niệm này.

Radzen sẽ tự động sinh code cho: các domain class (ánh xạ từ cơ sở dữ liệu sang), các phương thức / API dùng để truy xuất dữ liệu, các page để làm việc (CRUD) với từng domain class. Ngoài ra, mỗi khi bạn thay đổi mỗi page (ví dụ, thêm bớt các thành phần trên giao diện), Radzen sẽ sinh lại code cho page đó.

Bản Pro và Enterprise hỗ trợ scaffolding tự động cho toàn bộ domain class tạo ra từ quá trình suy đoán cấu trúc dữ liệu. Nói cách khác, sau khi suy ra domain class từ cơ sở dữ liệu, Radzen tự động tạo cho bạn một ứng dụng CRUD hoàn chỉnh. Trong đó mỗi domain class sẽ có đủ các view cho các thao tác CRUD dữ liệu.

Nếu dùng bản Community bạn phải scaffold thủ công cho từng domain class riêng rẽ. Về kết quả so với scaffolding tự động thì không có gì khác biệt. Chẳng qua là bạn mất thêm một chút thời gian. Tuy nhiên, điều này có lợi là bạn có thể kiểm soát tốt hơn việc scaffolding này. Ví dụ, bạn có thể lựa chọn loại screen khác, thay vì sử dụng loại screen mặc định trong scaffolding tự động.

Một số kết quả scaffolding bạn chỉ nhận biết được khi mở project trong Visual Studio như các domain class, data access layer class, API.

Các page cũng là kết quả scaffolding nhưng được thể hiện trong giao diện thiết kế của Radzen và bạn có thể trực tiếp điều chỉnh các thiết kế giao diện này. Kết quả của các điều chỉnh giao diện là code sinh ra tự động để tạo ra giao diện đó.

Tùy chỉnh

Dựa trên kết quả scaffolding của Radzen, bạn có thể tùy chỉnh gần như mọi thứ để ứng dụng hoạt động theo đúng ý bạn.

Dự án tạo ra bởi Radzen là một dự án Blazor bình thường mà bạn có thể mở / dịch / chạy từ Visual Studio hoặc Visual Studio Code (trên cả Windows / Mac / Linux). Tuy nhiên do phần lớn code được sinh tự động từ quá trình scaffolding, bạn không nên tùy ý thay đổi code của dự án. Lý do là mỗi lần bạn điều chỉnh trong Radzen, code sẽ được tự động điều chỉnh trên dự án. Những gì bạn tự thêm vào có thể bị mất đi.

Để đảm bảo bạn có thể tùy chỉnh bất kỳ thành phần nào mà không bị ảnh hưởng bởi quá trình sinh code tự động, class được Radzen tạo tự động đều là partial class (PS> Partial class là loại class được viết trên nhiều file khác nhau). Nếu cần tùy chỉnh thành phần nào, bạn chỉ cần tạo một partial class tương ứng và viết code của mình trong đó. Code viết trong file của bạn tạo ra sẽ không bị ảnh hưởng bởi quá trình scaffolding của Radzen.

Lấy ví dụ cho dễ hiểu. Giả sử bạn xây dựng quản lý nhân sự. Radzen sau khi đọc cấu trúc cơ sở dữ liệu sẽ sinh ra cho bạn một domain class mang tên Employee nằm trong file Employee.cs. Giả sử giờ bạn muốn bổ sung thêm một số calculated property (ví dụ, tính ra FullName từ FirstName và LastName). Bạn tuyệt đối không viết code ở file Employee.cs vì khi chạy ứng dụng, Radzen sẽ xóa hết file Employee.cs và thay bằng nội dung sinh tự động. Thay vào đó, bạn tạo một file code khác, Employee.Custom.cs, vào tạo partial class Employee trong file này.

Radzen cũng cho phép thực thi các phương thức do người lập trình tự viết thông qua cơ chế partial method. Partial method là những phương thức đặc biệt chỉ có phần mô tả nhưng không có thân. Phần thân phương thức sẽ do người khác viết sau. Cùng với partial class, partial method cũng là một tính năng sử dụng kèm với công cụ sinh code tự động giúp người lập trình tự xây dựng phần thân phương thức riêng.

Triển khai

Ứng dụng của Radzen sinh ra là một ứng dụng Blazor bình thường, bạn có thể triển khai nó với các kỹ thuật triển khai ứng dụng Asp.net Core Blazor mà không cần sự hỗ trợ deploy tự động của Radzen (bản Pro và Enterprise).

Ứng dụng Blazor có thể triển khai trên tất cả các hệ điều hành chính, bao gồm Windows, Mac, Linux.

Có hai mô hình triển khai ứng dụng Asp.net Core nói chung: triển khai ở dạng console app với máy chủ Kestrel tích hợp; triển khai cùng với một chương trình máy chủ web chuyên dụng (như Apache, IIS, Nginx).

Ở cách triển khai thứ nhất chỉ cần chạy ứng dụng Blazor (ở dạng console app). Ứng dụng console này đã tích hợp sẵn chương trình máy chủ Kestrel nên có thể tự nhận và xử lý truy vấn HTTP. Cách này đơn giản và phù hợp với các ứng dụng quản lý nội bộ.

Ở cách triển khai thứ hai, chương trình máy chủ web chuyên dụng đóng vai trò là một reverse proxy. Reverse proxy chuyển tiếp truy vấn đến chương trình Kestrel để xử lý. Cách triển khai này phức tạp hơn và phù hợp với ứng dụng cần truy xuất từ Internet.

Subscribe
Notify of
guest
0 Thảo luận
Inline Feedbacks
View all comments