千家信息网

如何在Tye中如何对数据库进行链接

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这期内容当中小编将会给大家带来有关如何在Tye中如何对数据库进行链接,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。下面我们来了解一下如何在 Tye 中如何对数据库进
千家信息网最后更新 2025年12月02日如何在Tye中如何对数据库进行链接

这期内容当中小编将会给大家带来有关如何在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();        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 _logger;        private readonly MongoClient _mongoClient;        public WeatherForecastController(ILogger logger,            MongoClient mongoClient)        {            _logger = logger;            _mongoClient = mongoClient;        }        [HttpGet]        public IEnumerable 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(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 中查看到数据已经成功完成了写入:

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

上述就是小编为大家分享的如何在Tye中如何对数据库进行链接了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。

应用 数据 链接 服务 数据库 中间件 实际 测试 字符 字符串 实际上 就是 应用程序 效果 程序 内容 容器 手动 方式 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 星际战甲 数据库 sql数据库数据怎么打开 陕西省监狱管理局服务器 可编程自动化控制器软件开发 长春智能法治文化展馆软件开发 关注青少年网络安全 mc小游戏服务器ip 网络安全职能管理部门 企业管理系统数据库 hp服务器怎么改家用电脑 python数据库查询结果遍历 网络安全手抄报字少简单 山东商机互联网科技烟台 毕业论文网络安全与对策 服务器网络稳定性测试 计算机网络技术论文答辩问题 长春软件开发优先吉网传媒好 软件开发可以做招商吗 广西数据网络技术分类标准 2022山东春考网络技术 软件开发管理维护心得 买买团app软件开发 湖南服务器硬盘回收云空间 苏州云商汇互联网科技做什么的 网络安全事件2级响应能力 服务器管理口怎么登录 乐亭软件开发承诺守信 wifi网络安全周 淄博食品软件开发报价 长宁区市场软件开发定制报价表
0