我即将开始一个需要通过C#创建SNMP代理的项目。我从未使用过SNMP,因此我计划使用现有的库/ api,例如SharpSnmp或SnmpSharpNet。
我正在寻找任何对这两种情况都有个人经验的人的回复,并对哪一个更好以及为什么有意见。 - 或许你的意见是他们是相同的差异(即你没有偏好) - 如果是这样,我也对这种反应感兴趣。
答案 0 :(得分:10)
作为#SNMP的开发者,我只能提供以下反馈,
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开始定位移动平台(首先是Mono for Android,稍后是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文档支持。