5

我即将开始一个需要通过 C# 创建 SNMP 代理的项目。我从未使用过 SNMP,因此我计划使用现有的库/api,例如SharpSnmpSnmpSharpNet

我正在寻找任何对这两个 api 都有个人经验并且对哪个更好以及为什么有意见的人的回应。- 或者你的意见是它们是相同的差异(即你没有偏好) - 如果是这样,我也对那种回应感兴趣。

4

1 回答 1

10

作为#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 我看不到任何单元测试套件。我不知道它是如何测试的。但它也被证明是稳定的。

代码库管理方法不同(SCM)

#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 文档支持。

于 2012-06-01T06:07:01.600 回答