© 2020, Developed by Hieu Dev

Tìm hiểu về cấu trúc dự án ASP.NET Core

Trước khi bắt đầu với việc tự học ASP.NET Core, hôm nay chúng ta sẽ cùng nghiên cứu về cấu trúc dự án ASP.NET Core, giải thích các thành phần trong dự án ASP.NET, cấu hình ứng dụng, middleware.

Cấu trúc dự án ASP.NET Core MVC

Sau khi ta tạo mới project ASP.NET Core sử dụng template MVC sẽ thấy được cấu trúc như sau:

Như trên hình các bạn có thể dễ dàng thấy được các thành phần khi tạo mới project ASP.NET, cụ thể như sau:

Connected Services

Đây là nơi chứa các danh sách các dịch vụ online mà project này sử dụng, ví dụ WCF, kết nối các dịch vụ trên cloud,...

Dependencies

Trong đây chứa danh sách các NuGet Package được cài đặt và sử dụng trong project. Và ở đây bạn có thể kết nối (references) đến các tầng khác trong solution (Web API, Class Library,...)

Properties

Chứa các thông tin cấu hình của project. Trong thư mục này còn chứa một file đó là launchSettings.json. File json này chứa tất cả thông tin cụ thể cài đặt project để có thể chạy được ứng dụng. Bạn sẽ thấy các profile debug, các biến môi trường được chỉ ra trong file này.

Có một điều chúng ta phải nhớ là file này chỉ sử dụng cho môi trường phát triển local của chúng ta thôi, khi publish lên server thì file này không cần thiết. Lúc đó mọi setting sẽ cần đặt trong file appSettings.json.

Trong đây chúng ta có thể đổi port khi chạy project, ngoài ra chúng ta cũng thấy cả hai profile này đều có section “ASPNETCORE_ENVIRONMENT” được set mặc định là Development. Điều này sẽ giúp các bạn phân biệt các môi trường trong khi phát triển, testing và release.

wwwroot

Thư mục này chứa các file tĩnh như html, css, javascript, hình ảnh. Các file tĩnh phải nằm trong thư mục này thì mới có thể cung cấp cho trình duyệt. 

Thư mục này có tên gọi khác là web root, khi bạn tạo mới project sử dụng template MVC thì sẽ có sẵn thư viện bootstrap, jQuery cho các bạn.

appsettings.json 

File này sẽ cung cấp thông tin cấu hình ứng dụng tại thời điểm thực thi hay thời điểm biên dịch. Cụ thể trong đây sẽ chứa các connection string khi bạn muốn connect đến database, các secret key, các biến môi trường...

Khi làm việc với file này, thứ tự mặc định cho việc đọc các nguồn cấu hình đó là:

  1. appsettings.json, 
  2. appsettings.{Environment}.json cụ thể là appsettings.development.json
  3. User secrets
  4. Các biến môi trường
  5. Các tham số dòng lệnh

Program.cs

Trong file này chịu trách nhiệm cấu hình nền tảng của ứng dụng. Ví dụ như thư mục wwwroot ta tìm hiểu trên là thư mục mặc định chứa các file tĩnh của project, thì ta có thể đổi tên nó và cấu hình tên thư mục mới trong file program.cs này.

Trong thực tế, mình có thể seeding data mẫu, bằng cách sử dụng file này.

Startup.cs

File này khá quan trọng, nó chứa class với các phương thức cấu hình cho việc hoạt động của ứng dụng, ví dụ bạn sẽ sử dụng những middleware nào, thứ tự sắp xếp các middleware trong pipeline ra sao. Bạn cũng có thể cấu hình sử dụng các loại dịch vụ (service) nào, như Dependency Injection, Logging.

Khi bạn mở hai file này lên sẽ có 2 phương thức chính, đó là ConfigureServices() dùng để đăng ký các dịch vụ, và Configure() dùng để đăng ký các middleware.

ConfigureServices()

Phương thức ConfigureServices bao gồm tham số IServiceCollection để đăng ký các dịch vụ vào vùng chứa IoC.

Phương thức ConfigureServices là nơi bạn có thể đăng ký các lớp dependent của mình với IoC được tích hợp sẵn.

Thông thường object sẽ được tạo ra và truyền cho nơi cần dùng thông qua cơ chế Dependency Injection tích hợp sẵn trong ASP.NET Core. Bạn không cần sử dụng các DI container thứ ba nữa (như Ninject, Unity).

Configure()

Nơi đây chứa các middleware , là một khái niệm mới trong ASP.NET Core dùng để chỉ một module/class có khả năng xử lý truy vấn HTTP và trả lại kết quả ở dạng HTTP Response. Phần này chúng ta sẽ nói ở bài riêng.

ASP.NET MVC

Trong structure trên, ta có thể thấy 3 thư mục Controller, Model, Views và đó cũng chính là pattern phổ biến nhất của chúng ta.

Model

Đây là nơi lưu dữ liệu, trạng thái mô hình cơ sở dữ liệu và các logic quản lý cơ sở dữ liệu đó.
 
Các class model trong ASP.NET Core không nhất thiết phải đặt trong folder model này, nhưng việc tổ chức các class trong đây sẽ dễ dàng quản lý và maintain.

View

Được coi 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.

View bao gồm các logic để hiển thị dữ liệu từ model, và được cung cấp bởi controller. 
Các file trong view là tất cả các file có đuôi là .cshtml, tức là sự kết hợp giữa csharp (c#) và HTML.

Ta cần lưu ý rằng là tên file của view sẽ trùng với tên phương thức trong controller. Ví dụ ta có controller tên là ProductController.cs, trong đó có phương thức GetLists() thì thư mục chứa các view sẽ là Product và file view để hiển thị sẽ là GetLists.cshml.

Layout view
Đây là nơi chứa giao diện chung mà có thể áp dụng cho các view của project khi bạn gọi đến layout view, mặc định bạn sẽ có file _Layout.cshtml chính là layout view của chúng ta, nhưng ta có thể tạo thêm nhiều layout view khác nhau.

Lưu ý, các phần tử html, head, title và body tiêu chuẩn nằm trong tệp bố cục này.

Nếu nó là chung, thì ta của sẽ thiết lập được những cái riêng cho từng trang. Ta có các <title></title> ở các trang là khác nhau, ở đây ta sẽ dùng @ViewBag.Title để định nghĩa layout view, và ở các view khác, ta sẽ gọi lại và đặt title cho view con đó.

@ RenderBody() là vị trí nơi nội dung cụ thể được đưa vào.

ViewStart
Trong viewstart, ta có thể định nghĩa layout view mặc định cho project.

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. Nó được sử dụng để xác định loại view nào cần phải được hiển thị. Controller cũng được sử dụng cho mục đích giao tiếp với model.

Controller trong MVC được kế thừa từ Microsoft.AspNetCore.Mvc.Controller.

Mong bài viết này hữu ích với bạn. Have fun!
By Hiếu Quốc.

Đăng nhận xét

Mới hơn Cũ hơn