Kiến trúc và thành phần của một solution và project ASP.NET Core

Một phần của tài liệu Tìm hiểu tổng quan về asp net : asp net core và so sánh sự khác nhau tìm hiểu tổng quan kiến trúc (Trang 35 - 41)

- Data (Class Library) - Application (Class Library)

ASP.NET ASP.NET CORE

Chỉ hỗ trợ Windows Chạy đa nền tảng Windows,Linux,Mac OS Hiệu năng chạy framework cao Có hiệu năng chạy cao hơn

ASP.NET Hỗ trợ các files

WCF,WPF,VB,Web Config, và các files khác

Chỉ chạy được trên .NET Framework………….

Không hỗ trợ các files Global.asax và Web config, nhưng lại hỗ trợ appsettings.json

Chạy được trên hai nền .NET Framework và Core Framework.

Sử dụng ngôn ngữ C#, VB, WCF, WPF và WF.

Chỉ hỗ trợ ngôn ngữ C#, F# và VB trong thời gian ngắn, không hỗ trợ WCF, WPF và WF. Tuy nhiên, Asp.Net Core lại có thể hỗ trợ cho các thư viện WCP có sẵn.

Hỗ trợ vùng chứa không được đánh giá quá cao.

Hỗ trợ vùng chứa phù hợp cho các triển khai như Docker.

Hỗ trợ mọi phiên bản Chỉ có các phiên bản Visual Code từ 2015 trở lên mới được hỗ trợ Người dùng cần biên dịch lại sau

khi thay đổi mã.

Khi làm mới Core Browser sẽ tự động biên dịch và thực thi mã mà không cần phải dịch lại.

- Api (Project) - Webapp (Project)

1.2.2.Cấu trúc một solution

- Từ cửa sổ Solution Explorer, chúng ta có thể lướt qua cấu trúc tổng thể của một dự án ASP.NET Core MVC với một số thành phần sau:

Vị trí cao nhất trong cửa sổ Solution Explorer là thư mục gốc của dự án được lồng trong một thư mục solution. Visual Studio dùng khái niệm solution để làm việc với nhiều dự án, trong trường hợp này chỉ có một dự án.

Tại thư mục này chúng ta sẽ tìm thấy một tập tin solution (có phần mở rộng .sln).

Kế tiếp thư mục gốc dự án là tập tin quan trọng nhất của dự án, tập tin MVCBooks.csproj.

Vì chúng ta đang dùng mô hình MVC nên chú ý tiếp theo của chúng ta sẽ là các thư mục Controllers, ModelsViewschứa các tập tin dùng để xây dựng dự án.

Thư mục Propertieschứa tập tinlaunchSettings.json kiểm soát cách Visual Studio sẽ chạy và debug ứng dụng.

Thư mục wwwrootlà thư mục đặc biệt cho phép các trình duyệt web có thể truy cập trực tiếp đến nội dung bên trong nó như các tập tin CSS, JS, hình ảnh hay các tập tin HTML. Các trình duyệt sẽ không thể truy cập được các tập tin này nếu chúng ở bên thư mục wwwroot.

Propertieswwwrootđược xem như là hai thư mục đặc biệt, được đặt phía trên cửa sổ Solution Explorer, gần mục dự án và không tuân theo thứ tự các chữ cái. Phía trên hai thư mục này có hai mục đặc biệt hơn gọi là DependenciesConnectedServives chứa các thành phần phụ thuộc đến dự án như các gói NuGet, các dịch vụ từ xa, các thành phần hướng client.

Tập tin appsettings.json 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.

Cuối cùng là hai tập tin Program.csStartup.cs kiểm soát cấu hình và quá trình khởi động của ứng dụng tại thời điểm thực thi. Chúng ta sẽ tìm hiểu kĩ hơn nội dung hai tập tin này.

1.2.3. Tập tin dự án csproj

Là tập tin quan trọng nhất của ứng dụng .NET nhưng trong ASP.NET Core, nội dung tập tin này được lược giản để dễ đọc, dễ chỉnh sửa hơn. Ví dụ nội dung MVCBooks.csproj:

1 2 3 4 5

<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>

<TargetFramework>netcoreapp3.1</TargetFramework>

</PropertyGroup>

</Project>

Thuộc tính Sdk của phần tử Project xác định kiểu dự án đang xây dựng (trong trường hợp này là Web). Phần tử TargetFramework xác định framework ứng dụng đang chạy, trong trường hợp này là .NET Core 3.1. 1.2.4. Tập tin Program.cs

Tương tự các ứng dụng Console, dự án ASP.NET Core cũng chứa lớp Program với hàm Main nhưng mục đích của hàm này là dùng để xây dựng và thực thi một đối tượng IWebHost. IWebHost là cốt lõi ứng dụng ASP.NET Core chứa cấu hình ứng dụng và Kestrel server để lắng nghe các yêu cầu và hồi đáp đến người dùng. Nó dùng một WebHostBuilder, được tạo bằng lời gọi CreateDefaultBuilder để định nghĩa cách IWebHost được cấu hình trước khi một đối tượng IWebHost được tạo bằng lời gọi Build(). Nội dung lớp Program từ MVCBooks:

1 2 3 4 5 6 7 8

public class Program {

public static void Main(string[] args) {

CreateHostBuilder(args).Build().Run();

}

public static IHostBuilder CreateHostBuilder(string[] args) =>

9 10 11 12 13 14

Host.CreateDefaultBuilder(args)

.ConfigureWebHostDefaults(webBuilder =>

{

webBuilder.UseStartup<Startup>();

});

}

1.2.5. Tập tin Startup.cs

Tập tin này chứa lớp Startup chứa thông tin cấu hình ứng dụng dựa trên hai khía cạnh:

 Tất cả các lớp được dùng trong ứng dụng phải được đăng ký để chúng có thể được sử dụng một cách chính xác tại thời gian thực thi.

 Cách thức ứng dụng xử lý và hồi đáp các yêu cầu từ người dùng.

Lớp Startup từ MVCBooks:

1 2 3 4 5 6 7 8 9 10 11

public class Startup {

public Startup(IConfiguration configuration) {

Configuration = configuration;

}

public IConfiguration Configuration { get; }

// This method gets called by the runtime. Use this method to // add services to the container.

12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33

public void ConfigureServices(IServiceCollection services) {

services.AddControllersWithViews();

}

// This method gets called by the runtime. Use this method to // configure the HTTP request pipeline.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

{

(env.IsDevelopment())if {

app.UseDeveloperExceptionPage();

} else {

app.UseExceptionHandler("/Home/Error");

// The default HSTS value is 30 days. You may want to // change this for production scenarios, see

// https://aka.ms/aspnetcore-hsts.

app.UseHsts();

}

34 35 36 37 38 39 40 41 42 43 44 45 46

app.UseHttpsRedirection();

app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.UseEndpoints(endpoints =>

{

endpoints.MapControllerRoute(

name: "default", pattern: "

{controller=Home}/{action=Index}/{id?}");

});

} }

Một phần của tài liệu Tìm hiểu tổng quan về asp net : asp net core và so sánh sự khác nhau tìm hiểu tổng quan kiến trúc (Trang 35 - 41)

Tải bản đầy đủ (PDF)

(78 trang)