通过WebReference或通过实例化在同一网站内部使用Web服务之间的性能

时间:2012-07-03 22:22:00

标签: c# asp.net performance web-services

看看我对使用同一个WebSite / WebApplication中的WebService更快/最好的事情感到担忧。

想象一下,我在同一个网站上有20个页面和1个WebService。

在每个页面中,我必须使用WebService中的所有内容...

但我担心的是它应该如何消费?我应该添加我的WebService的webreference,它位于同一个网站中,并使用该Web服务的代理生成所有内容。或者我应该像普通类一样直接实例化WebService并使用方法?

我知道(或者我认为)最佳做法是将其作为SOA规范的webService使用,并在我的解决方案中将WebService放在另一个网站中。

但我的理由是,使用WebService需要通过此协议发出请求的http协议,而Web服务会将响应序列化......

我想重要的是,My WebService的web方法可以返回多个记录/信息/数据,因此序列化步骤可能是一个问题或性能问题。

我正在寻找最好的方法。

我应该将WebService移动到另一个站点并在我的页面中使用它吗?即使表现会受到影响?或者我不应该?如果是的话,多少钱?它会花费吗?或影响不大?

如果我应该移动WebService会影响我是否像http:// localhost那样使用它而不是... 192.168.1.1,或者是一个域名而不是localhost?它是相同的还是会影响某些东西?

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

  

但我的理由是,使用WebService需要http协议   谁通过此协议提出请求,以及Web服务序列化   回应......

你的推理绝对正确。如果您在同一个项目中,则无需在无用的HTTP请求中浪费CPU周期。您可以直接调用Web服务方法已使用的相同存储库层。如果您需要非.NET客户端来使用它,您仍然可以使用可互操作的格式(例如SOAP)公开Web服务,否则我认为它不是必需的。实际上为什么你首先开发了一个Web服务?我猜你对未来的消费者有一些期待?经验法则是始终将可重用的服务域逻辑封装到服务层中,然后根据谁需要使用它,直接使用实现此功能的程序集(如果我们讨论的是.NET客户端)或者您需要互操作性,使用WCF使用可互操作协议公开此服务层非常简单。

但是,如果您对确切的数字感兴趣,请不要犹豫,执行一些负载测试,并比较直接从您的cinsuming Web应用程序中调用.NET方法和使用可互操作的HTTP请求之间的响应时间协议

备注:WebReference客户端现已弃用。如果您决定在整个网络连接中调用服务,则应使用ServiceReference。