将带有SQL Server后端的Windows窗体应用程序迁移到Silverlight

时间:2012-03-30 19:42:32

标签: sql-server winforms silverlight migration

目前,我有一个Windows窗体应用程序,它从我们LAN中单独服务器上的SQL Server数据库中获取数据。基本上我们希望尽可能多地重用与SQL Server数据库交互的源代码,并将表单部分更改为瘦客户机Silverlight解决方案。问题是我们的Windows窗体应用程序是胖客户端应用程序;但是,我们公司最近增加了几千英里外工作的员工,因此他们在使用我们的应用程序时会有很长的延迟,因为它从数据库服务器检索数据,这远离员工的客户端表单应用程序。

对我来说,理想的解决方案是允许开发人员在运行时动态显示基于各种数据库表或视图的数据,这取决于用户点击的树视图项,而不必在设计时对数据库模式进行硬编码。这是我们的Windows窗体应用程序目前的工作方式。

我正在努力解决的Silverlight的一个方面是,如果你想从Web服务器端的SQL Server数据库访问数据,你必须使用Web服务或WCF RIA,这当然涉及创建设计时EDMX文件或生成LINQ to SQL类。问题是我们的数据库模式经常变化,这意味着我必须手动重新更新Web服务以及EDMX和/或LINQ to SQL。我真正想做的就是使用ADO.NET连接到SQL Server数据库,以填充各种silverlight数据网格,而无需处理Web服务。请注意,我对Silverlight很新,所以也许我错过了一些明显的东西。

这是我检查过的许多链接中的一个,因为我一直在研究这个解决方案;但是,这只是将已经拥有Web服务的Windows窗体应用程序迁移到具有类似Web服务的silverlight应用程序,因此它似乎不适用于我的情况:

http://www.silverlight.net/learn/advanced-techniques/moving-from-windows-forms/migrating-a-windows-forms-application-to-silverlight

这是我一直密切关注的另一个网站;但是,我正在使用的数据库是如此巨大,并且具有如此庞大的模式,每当我尝试打开或使用Visual Studio中的数据 - >显示数据源或数据 - >添加数据源窗口时,它需要一小时的CPU在全节流下运行,然后在visual studio中显示值。当然,如果每次尝试在silverlight XAML设计器中进行更改时都会发生这么长时间的等待,这会使Visual Studio几乎无法使用:

http://msdn.microsoft.com/en-us/gg315272

此外,上面的网站示例不是一个可接受的解决方案,因为我们希望Web服务器和数据库服务器是两台独立的机器,因此我们无法将数据库放入silverlight解决方案的App_Data文件夹中。 / p>

如果任何人在迁移此应用程序方面有任何建议或指导,他们将非常感激。 TIA。

罗杰

1 个答案:

答案 0 :(得分:0)

基本上我发现因为我习惯于编写直接与数据库(例如SQL Server)通信的桌面应用程序,所以我很惊讶地发现Silverlight中没有对象可以让你这样做(SqlConnection, OdbcConnection等)。这是因为Silverlight是一个客户端平台,旨在从世界上任何地方的浏览器中运行,因此它无法直接访问数据库,因为数据库通常隐藏在防火墙后面。服务的目的是提供一个接口,用于公开从服务器公开数据,充当数据库中的数据和外部应用程序之间的管道。 (来源:Chris Anderson撰写的“Prolight Business Applications with Silverlight 5”)

请注意,在创建DomainService并将整个数据库中的所有表,查询和存储过程分配给它时,我也犯了一个错误,实际上需要为每个表创建单独的域服务或查询。这就解释了为什么在我需要等待大约一个小时才能填充数据源窗口之前我遇到了问题。