我即将开始一个需要通过 C# 创建 SNMP 代理的项目。我从未使用过 SNMP,因此我计划使用现有的库/api,例如SharpSnmp或SnmpSharpNet。
我正在寻找任何对这两个 api 都有个人经验并且对哪个更好以及为什么有意见的人的回应。- 或者你的意见是它们是相同的差异(即你没有偏好) - 如果是这样,我也对那种回应感兴趣。
我即将开始一个需要通过 C# 创建 SNMP 代理的项目。我从未使用过 SNMP,因此我计划使用现有的库/api,例如SharpSnmp或SnmpSharpNet。
我正在寻找任何对这两个 api 都有个人经验并且对哪个更好以及为什么有意见的人的回应。- 或者你的意见是它们是相同的差异(即你没有偏好) - 如果是这样,我也对那种回应感兴趣。
作为#SNMP的开发者,我只能提供以下反馈,
#SNMP 来自 Malcolm Crowe 的 SNMP 研究项目。当我尝试改进它时,我从头开始重新设计了整个 API,并希望使其自然并适合 C#/.NET 开发人员,类似于 PowerSNMP for .NET ( http://www.dart.com/psnet.aspx ),但不是克隆。
SNMP#NET 源自其他库,例如 snmp4j,如果您阅读它的主页,http ://snmpsharpnet.com/node/1 。所以它的 API 看起来也和他们很相似,我个人不喜欢。
#SNMP 从一开始就遵循测试驱动开发。所有关键部分都包含在其单元测试套件中。因此,尽管它在七个主要版本中进行了多次重大重构,但它仍然是一个稳定的代码库。
从 SNMP#NET 我看不到任何单元测试套件。我不知道它是如何测试的。但它也被证明是稳定的。
#SNMP 的所有修订版都可以在 CodePlex 上很容易地观察到,后来在 Google Code 上,最后在 GitHub 上。https://github.com/lextm/sharpsnmplib/commits/master您可以跟踪几乎所有更改,因为我经常签到。如果您想检查代码库的演变,#SNMP 可以轻松完成。
SNMP#NET 仅发布带有二进制文件的源代码快照。它没有公共存储库。
#SNMP 提供了一组命令行实用程序(类似于一些 Net-SNMP 实用程序)来演示如何使用该库。它还提供演示级 MIB 编译器、浏览器和代理。这些示例可作为首次用户了解 API 的起点。
SNMP#NET 有很多关于如何使用 API 的好文章,http://snmpsharpnet.com/node/6。但它没有很多大规模的样本。特别是 SNMP#NET 还没有 MIB 编译支持,也没有代理开发支持。
#SNMP 几年前已经在 Mono 上进行了测试,后来在非 Windows 操作系统上正式支持 Mono。我不知道 SNMP#NET 是否支持这个。
更新从 8.0 版本开始,#SNMP 开始针对移动平台(Android 首先是 Mono,然后是 MonoTouch)。代码库也在 MIT/X11 下重新授权以避免部署问题。
从 10.0 版本开始更新,#SNMP 开始以 .NET Standard 为目标。
值得注意的是,#SNMP 的 v3 支持的一部分来自 SNMP#NET,https://blog.lextudio.com/trident-sign-another-open-source-snmp-library-via-c-4f2b904252。这两个项目都是在 LGPL 下发布的,所以我没有尝试重新发明轮子。显然 SNMP#NET 具有更好的隐私方法支持,但是将这些部分移植到 #SNMP 也很容易实现(我确实通过移植 MD5、SHA-1、DES、TripleDES 和 AES128/192/256 支持来证明这一点)。
从 8.0 版本开始更新,#SNMP 代码库在 MIT/X11 + BSD 3 条款下重新授权。
更新的#SNMP 有一个专业版,其中包括 MIB 文档支持。