如何在线上传/访问数据库

时间:2018-03-22 09:56:43

标签: c# mysql winforms

我的商店里有一个小型POS系统,我想创建一个新的应用程序并将其安装到我的笔记本电脑,问题是即使在很远的地方也可以访问数据库。我可以在哪里上传我的数据库,以便通过互联网访问?

我正在使用MySQL和C#windows表单应用程序。

1 个答案:

答案 0 :(得分:1)

您的问题听起来更像是系统架构,而不是基于实际代码的问题。

如果您想在外出时访问POS数据库,那么有几种解决方案。

  1. 即使您身在校外,也可以使用VPN /隧道安全地访问内部网络。然而,这可能很难设置。

    1. 您可以将POS数据库移动到云端 - 使用AWS,Azure等服务使您的数据库可以在全世界范围内访问。然而,这确实存在安全风险,因为为了您访问数据库,您需要将数据库端口暴露给整个世界,然后人们可以开始尝试强制密码。
  2. 我实际建议的解决方案是,您确实将数据库放在云端,但要确保数据库端口对外界是封闭的。如果您希望从数据库获取数据,可以通过与数据库在同一台计算机上托管的MVC Web服务应用程序来实现。 这样,您就可以使用自定义应用程序逻辑控制对数据库的访问。

    因此,让我们想象一下如何实施

    您向端点发送JSON Rest请求:

    https://example.com/POSAPI/GetTransactions
    
    {
       "SessionToken:"j9hf928hjo2ij09kr8023",
       "FromDate":"20-02-2018",
       "ToDate":"29-02-2018",
       "AmountToReturn":"45"
    }
    

    然后根据您提供的SessionToken进行身份验证 - 此值将对用户进行5分钟的身份验证等

    来自端点的响应将发回FromDate和ToDate之间发生的45个事务。

    如果是基于客户端的应用程序,大多数人都会同意您的C#应用​​程序不应直接访问数据库。 C#应用程序可以轻松拆解以获取存储的凭据。 最好将数据库访问权限限制在基于Web的API上,并通过该API控制数据流和访问。

    我很欣赏这可能是一个学习曲线,可能不是您希望的最简单的解决方案,但大多数人会同意直接数据库访问通常存在安全风险并使用API​​与数据库交互通常是最佳做法。