Docker .NET服务使用来自Dynamics Navision的Web服务参考-更新MySQL数据库

Docker .NET服务使用来自Dynamics Navision的Web服务参考-更新MySQL数据库,docker,web-services,wcf,.net-core,grpc,Docker,Web Services,Wcf,.net Core,Grpc,我有以下应用程序结构: Web应用程序->Nuxt.js RESTAPI->.NETCore2.2(输出类型:控制台应用程序) 数据库->MySQL 它们中的每一个都有一个Dockerfile,并且位于docker compose文件中定义的容器内。我正在Linux容器中运行它们(使用Docker Desktop-Version3.0.0和Compose 1.27.4)。我有一个docker compose文件在本地运行,还有一个docker-compose.final.prod要部署。我正

我有以下应用程序结构:

  • Web应用程序->Nuxt.js
  • RESTAPI->.NETCore2.2(输出类型:控制台应用程序)
  • 数据库->MySQL
它们中的每一个都有一个Dockerfile,并且位于docker compose文件中定义的容器内。我正在Linux容器中运行它们(使用Docker Desktop-Version3.0.0和Compose 1.27.4)。我有一个docker compose文件在本地运行,还有一个docker-compose.final.prod要部署。我正在使用Hyper-V

那么我有:

  • WCF Server->.NET Framework 4.7.2(输出类型:类库)
  • WCF客户端->.NET Framework 4.6.1(输出类型:类库)
WCF客户端使用动态导航中的Web服务(SOAP)。MySQL数据库中存储的数据与我们在Dynamics Navision中从Web服务获得的数据相同。WCF客户端处理来自Web服务的数据,将其发送到WCF服务器,然后更新Web应用程序数据库(MySQL数据库)。WCF服务器连接到MySQL数据库

很快,此WCF服务使用Web服务的数据更新数据库

Dynamics Navision只能通过内部网访问(公司网络)。它需要VPN来访问。这就是为什么它是用两个WCF服务构建的:公司内部的一个服务(客户端)用于从Dynamics Navision获取数据,Docker内部的另一个服务(服务器)用于更新MySQL数据库

这两个WCF服务仅在本地工作,在本地更新MySQL数据库,但它们不在Docker容器中

一旦.NET Framework仅适用于Windows平台,我就无法将这两个WCF服务添加到Docker,因为我使用的是Linux容器。我尝试使用Windows容器,但在docker compose build上的REST API上出现错误:

  • 错误:服务REST-API生成失败由于虚拟磁盘系统的限制,无法完成请求的操作。虚拟硬盘文件不得压缩或加密,不得分散。
我做了研究来解决这个错误,但没有找到合适的解决方案。我想这是因为Windows容器的内存限制。根据这一点,.NET内核和.NET框架代码在Windows容器中占用了大量内存,因此我想我需要Linux容器中的容器。它还建议将.NETFramework转换为.NETCore。本文讨论了使用WSL-2的解决方案,但我只需要使用Hyper-V启动并运行它

WCF服务的主要目标是像后台一样更新MySQL数据库。每当有关于Dynamics Navision的更新时,用户(管理员)单击Web应用程序上的按钮,它就会调用WCF服务来更新MySQL数据库

我正在寻找一种方法,只创建一个服务,使用.NET Core(甚至是.NET Framework,如果可以使用Hyper-V将其集成到Linux容器中),该服务使用这些Web服务中的数据并更新数据库。如有必要,可采用不同的方法

我做了很多研究,我正在考虑创建一个使用Web服务的gRPC服务器,然后在Web应用程序上创建gRPC客户端。它允许我拥有一个独立的服务,但我不知道这是否是一个好方法,因为我已经有了一个RESTAPI

另一个选择是在RESTAPI中实现此功能并使用API上的Web服务,但我不太确定

到目前为止,我所做的是使用扩展名VisualRecode将WCF服务器转换为gRPC

注意:我正在使用Visual Studio 2019
->16.8.3版