我从未在Windows窗体应用程序和SQL Server之间构建任何可用于服务的东西。现在我有需要。
有人建议从哪里开始?或者,如果有一种简单的方法可以将我的Windows窗体应用程序转换为在服务上运行吗?
到目前为止我所学到的一些背景和信息:
背景
我一直在构建一个客户端服务器应用程序(.Net 4.5),用于访问SQL Server作为服务器部分(2008或2012)。
现在公司已经说过SQL Server无法在互联网上“打开”,我们需要一个服务来运行,该服务可以访问SQL Server。
我们是大公司中唯一拥有客户自行访问软件的部门。
旧的应用程序是FOXpro并且必须努力工作以保持多个用户的工作等。选择使用SQL Server Express,但我们的客户可以在系统上安装Foxpro,但不能正确安装SQL Server Express (可能会失去10-20%的客户)。我的老板希望使用SQL Server为我们的客户托管数据库,这是我们已经开发了一年的开发路径。我最近在应用程序中添加了Entity Framework(版本5),但并非所有这些都是使用它构建的(可能5%使用EF),我认为如果有助于找到解决方案,我可以相当快地完成所有这些操作。
到目前为止已了解
我已经看了很多东西,但所有这些都使用了OData服务,这似乎使得当前的客户端应用程序代码都毫无价值。基本上我看起来需要构建一个ASP.Net Web应用程序,而不是我们投入超过10万美元的Windows Forms应用程序。
显然情况并非如此,我遗漏了一些东西。但在互联网上大约一个小时后,我开始惊慌失措。我不清楚我是否可以使用OData来创建我的Windows窗体客户端应用程序,如果是这样的话。我在OData上看到的一切都指向构建Web应用程序。
稍微多一点背景 300-500个已安装的用户 - 大约200-300个数据库/客户端(所有客户端都有自己的数据库)。
2013年7月25日更新 当我说每个客户端都有自己的数据库时,我的意思是每个客户端都有我们服务器上的数据库。没有计划自助服务。旧的方式是自助服务,新的为什么不自助服务。 2013年7月25日结束更新
问题,再次
有人建议从哪里开始?或者,如果有一种简单的方法可以将我的应用程序转换为在服务上运行吗?
答案 0 :(得分:1)
您必须选择要通过网络传递的数据传输对象类型。传统上,这是DTO(数据传输对象),(在严格的dotnet世界中)DataSet(只是花哨的xml),或Xml .....并在那里添加JSON。
您的服务将公开方法。因此,您不必与Sql Server交谈,而是与服务进行通信。您的客户端应用程序应该不知道您选择了哪种RDBMS。
我会选择WCF。 “Web Api”也是一个新事物。有些人认为它是WCF的替代或升级。我认为他们制作Web Api是因为WCF很复杂,因为有很多选择。 WCF中的配置是“神奇的”,一旦你做对了,它很好,但有时可能会有麻烦。
如果您使用WCF,而您的客户端只是DotNet客户端,那么我会使用Type-Sharing。这是我的第一选择。当我认为可能有非DotNet客户端的可能性时,我只会离开表格类型共享。
我会读这篇旧文章。
http://msdn.microsoft.com/en-us/library/Ee817644(pandp.10).aspx
如果你把“Json”扔到他们的“传递什么”的列表中,你会更清楚地掌握这个“我正在传递的东西”的想法。 “商业实体”对他们来说意味着DTO或POCO对象。
如果原始应用程序遵循上述#5的良好实践,那么您应该能够启用Type-Sharing WCF。我不是说它是“剪切和粘贴”,但它是可行的。
如果你的“架构”不像层次分离和关注点分离,那么你就处于一个受伤的世界。如果原始代码中的SqlConnection无处不在,那么你就会受到伤害。
前期设计不良使公司最终损失10倍,100倍,100,000倍。 不知道为什么有些人不明白这一点。
祝你好运。缺陷: “只需连接一些Web服务asmx页面”。这是一个常见的“补丁”。这是非常2003年的。这不是2013年的正确方法。