0

QuickGraph 能否帮助我满足以下要求?

(a) 想要对节点图和节点之间的方向关系进行建模——例如,对在 URL 下链接的网页/文件进行建模,或者对 IT 基础设施和硬件/软件之间的依赖关系进行建模。该库将包括诸如

* Node.GetDirectParents()   //i.e. there could be more than one direct parent for a node
* Node.GetRootParents()  //i.e. traverse the tree to the top root parent(s) for the given node
* Node.GetDirectChildren()
* Node.GetAllChildren()

(b) 必须将数据持久化到数据库中——因此它应该支持 SQL Server,最好也支持 SQLite。

如果它确实支持这些要求,那么我很想听听:

  1. 任何指向 QuickGraph 任何部分的指针都可以深入研究?

  2. 就如何使用数据库持久性而言,最好的概念是什么?假设每个搜索/方法都直接在数据库上工作是一种更简单的设计,还是 QuickGraph 支持智能以便能够在内存中工作和“保存" 在适当的时间点对所有更改进行数据库化(例如,像 ADO.net 对 DataTable 等所做的那样)

提前致谢

4

1 回答 1

1

格雷格,

一种。是的,Quickgraph 可以很容易地以这种方式搜索节点。我已经在你的另一个问题中提供了一个例子。

湾。据我所知,SQL 序列化不是 QuickGraph 的“内置”;您必须构建自己的自定义实现。由于大多数图表不仅仅代表一个简单的顶点和节点列表,因此在 QuickGraph 中自动(和本机)完成这一点非常困难,但自己实现却相当简单。

  1. 您可以查看 QuickGraph 源代码中的 GraphML 序列化部分。这可能会给你一些开始的提示。
  2. QuickGraph 在内存中工作,它不能“对抗”持久存储,并且不是设计用于(因为持久存储通常非常慢)。因此,您需要手动保存信息。但是,您可以监视不同的 QuickGraph 事件,例如 VertexAdded、VertexRemoved、EdgeAdded 和 EdgeRemoved,以确定图形何时更改,然后在这些时间执行序列化。

-道格

于 2010-05-05T21:07:10.663 回答