只需要在正确的方向上找到一个点。
我已经通过Cisco提供的说明创建了Cisco Unified Call Manager API,CUCM的API称为AXL。 它目前在我的C#WPF项目中运行得很好(我已经成功检索了一些手机数据),问题是API在一个长度为345K的单个CS文件中。当我尝试使用API进行第一次操作时(编译完成后),这会造成极长的延迟。
正如思科论坛上的一位用户所建议的那样:
您的问题很可能是.net框架生成xml序列化程序集所花费的时间。
在.net上使用AXL时预生成xml序列化程序集,您的第一个响应将更快。
我尝试使用this帖子中用户大脑备份的说明预生成它。不幸的是,API的第一次使用仍然是大约45秒(它确实减少了大约一分钟)。我不太了解Visual Studio中的调试工具,因此不确定如何检查导致问题的确切原因(但它看起来像是与生成XML相关的问题)。
我想知道是否有人可以推荐一种方法从CS文件中删除不必要的方法(99%的方法不会被使用),而不必手动重新创建它。任何类型的工具都可以从CS文件中提取/删除方法及其依赖关系,这绝对是非常棒的。
答案 0 :(得分:0)
有一种方法可以检查您的方法是否已被使用,以及是否使用过多少次以及检查此方法。
https://visualstudiomagazine.com/Blogs/Tool-Tracker/2014/12/Finding-Method-Property-Variable.aspx
答案 1 :(得分:0)
削减AXL WSDL本身并重新编译可能是有意义的 - 如上所述,你不可能在整个架构附近使用它。
您应该只需编辑AXLAPI.wsdl并删除除实际使用的项目之外的所有和元素。
答案 2 :(得分:0)
遇到同样的问题,延迟几乎无法使用。我发现有两件事可以解决这个问题,几乎可以立即得到结果。
不要使用WSDL。编写自己的方法来处理SOAP请求。需要时间并且容易出错,但是结果几乎是即时的。
使用可以处理大型文本文件的工具(例如Notpad ++)打开WSDL生成的代码文件,并仅取出所需的方法。这是我选择的方法,效果很好。
此外,我相信您可以只使用executeSQLQuery方法并删去其余大部分代码,但我还没有尝试过。上面的每种方法我都尝试过不预生成xml序列化。我发现问题出在生成的C#axl代码文件大小上。