我即将开始一个项目,其中我需要通过C#创建一个SNMP Agent。我从来没有使用过SNMP,所以我计划使用现有的库/api,比如SharpSnmp或SnmpSharpNet。
我正在征集那些对这两个api都有个人经验的人的回复,他们对哪一个更好,为什么更好有自己的看法。-或者你的观点是它们是相同的不同(即你没有偏好)-如果是这样,我也对这种反应感兴趣。
发布于 2012-06-01 14:07:02
作为#SNMP的开发者,我只能提供以下反馈:
两者的设计不同(历史回顾)
#SNMP来自Malcolm Crowe关于SNMP的研究项目。当我试图改进它时,我从头开始重新设计了整个应用程序接口,希望让它变得自然,适合C#/.NET开发人员,类似于.NET的PowerSNMP (http://www.dart.com/psnet.aspx),但不是克隆。
SNMP#NET源于其他库,例如snmp4j,如果你阅读它的主页,http://snmpsharpnet.com/node/1。所以它的API看起来也和它们很相似,这是我个人不喜欢的。
两者的开发方式不同(软件过程)
#SNMP从测试驱动开发的第一天就开始了。它的单元测试套件涵盖了所有关键部分。因此,尽管它在七个主要版本中进行了多次重大重构,但它仍然是一个稳定的代码库。
在SNMP#NET中,我看不到任何单元测试套件。我不知道它是怎么测试的。但它也被证明是稳定的。
代码库管理方法不同(SCM)
#SNMP的所有修订都可以很容易地在CodePlex上看到,后来在Google Code上,最后在GitHub上。https://github.com/lextm/sharpsnmplib/commits/master你几乎可以跟踪每一个变化,因为我经常签到。如果你想检查代码库的演变,#SNMP让它变得很容易。
SNMP#NET只发布带有二进制文件的源代码快照。没有用于它的公共存储库。
功能集差异
#SNMP提供了一组命令行实用程序(类似于一些Net-SNMP实用程序)来演示如何使用该库。它还提供了演示级别的MIB编译器、浏览器和代理。这些示例可作为第一次使用该API的用户的起点。
SNMP#NET有很多关于如何使用http://snmpsharpnet.com/node/6应用编程接口的小文章。但它没有太多大规模的样本。特别是,SNMP#NET还没有MIB编译支持,也没有代理开发支持。
平台支持差异
#SNMP在几年前已经在Mono上进行了测试,后来在非Windows操作系统上正式支持Mono。我不知道SNMP#NET是否支持这一点。
从8.0版本开始更新了,#SNMP开始瞄准移动平台(首先是用于安卓的Mono,然后是MonoTouch )。代码库还在MIT/X11下重新许可,以避免部署问题。
从10.0版本开始更新,#SNMP开始以.NET标准为目标。
两者之间的关系
值得注意的是,#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代码库根据麻省理工学院/X11+BSD3条款重新授权。
更新的 #SNMP有一个专业版,其中包括对MIB文档的支持。
https://stackoverflow.com/questions/10841613
复制相似问题