我正在使用Microsoft Dynamics CRM进行一些实验.您通过Web服务与它进行交互,并且我已将Web引用添加到我的项目中.Web服务接口非常丰富,生成的"Reference.cs"大约是90k loc.
我在控制台应用程序中使用Web引用.我经常改变一些东西,重新编译并运行.编译速度很快,但是新建Web服务引用非常慢,花费大约15-20秒:
CrmService service = new CrmService();
分析显示所有时间都花在SoapHttpClientProtocol构造函数中.
罪魁祸首显然是XML序列化代码(不包括在上面提到的90k loc中)是在运行时生成,然后才进行JIT.这在构造函数调用期间发生.在玩耍和尝试时,等待是相当令人沮丧的.
我尝试了sgen.exe,ngen和XGenPlus的各种组合(需要几个小时并生成500MB的额外代码),但无济于事.我已经考虑过实现一个几乎没有CrmService实例的Windows服务,可以在需要的时候发布,但这似乎太过分了.
有任何想法吗?
.net c# performance xml-serialization soaphttpclientprotocol