的特色图像。净值

PostgreSQL数据库往往健壮可靠。它们也能很好地与.NET版本应用程序,如自行车电子商务应用程序示例Pedal。

当踏板应用程序从单片转向微型服务-基于应用程序,连接到外部数据库有助于提高数据管理的效率和可靠性。这些组件是松散耦合的,使得组织、保护数据和根据需要扩展数据库变得更加简单。

本教程将指导您设置微服务以与PostgreSQL对话,正确处理数据,并保持最佳性能。您将了解网络、安全管理凭据、配置数据访问以及确保所有组件顺利通信。

正在检查。NET微服务

踏板最初是Java语言应用程序。然而,它的一个微服务,自行车服务,现在是一个。NET微服务。每个自行车条目都有以下自行车型号的主要代码:

使用系统;使用系统。组件模型。数据注释;使用系统。组件模型。数据注释。模式;命名空间RedHatPedalBike。型号{[桌子(“自行车”)]公共级自行车{[键][数据库生成(DatabaseGeneratedOption.Identity)]公共长Id{get;set;}[必需(ErrorMessage=“自行车名称不能为空。”)]公共字符串名称{get;set;}=“”;[必需(ErrorMessage=“自行车型号不能为空。”)]公共字符串模型{get;set;}=“”;[列(“date_created”)]公共日期时间创建日期{get;set;}[必需(ErrorMessage=“自行车价格不能为空”)]公共int Price{get;set;}公共字节[]图像{get;set;}[必需(ErrorMessage=“自行车的保修状态不能为空。”)][栏(“保修_状态”)]公共字符串WarrantyStatus{get;set;}=“”;}}

此代码表示Pedal系统中的自行车,具有以下属性姓名,型号,价格、和保修状态这是一部经典之作。NET实体模型,设计用于与数据库无缝协作。

该模型构成了ASP中Web API的基础。NET Core和连接的PostgreSQL web服务。客户端可以使用其端点访问和操作数据库数据,应用创建、读取、更新和删除(CRUD)操作

我们将微服务部署到红帽OpenShift使用源到图像(S2I)方法,重新生成现成的源代码映像。图1显示了正在运行的微服务。

这个。OpenShift控制台中显示的NET微服务。
图1:。NET微服务。

前提条件

本教程需要以下内容:

了解外部PostgreSQL环境

连接时。NET微服务到外部数据库,了解数据库设置很重要。本教程使用PostgreSQL作为服务,以避免安装和维护数据库的麻烦,包括应用备份和更新。这种方法可以减少对基础架构的关注,而更多地关注编码

连接时的主要注意事项。作为服务的PostgreSQL的NET应用程序包括:

  • 通过安全套接字层和传输层安全性(SSL/TLS)确保安全连接
  • 配置防火墙和网络的可访问性
  • 考虑数据库服务器的位置以提高数据传输速度
  • 在中正确设置连接字符串。NET应用程序

最佳设置有助于实现的平稳、安全和可扩展的数据库连接。NET微服务。

在中配置网络访问。NET on Red Hat OpenShift

连接您部署的OpenShift。NET应用程序到外部PostgreSQL数据库需要几个关键步骤。

答:。NET应用程序在OpenShift的容器化环境中运行,增加了一层网络注意事项。OpenShift的平台可以帮助您管理这些容器以及他们的网络互动。

您可以使用Npgsql 库,为您的应用程序设置网络访问,以便与PostgreSQL数据库通信。使用NuGet包管理器将Npgsql库集成到您的中。NET项目。

接下来,创建连接字符串。它提供了连接的所有详细信息。NET应用程序到PostgreSQL服务器,如下例所示:

string connectionString=“主机=my_Host;用户名=my_user;密码=my_pw;数据库=my_db”;

更换我的主机(_H),我的用户(_U),我的密码、和我的数据库包含PostgreSQL服务器的实际详细信息。

在容器化环境中运行应用程序需要使用安全连接(如SSL/TLS)并高效地管理资源。OpenShift的内置工具路由和服务配置有助于建立安全的网络通信。

在中建立安全凭据管理。净值

为了确保应用程序的安全性,请避免在源代码中硬编码数据库凭据。相反,请使用未存储在版本控制中的环境变量或配置文件。

您可以使用秘密管理员用于在本地计算机上创建机密的工具。在本地终端上执行以下命令:

dotnet user-secrets set postgres-username replace-with-your-postgres-用户名dotnet用户机密设置postgres密码替换为您的postgres密码

您可以使用配置管理器中的类。NET或中的IConfiguration接口。NET Core访问这些值,如以下代码所示:

var配置=构建器。配置;var用户名=配置[“postgres-username”];var password=配置[“postgres-password”];//用实际环境变量替换连接字符串中的占位符var connectionString=构建器。配置。GetConnectionString(“默认连接”).Replace(“{USERNAME}”,用户名).替换(“{PASSWORD}”,密码);

当前的方法将敏感信息存储在本地计算机文件夹中,但您可以使用OpenShift的秘密管理而不是功能。创建一个YAML文件,如下所示:

api版本:“v1”kind:“秘密”元数据:name:“我的秘密”字符串数据:mysecretconfig:'{“postgres-username”:“wllyumrq”,“postgres-password”:“your-postgres-password“}”

然后,使用oc公司命令类似于以下命令以创建密码:

oc创建-f mysecret.yaml

正在设置。PostgreSQL的NET数据访问

集成时,建立健壮的数据访问层是非常重要的。NET应用程序和外部PostgreSQL数据库。此方法涉及配置连接字符串和选择适当的数据提供程序。

连接字符串包含与数据库建立连接所需的信息。英寸。NET,通常在配置文件中定义它(如appsettings.json(应用设置.json)英寸。NET核心)。

下面是PostgreSQL连接字符串的示例:

“ConnectionStrings”:{“DefaultConnection”:“主机=pom.db.elephantsql.com;端口=5432;数据库=wllyumrq;用户名={Username};密码={Password};信任服务器证书=true;”}

实体框架(EF)核心对象关系映射(ORM)工具启用。NET开发人员使用。NET对象来处理数据库,消除了大多数数据访问代码。按照以下步骤进行设置。

创建模型

在C#类中定义数据模型,就像前面的Bike模型一样。

使用DbContext

创建继承自的上下文类数据库上下文。将其配置为与PostgreSQL一起使用Npgsql,如下所示:

公共类BikedbContext:DbContext{public BikedbContext(DbContextOptions<Bikedb上下文>选项):base(选项){}公共虚拟数据库集<Bike>Bike{get;set;}}

管理迁移

EF Core的迁移有助于管理数据库模式更改。使用以下命令迁移和更新数据库:

添加迁移初始化提交
更新数据库

实现数据库连接

在中实现数据库连接。NET7应用程序,您将使用EF Core或其他ORM配置连接字符串以进行数据操作,并添加健康检查以监视PostgreSQL数据库。

以下自行车模型显示了数据库上下文中的类。净值7:

使用Microsoft。实体框架核心;使用RedHat踏板自行车。模型;公共类BikedbContext:DbContext{公共数据库集<Bike>Bikes{get;set;}public BikedbContext(DbContextOptions<Bikedb上下文>选项):base(选项){}受保护的覆盖void OnModelCreating(ModelBuilder ModelBuilder){模型生成器。实体<自行车>()。ToTable(“自行车”);}}

将ORM与您的集成。NET微服务,在中注册DbContext。NET Core的依赖注入容器。通常,您可以在程序.cs使用如下代码创建文件:

var builder=Web应用程序。CreateBuilder(参数);//将服务添加到容器中。建设者。服务。AddDbContext<踏板自行车Context>(选项=>选项。UseNpgsql(builder.Configuration.GetConnectionString(“踏板自行车连接”));var app=构建器。构建();//剩下的代码,包括本文中已经介绍的代码片段应用程序。运行();

.NET 7支持添加健康检查以监视PostgreSQL数据库的可用性和性能。为健康检查服务向Program.cs添加以下代码:

//将服务添加到容器中。建设者。服务。添加健康检查().AddNpgSql(connectionString);应用程序。使用端点(端点=>{//映射健康检查端点端点。MapHealthChecks(“/health”);});

此代码创建一个/健康端点。当您访问端点时,它会运行健康检查并返回应用程序和数据库连接的健康状态。

确保安全通信

您可以在中保护PostgreSQL数据传输。NET 7,通过加密数据库连接字符串并使用SSL/TLS。例如,将以下代码添加到Program.cs文件以设置数据保护服务:

var builder=Web应用程序。CreateBuilder(参数);建设者。服务。AddDataProtection();//其他服务配置。。。

使用以下代码对存储的连接字符串进行加密并解密以供使用:

var protector=服务提供商。GetDataProtector(“ConnectionStrings:Protect”);var encryptedConnectionString=保护器。保护(“your-connection-string”);var decryptedConnectionString=保护器。Unprotect(encryptedConnectionString);

你可以存储加密连接字符串在您的配置和使用中解密连接字符串连接到数据库。

SSL/TLS对于在之间安全传输数据至关重要。NET应用程序和PostgreSQL数据库,需要双方进行SSL配置。要在PostgreSQL中启用SSL连接,请在服务器端设置ssl协议选择并提供有效的SSL证书。

在中启用SSL。NET连接字符串,将该字符串修改为需要SSL,如下所示:

“ConnectionStrings”(连接字符串):{“PostgreSqlConnection”:“主机=myhostname;端口=5432;数据库=mydbname;用户名=myusername;密码=mypassword;SSL模式=必需;信任服务器证书=true”

然后,在SSL握手期间验证服务器的SSL证书以确保安全。NET到PostgreSQL的连接。

验证连接

接下来,通过验证来确保功能。NET 7应用程序与PostgreSQL数据库的连接。使用配置的连接字符串执行基本测试:

using var context=new PedalBikeContext();尝试{上下文。数据库。OpenConnection();慰问。WriteLine(“连接成功”);}catch(异常ex){慰问。WriteLine($“连接失败:{ex.Message}”);}最后{上下文。数据库。CloseConnection();}

建立基本连接后,运行以下简单查询:

using var context=new PedalBikeContext();尝试{var bikeCount=上下文。自行车。计数();慰问。WriteLine($“数据库中的自行车数量:{bikeCount}”);}catch(异常ex){慰问。WriteLine($“查询失败:{ex.Message}”);}

代码段使用踏板自行车上下文要建立数据库连接,请统计Bikes表中的自行车条目数,并打印计数(如果查询失败,则打印错误消息)。

在OpenShift上部署和构建应用程序

部署时。NET踏板微服务到Red Hat OpenShift,使用S2I框架简化构建过程。属性将应用程序的源代码自动转换为可部署的容器映像。NET 7运行时。OpenShift使用源存储库中的配置和。NET7S2I构建器映像来有效地处理构建和部署,获取代码并将其打包到容器映像中。

您可以使用命令生成应用程序如下所示。

oc new-app网站:7.0~https://github.com/your_project网站-e DOTNET_STARTUP_PROJECT=您的项目.csproj-e DOTNET_ASSEMBLY_NAME=您的项目.csproj

结论

现在您已经完成了连接的基本步骤。NET 7应用程序到外部PostgreSQL数据库。您学习了如何在OpenShift中配置网络访问,强调安全连接和正确的网络策略,然后建立了安全凭据管理。

接下来,您进行了配置。NET数据访问PostgreSQL使用实体框架,通过集成ORM工具和实现了数据库连接。NET微服务,并设置运行状况检查。现在您知道了如何使用加密的连接字符串和SSL/TLS保护通信,并验证连接,确保应用程序可以有效地与数据库通信。

安全和高效的数据访问在这个微服务体系结构中发挥着关键作用,增强了。NET应用程序在现代云环境中的性能和可靠性。

现在,您已经准备好在您的内部调整和扩展这些实践。NET应用程序。这确保了更健壮、安全和可扩展的解决方案,并与企业级应用程序开发的不断变化的需求保持一致。接下来,考虑探索其他资源与一起工作。NET和Red Hat.