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是否有可能降低本地调用的速度?

web服务-C#-WebMethodAttribute会对性能产生不利影响

实际上,WebMethod属性添加了许多功能,以便通过XML WebService公开该方法。

导致开销的部分功能是以下功能,这些功能被视为web方法的可配置内容的一部分:

  • BufferResponse
  • 缓存持续时间
  • 会话处理
  • 交易处理

有关更多信息,请查看WebMethod属性文档

问候,

我知道这是一个老问题,但为了避免错误信息,我觉得无论如何都有必要回答它。

我不同意瓦德尼的评价。

如果直接作为方法而不是通过HTTP调用标记为web方法的方法,则不应该有额外的开销。毕竟,它编译成完全相同的中间语言,而不是存在自定义属性。

现在,如果自定义属性是编译器或运行时特有的属性之一,则添加该属性可能会影响性能。WebMethodAttibute两者都不是。

接下来,我将考虑构建webservice对象是否有任何特殊开销。如果添加了构造函数,可能会有一些,但默认情况下没有实际开销,因为基类的构造函数是琐碎的。

因此,如果您真的直接调用该方法,那么应该不会有真正的开销,尽管它也可以作为web服务操作来访问。如果您遇到了显著的差异,那么明智的做法是验证您是否正在构建真正的WebServices类,而不是出于某种原因不明智地使用web服务代理,可能是因为向您的项目添加了web服务引用。