编译和扩展开发


Hawk是开源项目,因此任何人都可以为其贡献代码。作者也非常欢迎使用者能够扩展出更有用的插件。

现在这样的同学屈指可数,看来我们离共产主义社会还有点远 看到这里,你肯定接触过沙漠君写的代码,不要吐槽,那是他研究生单身时写的,愤世嫉俗,只要能用就行。

1.编译

编译需要Visual Stuido,版本建议使用2015, 2010及以上没有经过测试,但应该可以编译。 需要安装.Net Framework 4.5 和.NET Framework 4.0 没有其他依赖项。

出现编译问题时,请查看7. 常见问题中的编译问题

2.代码结构

Hawk采用插件式结构,所有的组件都是可分离的。插件系统是自行设计的,非常类似于MEF框架。使用WPF技术,MVVM结构,界面和逻辑分离。

工程文件介绍如下:

  • Hawk.Core 底层基础类库
  • Hawk.ETL 数据清洗和爬虫插件库
  • Hawk.ETL.Controls 界面库
  • HawkScheduler 命令行调度器
  • HawK.exe 可执行程序和插件容器

核心的需要修改的代码,都位于Hawk.ETL和Hawk.Core中。

3.实现新的连接器

以实现MySQL支持为例,在Hawk.Core.Connectors目录中,新建MySQLConnector.cs文件,创建对应的类,从DBConnectorBase继承。 在类上添加attribute,结构如下: [XFrmWork("MySQLConnector")] public class MySQLConnector { //implement interface IDataBaseConnector }

4.实现新的子模块组件

如果你想开发新的组件,完全可以参考已有的代码。但一些特别简单的功能,不建议再开发新的插件,而是直接使用Python转换器即可。

你可以创建一个.NET工程,之后引用Hawk.Core.dll即可。不论是界面控件,转换器,过滤器还是执行器,都可以从已有的基类继承。

生成对应的dll文件后,可以将其拷贝到Hawk的根目录下,并在PluginLoadLogic.xml配置文件中,修改PluginFileName配置节,将该文件的dll文件名粘贴进去。这样Hawk在启动时,就会自动检索该dll中的所有插件。

5.备注

这方面如果有任何问题,欢迎联系作者,不过我打赌,因为想新开发组件而找我的朋友,一年最多三个