您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何在Tye中如何對數據庫進行鏈接,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
下面我們來了解一下如何在 Tye 中如何對數據庫進行鏈接。
絕大多數服務都需要用到外部中間件來支持應用程序的正常運行,通常來說,就包含有數據庫、緩存中間件、消息隊列和文件系統等等。
因此,在開發過程中需要在應用程序中管理對這些中間件的鏈接字符串。
Tye 提供了一種方式以便更加容易的管理這些鏈接字符串。
首先,我們使用 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 進行連接。
創建測試應用,并安裝必要的包:
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
放置到 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
以移除相關容器。
上述就是小編為大家分享的如何在Tye中如何對數據庫進行鏈接了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。