久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

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

157次閱讀
沒有評論

共計 4240 個字符,預計需要花費 11 分鐘才能閱讀完成。

這期內容當中丸趣 TV 小編將會給大家帶來有關如何在 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 控制 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 的連接字符串:

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

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

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

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

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

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

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

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

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

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

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計4240字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 绥化市| 辽宁省| 新田县| 葵青区| 新蔡县| 徐闻县| 青冈县| 茶陵县| 大冶市| 额敏县| 常德市| 竹溪县| 武威市| 团风县| 涞源县| 苍山县| 木兰县| 石棉县| 五寨县| 莱州市| 弥勒县| 星座| 垣曲县| 穆棱市| 吕梁市| 普陀区| 五河县| 上饶市| 万载县| 新绛县| 常山县| 铜山县| 永和县| 那曲县| 武陟县| 法库县| 栖霞市| 辽宁省| 彝良县| 砀山县| 丹凤县|