3

デバイスのタイプに基づいてかなり異なる大量の属性を持つネットワーク デバイスをモデル化する新しい API を設計する必要があります。属性セットは完全に恣意的なものではありませんが、既知の属性の大きなセットです。とはいえ、新しいデバイスには新しい属性が付属しているため、状況が完全に修正されることはありません。

ネットワーク デバイス自体は常に出入りするため、これが API 設計の中心的な部分です。また、Observer パターンのいくつかのバリアントを介して属性/属性セットの更新を取得することをお勧めします。

注: ネットワーク管理について話しているわけではありませんが、そのように聞こえるかもしれません。とはいえ、これらのシステムの API は非常に適切であり、検討する価値があるかもしれません。

私の質問は、オープン ソースの世界で、私が学び、インスピレーションを得ることができる優れた API を知っていますか?

システムは Java ベースになるため、サンプルは Java (もちろん :))、C#、Scala、およびその他の同様の静的型付き言語など、近縁の言語からのものであることが望ましいです。

4

3 に答える 3

1

あなたのAPIが何を意図しているのか正確にはわかりませんが、ネットワークデバイスは「常に行き来する」ため、オブザーバーパターンを使用したかったので、できるものを探していると思いますネットワーク上のものの現在の状態に関する最新情報を取得します。

SLPを見たことがありますか?これは、必要なことができるパブ/サブ プロトコルです。これにより、ネットワーク デバイスは、その存在とプロパティをネットワーク経由でブロードキャストし、他の人をリッスンすることもできます。TCP および UDP (ユニキャストおよびマルチキャスト) で動作します。

いくつかの Java 実装 (たとえばjslpなど) がありますが、私はそれらに完全に満足することはありませんでした (そのため、最終的には独自のものを作成することになりました)。C# に関する限り、簡単には見つかりませんでした。

于 2009-11-25T03:08:16.677 に答える
0

私があなたの質問を完全に理解していることは肯定的ではありませんが、私はそれに挑戦します。

デバイスがネットワーク上にあるときにその属性を公開できるようにする方法を探していますか?もしそうなら、デバイスと対話するために今理解しているコードを書かない限り、本当に良い方法はありません。そのようなものができたら、必要なのは、好みのデータ構造のあるタイプの属性データを保持するクラスだけです。更新する場合、属性が変更されたときにレポートする方法がない限り、デバイスを定期的にポーリングする必要があります。

Dictionary<string, Dictionary<string, string>> deviceAttributes = new 
   Dictionary<string, Dictionary<string, string>>();

void AddAttribute(string deviceIdentifier, string attribute, string value)
{
   if(!deviceAttributes.Keys.Contains(deviceIdentifier))
      deviceAttributes.Add(deviceIdentifier, new Dictionary(attribute, value);
   else
      deviceAttributes[deviceIdentifier].Add(attribute, value);
}

各デバイスに対象の属性を取得するための何らかの標準的な方法がある場合は、任意の配列を受け入れるコードを記述し、forまたはforeachループを使用してそれをデータ構造に追加できます。あなたが何をしようとしているのかについてのより具体的な知識がなければ、私は本当にこれ以上言うことはできません。

于 2009-11-23T23:48:51.853 に答える
0

LDAP/ActiveDirectory/ADAM(User Mode Active Directory) を見るかもしれません。. . エルダイト・トログロダイト

于 2009-12-10T04:19:27.113 に答える