2

首先,我看了一下她关于这个问题的每一个相关话题。然而,他们都没有成功地完全回答我的问题。

目前我正在开发一个用 C#/wpf 编码的桌面应用程序,它需要 MySQL 连接来进行身份验证和存储用户自定义列表等。

但是,问题在于,显然允许每个人远程连接到 MySQL 数据库并不是一个好的做法。此外,我当前的主机需要将 IP 列入白名单,然后才能连接到数据库。

我对此有什么选择?

先感谢您

4

2 回答 2

4

您应该考虑创建一个 Web 服务 (SOAP)、http web-api (REST) 或其他一些中间件来抽象您的数据存储。

这有以下好处:

  • 允许您将大部分业务逻辑从桌面应用程序移到中间件中
  • 允许您将业务逻辑排除在可能成为瓶颈的 sql 之外
  • 允许您在不重新分发桌面应用程序的情况下更新业务逻辑(如果您无法直接控制所有桌面,则更容易)。
  • 允许您控制身份验证(许多 Web 服务器都有自己的模块、身份验证方法)。您的应用程序将在其自己的服务帐户下控制访问和访问存储。
  • 允许您完成更改数据存储(假设将来您将一些存储在 sql 中,一些存储在 mongodb 中,一些存储在云存储中 - 再次,无需更新所有桌面。
  • 允许您扩展前端,甚至可能扩展后端存储(例如,读/写数据库副本)

如果您已经在使用 C#,那么新的 MVC4 web-api 应该很合适。在这里阅读更多:

http://www.asp.net/web-api

如果您走这条路,您可以控制服务中的访问,并让您的服务通过连接字符串中的凭据访问数据库,或者如果您使用 IIS,应用程序池上的凭据映射到您的站点。

如果您要交付您的桌面应用程序(您没有托管数据库),那么如果您的客户不想安装/管理 IIS,您也可以在它自己的 exe 中自行托管 web-api。

最后,如果您的 mysql 在线,您的中间件可能在云中(天蓝色等...)

于 2012-08-17T11:45:49.777 回答
2

创建一个 Web 服务,例如使用 WCF 或 MVC Web API,您的应用程序可以在其中传递其凭据并进行身份验证。我建议使用 https 来保证传输安全。

于 2012-08-17T11:56:40.507 回答