0

我目前正在编写一个 Metro 应用程序,我想通过将托管 SQL 处理连接到我的 Web SQL DB 来在我的应用程序中集成托管 SQL 处理。

.NET 4.5 有哪些选择?

另外,如果您不赞成,请解释原因,我知道.NET 4 有一些 MySQL 连接器,但它显然与 4.5 不兼容

4

2 回答 2

5

我强烈建议客户端程序不要通过 Internet 直接连接到数据库服务器,原因如下:

  • 客户端库是围绕数据库在几毫秒之外的假设设计和构建的,尤其是非常健谈的协议(MSSQL 就是其中之一)。因此,短期操作可能需要相当长的时间。
  • 这是一项安全责任,您不仅将数据库服务器暴露在 Internet 上,而且还在应用程序中嵌入了连接详细信息(例如密码)。
  • 它不适合可扩展性。如果您引入多个负载平衡或故障转移数据库服务器,您将不得不重写您的客户端。
  • 它还假设不会有任何连接问题。许多网络(尤其是移动网络)限制端口 80/443 之外的活动,以防止滥用其网络(例如僵尸用户发起攻击)。

在这些情况下,理想的解决方案是为您的数据库开发 Web 服务前端;然后,您的应用程序将与 Web 服务而不是您的数据库进行交互。这还有其他优点。

当然,客户端(尤其是移动客户端)应该使用数据缓存,以便应用程序在离线时继续工作。

回到主题:假设您仍然想使用直接连接,那么我不明白为什么 MySQL 客户端库无法在 4.5 上运行。您可以修改程序集的清单/配置,以便它可以在 .NET CLR 的未来版本上运行(如果该库使用自删除后的类型和成员或依赖于更改的行为,您只会遇到问题。.NET 框架有向后和向前兼容性的良好声誉)。

于 2012-09-10T03:24:36.953 回答
0

通过 App Store 分发的 Metro 应用程序是沙盒化的,因此如果您使用 MySQL,您会遇到问题。如果你想要一个简单的数据库,我推荐 SQLite。如果您想确保可移植性,请避免使用任何“混合模式”实现——这里有一个“纯”.NET 实现:http ://code.google.com/p/csharp-sqlite/

您也可以使用大量 GUI 工具来管理和设计 SQLite 数据库。

于 2012-09-10T03:10:42.837 回答