我想使用WPF和MVVM在C#中开发一个简单的Windows窗体应用程序,它将连接到安装在不同计算机上的SQL服务器。所以我读过,即使对于这样的简单结构,一些开发人员也会使用WCF并使他们的应用程序面向服务。我完全理解SOA是使用WebApps和SilverLight的方式,但我不明白为什么,对于像Winform和SQL Server这样的简单情况,有人会使用WCF。如果有人能给我一些很好的理由,为什么在我的WinForm应用程序中使用WCF(考虑到SQL Server将与客户端在同一网络中),我真的很感激?
谢谢, ARIS
答案 0 :(得分:2)
如果您不需要,请不要使用它:)
但您应该考虑是否有计划更改应用程序 - 例如,将其转换为Web应用程序或Silverlight。在这种情况下,拥有一个执行数据库访问的服务将使转换更容易。就个人而言,我认为这通常是过度工程,但如果你预见到在不久的将来会有这样的变化,它可能对你的应用有意义。
答案 1 :(得分:1)
你必须使用WCF吗?不。
在我看来,没有太多理由不为这类工作创建WCF服务。
将WCF服务用于不同的层而不是类库是一种很好的方法。使用WCF,您可以控制组件的托管方式(IIS和http一直到使用命名管道进行处理)以及它们的位置。
WCF不会增加太多开销,反过来又会带来很多好处。
关键不一定是担心SOA,而是更多地考虑灵活性和更好的重用。
答案 2 :(得分:0)
除了习惯,我想不出一个特别令人信服的理由。如果你对99%的项目以同样的方式做事,那么如果它没有积极地满足你的要求,那么对于另外1%的项目来说,同样容易做到这一点。
我能想到的另一个原因是,如果你正在写一些可能在外部或作为网络应用程序真正有用的东西。在该实例中使用WCF将允许任何可以连接到主机(Web浏览器,外部应用程序或其他)的客户端连接到您的库,而无需事后修改。
如果您知道(相对)确定这只是在您自己组织的员工的桌面上运行的Windows应用程序,我认为没有理由在此实例中使用WCF。
答案 3 :(得分:0)
底线是您在网络上,因此WCF或任何Web服务都有意义。
您的网络电话都将是异步的(或者应该是!)。使用WCF很容易。与直接连接不同。
即使WinForm应用程序最近都已连接。
答案 4 :(得分:0)
我个人不相信为所有事情创建服务,只是为了创建服务。当您知道您拥有该服务的消费者时创建服务。不要只是说,“好吧,我们可能有一天会从其他应用程序中使用它”,并称之为服务的借口。
应该规划服务。服务合同应该是消费者要求的合同。没有消费者,没有合同,所以没有服务。