【发布时间】:2016-04-17 21:30:27
【问题描述】:
我正在编写一个将提供给许多客户端的应用程序,为了不允许他们直接访问我的数据库,我开始使用 C++ 开发一个服务器应用程序,它接收客户端请求、与数据库交互并发送回应。但这似乎有点复杂,让客户端应用程序与远程数据库交互会更好吗?这样做有什么风险吗?
第一个解决方案:
【问题讨论】:
-
只是一个建议。为什么不使用 RESTFUL api 呢?
标签: c# c++ client-server
我正在编写一个将提供给许多客户端的应用程序,为了不允许他们直接访问我的数据库,我开始使用 C++ 开发一个服务器应用程序,它接收客户端请求、与数据库交互并发送回应。但这似乎有点复杂,让客户端应用程序与远程数据库交互会更好吗?这样做有什么风险吗?
第一个解决方案:
【问题讨论】:
标签: c# c++ client-server
通常您会使用接口抽象数据库。经典是 odata,Visual Studio 可以通过向导将其构建为 asp Web 服务。正如 Joakim 建议的那样,这很安静。 https://en.wikipedia.org/wiki/Database_abstraction_layer
【讨论】:
有多种选项,例如 'tim' 提到的选项,可以在不使用 ODATA 的情况下完成;这意味着创建一个数据层(单独的应用程序),它将满足来自客户端的请求,并且不会让他们直接访问数据库。但是,在建议之前我想知道您是如何托管 Web 应用程序的? 您仍然可以通过阻止对数据库的远程访问来实现客户端无法访问。 这些问题取决于您的代码和结构;两种方法都有效!
【讨论】:
如果您有 C# 客户端,为什么不使用 C# WCF 服务器?
你在灵魂 1 中所做的通常是最佳实践。 它允许您: *稍后切换数据库。 *对您的客户隐藏数据库的结构。 这意味着如果有人反编译您的客户端,他们将不知道如何攻击您。
但是它更复杂,需要大量额外的工作。
如果您不担心有人会入侵您的数据库。 而且您知道数据库结构只会发生非常小的变化EVER。 你可以跳过这一步,直接与数据库对话。
但你可能错了。
【讨论】: