2011-06-21 59 views
5

我只注意到我的Excel服务运行得更快。我不确定是否有环境状况正在发生。我确实改变了方法。它被C# - WebMethodAttribute可以对性能产生负面影响吗?

class WebServices{ 
[ WebMethod(/*...*/) ] 
public string Method(){} 
} 

现在,它的属性被删除之前和方法转移到另一个类

class NotWebService { 
public string Method(){} 
} 

但是,我这样做是因为该方法叫或用作服务。相反,它被称为通过

WebServices service = new WebServices(); 
service.Method(); 

和在同一大会内。现在,当我拨打方法

NotWebService notService = new NotWebService(); 
notService.Method(); 

响应时间似乎增加了。 WebMethodAttribute是否有可能减慢本地呼叫?

回答

2

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

部分导致开销的功能被认为是Web方法的配置填充部分以下特点:

  • BufferResponse
  • CacheDuration
  • 会话处理
  • 事务处理

F以上信息只是检查WebMethod attribute documentation

问候,

0

我知道这是一个老问题,但要避免误传我觉得有必要反正回答。

我不同意wacdany的评估。

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

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

接下来我会考虑是否有任何特殊的开销来构建Web服务对象。如果你添加了一个构造函数,可能会有一些,但是默认情况下没有真正的开销,因为基类的构造函数是微不足道的。

因此,如果您确实直接调用方法,则不应该有任何实际开销,尽管它也可以作为Web服务操作进行访问。如果您遇到了显着差异,那么验证您是否正在构建真正的WebServices类,而不是以某种方式无意中使用Web服务代理,这可能是由于向项目添加了Web服务引用。

相关问题