亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在Tye中如何對數據庫進行鏈接

發布時間:2021-12-16 10:12:00 來源:億速云 閱讀:180 作者:柒染 欄目:云計算

這期內容當中小編將會給大家帶來有關如何在Tye中如何對數據庫進行鏈接,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

下面我們來了解一下如何在 Tye 中如何對數據庫進行鏈接。

中間件鏈接

絕大多數服務都需要用到外部中間件來支持應用程序的正常運行,通常來說,就包含有數據庫、緩存中間件、消息隊列和文件系統等等。

因此,在開發過程中需要在應用程序中管理對這些中間件的鏈接字符串。

Tye 提供了一種方式以便更加容易的管理這些鏈接字符串。

使用 Tye 啟動 mongo

首先,我們使用 Tye 來啟動一個 mongo。

手動創建一個 tye.yml:

tye.yml

name: mongo-sampleservices:  - name: mongo    image: mongo    env:      - name: ME_CONFIG_MONGODB_ADMINUSERNAME        value: root      - name: ME_CONFIG_MONGODB_ADMINPASSWORD        value: example  - name: mongo-express    image: mongo-express    bindings:      - port: 8081        containerPort: 8081        protocol: http    env:      - name: ME_CONFIG_MONGODB_ADMINUSERNAME        value: root      - name: ME_CONFIG_MONGODB_ADMINPASSWORD        value: example

使用 tye run 便可以在本地啟動一個 mongo 并且在 http://localhost:8081 通過 ui 查看 mongo 中的數據情況:

如何在Tye中如何對數據庫進行鏈接

實際上就是使用 Tye 控制 docker desktop 啟動 mongo。因此需要提前在本地安裝好 docker desktop,以便啟動。

當然,這實際上和使用 docker-compose 沒有什么實質性的區別。

創建應用程序連接 mongo

下面,我們創建一個應用,并且將應用與 mongo 進行連接。

創建測試應用,并安裝必要的包:

create-tye-mongo-test.sh

dotnet new sln -n TyeTestdotnet new webapi -n TyeTestdotnet sln ./TyeTest.sln add ./TyeTest/TyeTest.csprojdotnet add ./TyeTest/TyeTest.csproj package Microsoft.Tye.Extensions.Configuration --version 0.6.0-alpha.21070.5dotnet add ./TyeTest/TyeTest.csproj package MongoDB.Driver

進入 Startup,向容器中注冊 MongoClient :

Startup.cs

// This method gets called by the runtime. Use this method to add services to the container.public void ConfigureServices(IServiceCollection services){    services.AddControllers();    services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new OpenApiInfo {Title = "TyeTest", Version = "v1"}); });    services.AddScoped(p =>    {        var config = p.GetRequiredService<IConfiguration>();        var connectionString = config.GetConnectionString("mongo");        Console.WriteLine(connectionString);        var client = new MongoClient(connectionString);        return client;    });}

值得注意的是,這里使用了一個擴展方法從 IConfiguration 中讀取 mongo 的連接字符串:

  1. mongo 實際上就是定義在 tye 中的服務名稱。

  2. GetConnectionString 是來自于 Microsoft.Tye.Extensions.Configuration 的擴展方法

  3. MongoClient 應該全局單例還是 Scope 其實筆者也沒查過資料。實際項目開發者注意按照需求調整。

打開 WeatherForecastController,讓我們在每次接受請求時,都寫入一些數據到 mongo 中以驗證效果。

WeatherForecastController.cs

using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using Microsoft.AspNetCore.Mvc;using Microsoft.Extensions.Logging;using MongoDB.Driver;namespace TyeTest.Controllers{    [ApiController]    [Route("[controller]")]    public class WeatherForecastController : ControllerBase    {        private static readonly string[] Summaries = new[]        {            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"        };        private readonly ILogger<WeatherForecastController> _logger;        private readonly MongoClient _mongoClient;        public WeatherForecastController(ILogger<WeatherForecastController> logger,            MongoClient mongoClient)        {            _logger = logger;            _mongoClient = mongoClient;        }        [HttpGet]        public IEnumerable<WeatherForecast> Get()        {            var rng = new Random();            var result = Enumerable.Range(1, 5).Select(index => new WeatherForecast                {                    Date = DateTime.Now.AddDays(index),                    TemperatureC = rng.Next(-20, 55),                    Summary = Summaries[rng.Next(Summaries.Length)]                })                .ToArray();            var mongoCollection = _mongoClient.GetDatabase(nameof(WeatherForecast))                .GetCollection<WeatherForecast>(nameof(WeatherForecast));            mongoCollection.InsertMany(result);            return result;        }    }}

至此,測試應用就創建完畢了。預期的效果是,當接受到請求時,就會向 mongo 中的 WeatherForecast collection 寫入一些數據。可以通過 mongo express UI 進行查看。

修改 tye.yml 以配置鏈接串

由于前面,我們是手動創建過了 tye.yml。因此,我們現在直接在原來的基礎上進行修改,以便加入測試應用。

首先,將之前創建好的 tye.yml 放置到 TyeTest.sln 的根目錄。

然后修改為如下形式:

tye.yml

name: mongo-sampleservices:  - name: mongo    image: mongo    env:      - name: ME_CONFIG_MONGODB_ADMINUSERNAME        value: root      - name: ME_CONFIG_MONGODB_ADMINPASSWORD        value: example    bindings:      - containerPort: 27017        connectionString: 'mongodb://${host}:${port}'  - name: mongo-express    image: mongo-express    bindings:      - port: 8081        containerPort: 8081        protocol: http    env:      - name: ME_CONFIG_MONGODB_ADMINUSERNAME        value: root      - name: ME_CONFIG_MONGODB_ADMINPASSWORD        value: example  - name: tyetest    project: TyeTest/TyeTest.csproj

對比之前,一共有兩處修改:

  1. 增加了 tyetest 服務配置的節點,以便能夠啟動測試應用

  2. 在 mongo 服務上增加了 bindings。這是 tye 中組織服務之間相互連接的一種方式。其中的 connectionString 便是其他服務連接 mongo 所使用的鏈接串。

修改完畢之后。使用 tye run 啟動應用。

打開 swagger 頁面,并訪問 API,便可以在 mongo express 中查看到數據已經成功完成了寫入:

如何在Tye中如何對數據庫進行鏈接

查看效果之后可以使用 Ctrl+C 停止 tye 以移除相關容器。

上述就是小編為大家分享的如何在Tye中如何對數據庫進行鏈接了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洛隆县| 霞浦县| 平凉市| 江城| 漳州市| 托克逊县| 酒泉市| 满洲里市| 田阳县| 玛沁县| 安徽省| 松潘县| 都兰县| 曲周县| 黑山县| 长岭县| 贡嘎县| 南木林县| 伊宁市| 乌什县| 铜川市| 改则县| 江津市| 濮阳县| 池州市| 昔阳县| 南和县| 墨脱县| 含山县| 柳林县| 威远县| 五莲县| 和政县| 高青县| 朝阳区| 兴山县| 甘德县| 泰和县| 东源县| 五家渠市| 通榆县|