我搜索过互联网,似乎无法找到与此主题相关的任何内容。我认为会有一些讨论。我找不到它。
基本上,我正在寻找的是使用现有.NET程序集执行(较旧的)命令行可执行文件所能完成的相同操作的充分理由。因此,如果我使用了程序集,我会包含它并开始在我的C#代码中使用它。对于我们旧的命令行工具,我会做Process.Start(...)
等等。
背景是:
我要求对传输到我们系统的文件执行PGP加密和解密。我目前的选择是使用命令行GPG工具(http://www.gnupg.org/)或Bouncy Castle .NET程序集。
有人问我为什么不在我的代码中“自动化”旧的GPG命令行工具。我想用一些情报回答这个问题。现在,我只能想到两个原因:
错误处理:我应该不仅可以使用.NET程序集获得更好的错误信息,而且可以通过try / catch异常等处理它们。我甚至可以根据需要滚动自己的异常,等
代码可移植性:我使用.NET程序集构建的任何东西或多或少都是独立的。我不需要找到GPG可执行文件并将其复制到我复制我使用它编写的应用程序的每个地方。
表现:可能。我没有任何关于此的经验或数据。
我很感激有关此主题的任何意见。
答案 0 :(得分:6)
老实说,我会使用.NET程序集,因为它似乎是一个比启动新进程更简单的解决方案和更紧凑的解决方案。我觉得这种方式的一些原因如下:
这些只是我头脑中的一些想法。我希望这有帮助。如果您有任何疑问,请告诉我,我会详细说明我的答案。祝你好运!!
答案 1 :(得分:3)
我个人会尽可能使用.Net程序集而不是命令行工具。
优点:
Exceptions
,events
等等。)答案 2 :(得分:2)
我同意1,2和3.为每个加密/解密启动一个新进程肯定比在进程中执行它更昂贵。如果您需要同时执行多个加密/解密,这将变得更加重要,这将阅读您期望的问题。
另外,是否有64位版本的命令行工具?这可能是反对的论据。
答案 3 :(得分:2)
这样做更简单。你的三个项目中的两个都回到了这个。
第三种情况可能是正确的,因为流程较少,不需要在它们之间进行通信,或者是错误的,因为可执行文件恰好提供了比程序集更好的性能,并且超出了这种效果。
但简单购买了很多东西,而且它一直在给予(你可能必须支持这个应用程序一段时间)。可能有一些其他“专业人士”可以被认为最终归结为此。
真的,当事情变得更简单(而且非常简单,而不是过度简单的警报调用,从长远来看会变得更加复杂),你需要一些真的引人注目反驳这一点的反驳论点。