Nội dung bài viết này sẽ cũng cấp các thông tin về kiến trúc, thành phần của một ASP.NET Core API theo ý hiểu của tác giả cũng như các công nghệ khác được sử dụng trong chương trình. Phần lớn nội dung được viết dựa trên tài liệu của Microsoft
Ứng dụng ASP.NET sẽ xây dựng một host. Nó sẽ đóng gói tất cả các tài nguyên của chương trình, bao gồm
- An HTTP server implementation
- Middleware components
- Logging
- Dependency injection (DI) services
- Configuration
Có ba loại hosts khác nhau
- .NET WebApplication Host, hay còn gọi là Minimal Host
- .NET Generic Host
- ASP.NET Core Web Host
- ASP.NET Core templates cung cấp WebApplicationBuilder và WebApplication, những class này sẽ cung cấp các cách để config và run ứng dụng web mà không cần Starup class.
module Program =
let CreateHostBuilder args =
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(fun webBuilder ->
webBuilder.UseStartup<Startup>() |> ignore
)
[<EntryPoint>]
let Main args =
CreateHostBuilder(args).Build().Run()
0-
Cấu hình ứng dụng ASP.NET được thể hiện bằng cách sử dụng một hoặc nhiều configuration providers. Các Configuration provider này đọc dữ liệu từ các cặp key-value từ nhiều nguồn khác nhau
- Settings files, such as
appsettings.json - Environment variables
- Azure Key Vault
- Azure App Configuration
- Command-line arguments
- Custom providers, installed or created
- Directory files
- In-memory .NET objects
- Settings files, such as
-
Ứng dụng Simple API sử dụng các đơn giản nhất là dùng file cấu hình
appsettings.json. Bằng việc sử dụng ConfigurationBuilder, chúng ta có thể lưu cấu hình thành file json sau đó lấy chúng ra trong lúcrun time.
let CreateDbConnection () =
let config = ConfigurationBuilder().AddJsonFile("appsettings.json", false).Build()
let sqlConfig = config.GetSection("MySqlSetting")
APIConnection.GetConnection(sqlConfig)- Ở ví dụ trên, sử dụng ConfigurationBuilder để đọc dữ liệu trong file appsettings.json. Sau đó có thể sử dụng hàm GetSection để lấy ra các phần của các dữ liệu dưới dạng object.
Chương trình sử dụng cơ sở dữ liệu mysql thông qua docker. Phần này sẽ đề cập đến hai vấn đề như sau
docker-compose -f docker-compose-mysql.yaml up -d- file docker-compose-mysql.yaml chứa các cài đặt cho mysql
- MYSQL_ROOT_PASSWORD: đặt password cho user root là fsharp
- ports: đặt port là 3306
- volumes: sử dụng để khởi tạo một dữ liệu cho database
Thông tin chi tiết tại đây
- Execute container
docker exec -it dev_fsharp_sql_container bash- Đăng nhập với user root
mysql -u root -p- Chuyển sang cơ sở dữ liệu simple_app
use simple_app;- Truy vấn vào bảng Employees
SELECT * FROM Employees;dotnet add package MySqlConnector