对exe进行签名会使通信变慢吗
本文关键字:通信 exe | 更新日期: 2023-09-27 18:22:43
场景
我有一个C#可执行文件,使用强密钥签名。从这个C#应用程序中,我使用"pinvoke"调用C++执行文件(未签名)。我观察到C++可执行程序的执行存在显著延迟。这有什么原因吗?
请参阅How do I strong named a Unmanaged C++Dll 中的邻居答案
通常,程序集的强名称只是一个校验和,表示没有人更改/入侵/注入您的代码(注入可能类似于病毒或特洛伊木马应用程序)。它对代码的保护不是很安全,这就是为什么它不需要很多时间来完成对程序集的所有测试。当然,与简单的程序集相比,已签名的代码将需要更多的时间来加载。
另一方面,PInvoke就像一个web服务调用,.Net代码不介意该代码是否安全。在这里,只有当你有很多参数,并且参数类型带有一些来自大型签名程序集的第三方结构时,才会出现延迟。在这里,您可能会看到一些小的时间延迟,因为这些大的程序集被加载到内存中,类型被检查,PInvoke被生成。
也许,您应该尝试将多个程序集中的所有类和结构移动到一个程序集中,并在那里使用PInvoke。因此,在这种情况下,您将不需要加载许多程序集。