【问题标题】:Bundle WCF service along with Universal Windows App将 WCF 服务与通用 Windows 应用程序捆绑在一起
【发布时间】:2015-12-25 06:39:44
【问题描述】:

我意识到我们无法从 UWP 应用程序直接访问 SQL Server 数据库,因此必须使用 WCF 服务作为中介。 (这完全是愚蠢的,因为即使是像 MySQL 这样的竞争对手也为微软的运行时提供 API,而微软自己的 RDBMS 却没有!)

我对 WCF 没有任何经验,但是在学习了一些教程之后,我相信我可以制作一个 WCF 服务来与我的 SQL Server 进行通信(尽管我不喜欢让我的简单应用程序使用 3 层架构,这不应该强加给我)。无论如何,我不想在我的网站上托管这个 WCF 服务,因为我只为这个 UWP 应用程序做这个。有没有办法可以将此 WCF 服务与 UWP 应用程序本身捆绑/打包,以便服务仅在启动我的应用程序时在客户端计算机上运行,​​并在应用程序关闭/暂停/最小化时停止。

我正在开发的 UWP 应用程序,也有一个 WPF 版本和一个 Web 版本(在 ASP.NET 中),到目前为止,所有这些都连接到 MySQL 数据库,并且运行良好。最近我决定转向 SQL Server,因为我的所有软件都使用 Microsoft 技术,并且认为 SQL Server 会有更好的集成和支持。但现在我发现它恰恰相反,并考虑切换回 MySQL 数据库。

【问题讨论】:

  • 如果您已经有一个网站,为什么不直接使用 WebAPI 安全可靠地公开数据库,而不考虑您选择的底层技术?
  • @WiredPrairie 因为我不希望这个 UWP 与我的网站服务器通信并增加其负载,只是为了完成一个简单的任务,例如连接到位于完全不同服务器上的数据库。另外,我可能会决定停止网站。但我仍然希望 UWP 能够正常运行。
  • 我会切换回 MySQL,或者切换到使用 Azure Sql。

标签: wcf windows-runtime uwp windows-10-universal


【解决方案1】:

您不能将 WCF 服务(或 REST api)与您的通用 Windows 应用程序捆绑在一起。 UWP 应用在与 WCF 服务不同的 .NET 运行时上的沙盒环境中运行。您可以在 IIS 中运行 WCF 服务,或者甚至更好地创建一个自托管的 ASP.NET WebAPI 项目(因此不需要 IIS)来访问您的数据库。但此服务必须与应用单独安装

请注意,由于 UWP 应用程序在沙箱中运行,一些应用程序内数据库(如 SQLite)在此沙箱内,默认情况下您的其他应用程序(WPF、网站)无法访问(有一些黑客可以绕过这一点)。

所以我认为你最好的选择是坚持使用 MySQL 并使用MySQL connector

【讨论】:

  • 不,这些版本不在​​同一台机器上。这是一个休闲应用程序,因此用户可以选择使用他们想要的任何版本,因此我需要一个公共数据库驻留在我的服务器上,可以从用户选择的任何平台访问。很遗憾我不得不选择 MySQL 而不是微软自己的 RDBMS,即使是在微软的生态系统中制作应用程序也是如此。
  • 在这种情况下,我会创建一个简单的 REST api(ASP.NET WebApi、php、...)来从应用程序查询您的数据库并将其放置在某个 Web 服务器上。这样,即使用户不升级他们的应用程序,您也可以完全控制查询数据库的代码。
  • 这也是 WiredPrairie 在 cmets 中的建议。我陈述了我不选择这条路的原因。我想我现在会切换到 MySQL。
猜你喜欢
  • 2018-04-27
  • 1970-01-01
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 2013-03-16
相关资源
最近更新 更多