数码幽灵的自学Blog

.Net 学习历程

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

系统统工作方式:

       由搜索客户端向中央索引服务器得到目前网络上所有向服务器登记过的节点服务器的url,然后根据由url调用远程对象的搜索方法,得到搜索结果,显示在树视图中;以此实现分布式的文件搜索架构;

       本系统设计基本没有什么复杂高深的算法,结构;只有一个地方需作一些说明;就是

“节点服务器对本地搜索目录中的文件的缓冲策略”简要说来就是当节点服务器第一次被激活时,会将本地搜索目录中的文件信息全部读入内存以供搜索方法的使用;如果对象长期没有被使用(默认设置5分钟),其使用的内存自然就会被释放掉;这对搜索节点的性能有很大的提高;缓冲策略还有很多其他的可行性方案,比如保存最近十个搜索条件匹配的结果,保存高频搜索单词的匹配结果等等。。。在今后的实践里会慢慢加上;服务会不断完善;

 

       关于当前节点的有效性检测:采用索引服务器定时(1分钟)检测的方法,调用节点服务器的noop方法,如调用成功,则节点有效,若调用失败则节点实效,立即从节点列表中删除!

 

基本可用的模型实现,主要由以下部件组成:
1.
中央索引服务器,用于提供当前网络上所有可用结点服务器的URL,使用WebService实现索引服务发布
2.
结点服务器,响应远程请求,实现本地文件搜索功能并将结果返回,使用.Net Remoting发布远程对象
3.
搜索用客户端,从中央索引服务器得到网络上可用的搜索结点,并激活节点对象,对结点提交搜索请求!

 

搜索目前匹配的字符串为正则表达式,未做搜索词法分析部分,以后继续完善!

 

还有几个类图,参考代码,一看自明:


 http://img19.photo.163.com/digitalghost/1843842/22930348.jpg

 


导致目前还不能投入使用的严重缺陷
:

       当不输入搜索条件(列出节点所有文件),远程各节点反馈较大信息量的时候,界面会出现无法响应的情况;主要表现在当向treeview中同时加入大量节点的时候,响应速度过慢!是过使用treeviewbengininvoke方法来实现多线程操作,问题依旧;cpu利用率高居不下,界面无法响应,看来不是多线程的问题,是treeview本身就不是适合太多节点的场合(多到100000级),就算多线程都无法解决问题!

       目前讨论得出的解决方案:修改节点服务器,使用分页分次得到结果的方法,一来节省了网络传输大量数据时过多冗余数据占用过多时间的问题,二来还解决了客户端相应时间的问题,毕竟这种性质的客户端是一台机器对多台机器的问题,海量数据是很容易让程序负担过重的,所以在客户端的性能要求上是很高的!

posted on 2004-05-23 22:35  数码幽灵  阅读(544)  评论(0)    收藏  举报