使用Web服务通常是一个很好的架构方法。并且,随着.Net中WCF的出现,它变得更好了。
但是,根据我的经验,一些人似乎认为Web服务应该总是在数据访问层中用于调用数据库。我不认为web服务是通用的解决方案。
我想用几十个用户的较小的内部网应用程序。 Web应用程序及其Web服务部署到一个Web服务器,而不是Web服务器场。今后不会有另一个网络应用程序可以使用这个特定的Web服务。在我看来,调用Web服务的成本不必要地增加了Web服务器的负担。对进程间调用的性能影响。维护和调试Web应用程序和Web服务的代码更复杂。所以是部署。我只是看不到在这里使用Web服务的优势。
可以通过创建两个版本的Web应用程序,有和没有Web服务,并做压力测试,但我没有做到这一点。
你对使用网络服务的小规模网络应用程序有意见吗?任何其他场合,当Web服务不是一个好的建筑选择?
解决方法
Web服务是数据访问的一个绝对可怕的选择。这是一个开销和复杂性几乎零利益。
如果你的应用程序要在一台机器上运行,为什么拒绝它进行数据访问调用?我不是说从你的UI代码直接访问数据库,我说的是抽象你的仓库,但仍包括他们的程序集在你的运行网站。
有些情况下,我推荐Web服务(我假设你的意思是SOAP),但主要是为了互操作性。
服务的粒度在这里也是问题。 SOA意义上的服务将封装操作或业务流程。数据访问方法只是该过程的一部分。
换一种说法:
- someService.SaveOrder(order); // <-- bad // some other code for shipping,charging,emailing,etc - someService.FulfillOrder(order); //<-- better //the service encapsulates the entire process
Web服务为Web服务的目的是不负责任的编程。