【问题标题】:WPF with arbitrary, unknown databases - Client/Server or Desktop app?带有任意未知数据库的 WPF - 客户端/服务器或桌面应用程序?
【发布时间】:2011-12-14 17:24:00
【问题描述】:

我的公司正计划将旧版 Winforms 应用程序转变为 WPF/Silverlight 客户端/服务器应用程序。

拥有一个小型服务器应用程序的想法是拥有一个可访问数据库的列表以及可以访问每个数据库的用户类型,而不是必须在每个客户端的管理控制中管理数据库。此外,如果 SQL 请求由服务器处理并返回结果,那就太好了。

该应用程序应该在任意一组数据库上工作,这些数据库将向服务器“注册”,并且用户根据他们的身份验证权限获得一个数据库列表。然后,他们几乎可以在这些数据库上做任何可以想象的事情。系统应该能够处理多达 200 万行。

数据库非常不同,可以有很多,可以是 MS Access、Oracle、SQL Server 等,所以我之前无法指定它们。最重要的是,需要与 SQLite 缓存进行通信。 我已经拥有了来自 Winforms 应用程序的 SQL 查询所需的一切。

我在想:

1) 一个简单的 WCF 服务器,在配置文件中指定每个用户类型的可用数据库。

2) 指定可以对服务器进行的所有必要 SQL 查询的接口。

3) 客户...

这个想法是: 客户端-服务器应用程序,客户端使用 WCF 服务通过调用服务方法对表执行 SQL 查询(INSERT、UPDATE、SELECT 等)。

理想情况下,该服务应可用于 WPF 和 Silverlight 应用程序。

这是要走的路吗?在格式、通信、服务等方面,我可能想利用哪些现有技术。

如果这有问题,我会考虑回到桌面应用程序,但是如何缓解每个客户端的用户类型/数据库访问问题?

【问题讨论】:

  • 数据库是否都具有相同的架构?它们“大部分”相似吗?还是它们完全不同?
  • 我在我的问题中添加了更多信息。基本上,没有办法在数据库之间找到共同点,因为该应用程序是一个数据建模应用程序,并不适用于特定环境或特定任务。

标签: wpf wcf client-server wcf-data-services


【解决方案1】:

我会坚持使用 ADO.NET 并从 DbProviderFactory 类开始。这将使您可以根据提供者使用工厂设计模式提供的信息来确定正确的数据库访问权限。因此,不必为每种数据库类型和数据库创建专门的对象,您可以使用 DbProviderFactory 抽象该逻辑。

这是一个显示一些示例的链接:http://msdn.microsoft.com/en-us/library/wda6c36e(v=VS.100).aspx

【讨论】:

  • 谢谢,这对服务器端来说似乎很容易。我应该如何处理来自客户的请求和响应的通信和格式?
  • 您的客户是在更新数据库还是只是从中读取值?您的客户端缓存是否需要将更新发送回服务器?
  • 原始数据库将以只读方式访问,但数据可以再次以所有可能的格式写入新位置。
猜你喜欢
  • 2011-06-10
  • 1970-01-01
  • 2016-10-24
  • 1970-01-01
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 2011-07-29
  • 2018-06-14
相关资源
最近更新 更多