我即将开始一个项目,我需要通过 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 移植的。这两个项目都是在 LGPL 下发布的,所以我没有尝试重新发明轮子。显然 SNMP#NET 有更好的隐私方法支持,但是将这些部分移植到 #SNMP 也很容易实现(我确实表明通过移植 MD5、SHA-1、DES、TripleDES 和 AES128/192/256 支持)。
更新从 8.0 版本开始,#SNMP 代码库根据 MIT/X11 + BSD 3 条款重新获得许可。
更新 #SNMP 有专业版,其中包括 MIB 文档支持。