如何使 WPF 桌面应用程序可通过网络访问

How to make a WPF Desktop application accessible over a network

我正在设计一个使用 Entity Framework 连接到 MS SQL 服务器数据库的 WPF 应用程序。

应用程序从 Excel 文件中读取数据并将记录保存到数据库中。现在下一个要求是该应用程序应该可以同时供多个用户访问(公司网络),以便所有用户都可以在需要时 query/update 查看数据库中的数据。

我的想法是,我需要做的只是将数据库放在应该位于公司内部网络上的中央机器上,我的应用程序应该连接到该数据库并允许用户执行操作。

我需要对此当前连接字符串进行哪些更改?

<connectionStrings>
    <add name="TPMSContext" connectionString="metadata=res://*/TPMSModel.csdl|res://*/TPMSModel.ssdl|res://*/TPMSModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=Test-DELL;initial catalog=TPMS;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>

要让我的应用程序同时为多个用户工作,我还需要 implement/keep 记住哪些其他更改?

P.S:我的应用程序是 "ANY CPU",目标框架是 4.5。现在它是基于桌面的,但将来我们可能会使其基于网络,但现在我们只希望它是基于桌面的。

更新

这是我的解决方案资源管理器的视图。 TMPS 是我的主要应用程序。 TPMS.Data 包含我的业务逻辑和方法,通过 Entity Framework 提供与数据库的交互。 TPMS.Entities 将数据库表作为实体 类:

这种方法称为 3 层架构。您可以通过托管在 window 上的 WCF TCP/IP 来实现它。 您将在其他服务器机器上托管您的数据库交互业务逻辑,客户端将在另一台机器上使用这些 API。

你需要流畅的:

  • 使用 WCF 创建服务(Window)。
  • 主持它。
  • 生成代理(接口或合约)。
  • 将此代理分发给需要调用和使用此 API 的客户端应用程序。

您可以像下面这样创建您的应用程序架构:

  • 部署在服务器机器上:

    a) 数据库访问层(与数据库交互)。 b) 业务逻辑层(它将是数据库访问层的方法)。 c) 服务层(在这里创建WCF服务和调用业务逻辑方法)。 d) 将这些托管到服务器计算机中。

  • 客户端机器 - a) 使用 .svcutil 工具创建代理 class b) 使用此代理 class 到客户端机器以使用服务 (API)

参考:

Host a WCF Service