web服务-C#-WebMethodAttribute会对性能产生不利影响
本文关键字:影响 性能 服务 -C#-WebMethodAttribute web | 更新日期: 2023-09-27 17:59:42
我刚刚注意到我的Excel服务运行得更快。我不确定是否有环境问题。我确实改变了方法。之前在哪里
class WebServices{
[ WebMethod( /*...*/) ]
public string Method(){}
}
现在,它的属性被删除,方法被移到另一个类中
class NotWebService {
public string Method(){}
}
但是,我这样做是因为方法不是被调用或用作服务。相反,它是通过调用的
WebServices service = new WebServices();
service.Method();
并且在同一组件内。现在,当我调用方法时
NotWebService notService = new NotWebService();
notService.Method();
响应时间似乎增加了。WebMethodAttribute是否有可能降低本地调用的速度?
实际上,WebMethod属性添加了许多功能,以便通过XML WebService公开该方法。
导致开销的部分功能是以下功能,这些功能被视为web方法的可配置内容的一部分:
- BufferResponse
- 缓存持续时间
- 会话处理
- 交易处理
有关更多信息,请查看WebMethod属性文档
问候,
我知道这是一个老问题,但为了避免错误信息,我觉得无论如何都有必要回答它。
我不同意瓦德尼的评价。
如果直接作为方法而不是通过HTTP调用标记为web方法的方法,则不应该有额外的开销。毕竟,它编译成完全相同的中间语言,而不是存在自定义属性。
现在,如果自定义属性是编译器或运行时特有的属性之一,则添加该属性可能会影响性能。WebMethodAttibute两者都不是。
接下来,我将考虑构建webservice对象是否有任何特殊开销。如果添加了构造函数,可能会有一些,但默认情况下没有实际开销,因为基类的构造函数是琐碎的。
因此,如果您真的直接调用该方法,那么应该不会有真正的开销,尽管它也可以作为web服务操作来访问。如果您遇到了显著的差异,那么明智的做法是验证您是否正在构建真正的WebServices
类,而不是出于某种原因不明智地使用web服务代理,可能是因为向您的项目添加了web服务引用。