昨天下班,同事 阙 告诉我说,他把WebService类中一些没用的Web方法删除掉了,结果他发现我们客户端程序运行时少用了近二十兆(20MB)的内存空间。啊~ 对!我怎么一直忽略了这个重要的因素呢?!随着项目的进展我们的WebService也一直在跟着增长,其中有相当一些WebMethod都是历史版本中遗留、堆积下来,尽管现在都已经不再使用了,但是由于担心删除这些方法会影响到其他模块,因此就一直保留了下来。因为客户端的WebService代理类也会一一对应生成所有的WebMethod的代理方法,所以,这直接导致了客户端WebService代理类的体积,而庞大的WebService代理实例将占用大量的内存。
基于这个问题,在设计时我们建议应根据系统逻辑来规划WebService类,不要把所有的操作方法都放在一个WebService类中;在使用时才去创建相关的WebService类。提倡尽量晚的创建,尽量早的释放。
《编写更快的托管代码:了解开销情况》
http://www.microsoft.com/china/MSDN/library/archives/library/dndotnet/html/fastmanagedcode.asp
《设计器入门》
http://www.microsoft.com/china/MSDN/library/enterprisedevelopment/softwaredev/SDaskgui08202002.mspx