客户机-服务器体系结构的最佳解决方案

2024-09-28 04:20:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个应用程序,它有两个逻辑部分

  1. 用Python编写的核心算法专有逻辑
  2. 桌面上的Winform应用程序

由于安全问题,我不希望在客户端公开我的核心算法。因为它是用python编写的,所以我想把它放在服务器上,我的Winform应用程序(C#.net)可以通过某种方式连接到服务器

请提供一些架构图来实现这一点,以便我能够保护我的核心算法


Tags: 服务器算法应用程序客户端核心net方式逻辑
1条回答
网友
1楼 · 发布于 2024-09-28 04:20:12

我能想到的最明显的解决方案是在*aaS解决方案上托管Python算法,并通过API公开您的算法

对于Python的*aaS提供程序,有很多选项,例如Azure Functions可能是您的一个选项。Azure/GCP/AWS这样的平台的一个优势是,它们非常成熟,将拥有通过API公开算法、管理安全性等所需的所有工具

Quickstart:使用Visual Studio代码在Azure中使用Python创建函数

基本架构

对于整体架构,简单来说,您只需将应用程序指向公开算法的API即可

enter image description here

  • 蓝色元素:您的代码/系统
  • 绿色元素:aaS运行时环境、主机、网络、存储等

在上图中,我假设:

  • 当您将算法迁移到*aaS平台上时,您将为其创建一个适当的API,以便桌面应用程序能够以合理的方式调用它
  • 您正在使用类似Azure函数(作为运行时)的东西,它可以作为API作为算法宿主,直接暴露于internet
  • 你的桌面应用程序有一个层,它可以很好地处理服务访问——就像你对数据库访问代码所做的那样,这样它就不会在你的应用程序中乱放
  • 您有一个配置文件(或其他机制),允许应用程序的操作员指向算法所在的位置

生产架构

上述(简单的)体系结构可以工作,但不是生产级的

enter image description here

  • 蓝色元素:您的代码/系统
  • 绿色元素:aaS运行时环境、主机、网络、存储等
  • 红色元素:DNS/网络,可能位于*aaS提供商外部,也可能位于其内部(或两者兼而有之)

说明:

  • 与简单的体系结构类似,只是我们添加了某种API网关,以便在请求到达*aaS平台时与您的服务实现分离。这样,您就可以在不影响消费者的情况下交换服务实现。适当的API网关还将提供更完整的管理和;操作特性
  • DNS,例如www.myawesomepythonalgorithm.net允许您控制将*aaS提供商服务流量发送到哪个*aaS提供商,假设您希望从Azure切换到GCP(并且假设服务URL结构相同)
  • 保安!图中未显示,但您可能需要决定如何保护算法免受未经授权的访问

相关问题 更多 >

    热门问题