看看我对使用同一个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?它是相同的还是会影响某些东西?
提前感谢您的帮助。
答案 0 :(得分:2)
但我的理由是,使用WebService需要http协议 谁通过此协议提出请求,以及Web服务序列化 回应......
你的推理绝对正确。如果您在同一个项目中,则无需在无用的HTTP请求中浪费CPU周期。您可以直接调用Web服务方法已使用的相同存储库层。如果您需要非.NET客户端来使用它,您仍然可以使用可互操作的格式(例如SOAP)公开Web服务,否则我认为它不是必需的。实际上为什么你首先开发了一个Web服务?我猜你对未来的消费者有一些期待?经验法则是始终将可重用的服务域逻辑封装到服务层中,然后根据谁需要使用它,直接使用实现此功能的程序集(如果我们讨论的是.NET客户端)或者您需要互操作性,使用WCF使用可互操作协议公开此服务层非常简单。
但是,如果您对确切的数字感兴趣,请不要犹豫,执行一些负载测试,并比较直接从您的cinsuming Web应用程序中调用.NET方法和使用可互操作的HTTP请求之间的响应时间协议
备注:WebReference客户端现已弃用。如果您决定在整个网络连接中调用服务,则应使用ServiceReference。