使用Web服务通常是一种优秀的体系 struct 方法.而且,随着.Net中WCF的出现,它变得更好了.

但是,根据我的经验,有些人似乎认为,在数据访问层调用数据库时,应该始终使用web服务.我不认为web服务是通用的解决方案.

我在考虑只有几十个用户的较小的Intranet应用程序.Web应用程序及其Web服务部署到一台Web服务器,而不是Web场.future 不会有另一个网络应用程序可以使用这种特定的网络服务.在我看来,调用Web服务的成本不必要地增加了Web服务器的负担.进程间调用会影响性能.维护和调试Web应用程序和Web服务的代码更加复杂.部署也是如此.我就是看不到在这里使用Web服务的好处.

人们可以通过创建两个版本的Web应用来测试这一点,有Web服务的和没有Web服务的,并进行压力测试,但我还没有这样做.

您对使用web服务开发小型web应用程序有何看法?在其他情况下,web服务不是一个好的架构 Select 吗?

推荐答案

Web服务对于数据访问来说绝对是一个可怕的 Select .它的开销和复杂性几乎为零.

如果你的应用程序将在一台机器上运行,为什么要拒绝它进行进程内数据访问调用?我不是说从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服务是不负责任的编程.

Asp.net相关问答推荐

包含Include的低速EF核心查询

更新剃须刀页面中图表的值

页面刷新后如何存储JS Select 数据

为什么 Web 架构应该是松耦合的?

IE10 SCRIPT5009:__doPostBack未定义

ASP.Net - App_Data & App_Code 文件夹?

System.Web.Helpers.Crypto - 盐在哪里?

在 C# 中以编程方式添加元标记

如何从以特定名称开头的 appsettings 键中获取所有值并将其传递给任何数组?

控制器 SessionStateBehavior 是只读的,我可以更新会话变量

如何从 RouteData 获取路由名称?

用于链接字符串中的 url 的 C# 代码

为什么 Asp.Net Identity IdentityDbContext 是一个黑盒?

如何在 ASP.NET 中仅在调试模式下执行代码

缩小失败.返回未缩小的内容

使用 Asp.Net MVC 和 Web Api 配置 Ninject

Request.Cookies 和 Response.Cookies 之间的区别

如何在 .NET Core 中实现 DbContext 连接字符串?

连接字符串正确时出现实例失败错误

Session.Clear() 与 Session.RemoveAll()