Skip to content

Latest commit

 

History

History
148 lines (102 loc) · 5.18 KB

fundametals.md

File metadata and controls

148 lines (102 loc) · 5.18 KB

Fundametals

Mục lục

  1. Overview
  2. Host
    1. Generic Host
    2. Web Host
  3. Configuration
  4. Swagger
  5. Database
    1. Mysql Docker Container
    2. MySqlConnector

1. Overview

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


2. Host

Ứ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

Có ba loại hosts khác nhau

2.1. Generic 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.

2.2. Web Host

2.2.1. Setup a host

module Program =
    let CreateHostBuilder args =
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(fun webBuilder ->
                webBuilder.UseStartup<Startup>() |> ignore
            )

    [<EntryPoint>]
    let Main args =
        CreateHostBuilder(args).Build().Run()
        0

3. Configuration

  • 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
  • Ứ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úc run 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.

4. Swagger


5. Database

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

5.1. Mysql Docker Container

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

5.1.1. Chạy thử container

  • 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;

5.2. MySqlConnector

dotnet add package MySqlConnector
  • Cách thức tạo connection tại đây
  • Thông tin chi tiết tại đây