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

编译

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

可能出现的编译问题

虽然在GitHub上是最新的代码,最新代码是可以成功编译的。但不能保证用户是否clone的是早期版本的代码,因此此处罗列可能的编译错误。

  1. 因为工程Hawk.csproj包含的两个图片文件不存在导致,在这些文件图标上点击右键,选择'排除出项目',即可正常编译。

  2. 找不到项目System.Windows.???.WPFPropertyGrid.csproj项目,有两种方法,一种是从作者的GitHub上clone对应的项目,并添加项目引用,另外一种做法是,删除项目引用,添加外部dll引用,所有的外部dll,都能在Include文件夹中找到。

代码结构

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

工程文件介绍如下:

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

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

实现新的连接器

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

实现新的子模块组件

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

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

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

Hawk 6. 编译和扩展开发的更多相关文章

  1. iOS开发系列--App扩展开发

    概述 从iOS 8 开始Apple引入了扩展(Extension)用于增强系统应用服务和应用之间的交互.它的出现让自定义键盘.系统分享集成等这些依靠系统服务的开发变成了可能.WWDC 2016上众多更 ...

  2. 关于PHP扩展开发(收藏)

    一.Linux shell命令: ls –lh    查看文件大小 du –a    查看文件及文件夹大小 -------------------------- nginx ------------- ...

  3. postgres扩展开发

    扩展开发的基本组成 demo--1.0.sql demo.c demo.control Makefile demo.c当中包含了自定义函数的实现,纯C语言,目录下可包含多个.c文件.demo-1.0. ...

  4. PHP扩展开发相关总结

    1.线程安全宏定义 在TSRM/TSRM.h文件中有如下定义 #define TSRMLS_FETCH() void ***tsrm_ls = (void ***) ts_resource_ex(0, ...

  5. php扩展开发初探

    2015年2月26日 15:44:41 原因: 想用PHP实现一个布隆过滤器算法, 其中要用到位运算, 但是PHP的内置的int类型不给力, 不能支持大整数的位运算 数据一旦太大, 就会变为浮点数表示 ...

  6. PHP扩展开发(1):入门

    有关PHP扩展开发的文章.博客已经很多了,比较经典的有: TIPI项目(http://www.php-internals.com/,强烈推荐) <Extending and Embedding ...

  7. PHP扩展开发01:第一个扩展【转】

    我们先假设业务场景,是需要有这么一个扩展,提供一个叫ccvita_string的函数,他的主要作用是返回一段字符.(这个业务场景实在太假,大家就这么看看吧)对应的PHP代码可能是这样: functio ...

  8. centos php扩展开发流程

    原文:centos php扩展开发流程 一.安装php centos 默认 yum 安装 php 版本为 5.3, 很多php框架基本上要求5.4以上版本,这时候不能直接 用 yum install ...

  9. PHP扩展开发-简单类扩展

    今天来学习简单类扩展开发 实现目标为如下php的类 <?php class classext(){ private $username; CONST URL="http://www.g ...

随机推荐

  1. Windows 7上执行Cake 报错原因是Powershell 版本问题

    在Windows 7 SP1 电脑上执行Cake的的例子 http://cakebuild.net/docs/tutorials/getting-started ,运行./Build.ps1 报下面的 ...

  2. 戏说HTML5

    如果有非技术人员问你,HTML5是什么,你会怎么回答? 新的HTML规范... 给浏览器提供了牛逼能力,干以前不能干的事...(确切地说应该是给浏览器规定了许多新的接口标准,要求浏览器实现牛逼的功能. ...

  3. C# 破解 Reflector8.5

    一.分析 破解.net .dll,可以使用reflector,但官方提供的reflector是需要购买的,因此,破解reflector势在必行. 二.破解Reflector具体步骤 下面为详细的破解步 ...

  4. TinyWeb v1.0 正式完成第一个Release版本(功能基于 libuv 跨平台库)

    使用方法很简单,很容易融入现有项目,使现有项目拥有Web网站功能和WebSocket,以及Socket直连! 并且包含了一个跨平台(windows/linux)工具集合; 嗯,也挺棒的^,^ 在项目中 ...

  5. .NET跨平台之运行与Linux上的Jexus服务器

    谈及.NET跨平台,已经不是什么稀奇的事儿.今天我们就以Jexus服务器的部署为例.简单示范下.在这里,我用VMWare虚拟机来搭建Linux运行环境. Linux,我们选择CentOS7.大家可以前 ...

  6. R abalone data set

    #鲍鱼数据集aburl <- 'http://archive.ics.uci.edu/ml/machine-learning-databases/abalone/abalone.data' ab ...

  7. animate.css(第三方动画使用方法)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Monaco; color: #a5b2b9 } animation 语法: animatio ...

  8. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  9. 图解DevExpress RichEditControl富文本的使用,附源码及官方API

    9点半了,刚写到1.2.   该回家了,明天继续写完. 大家还需要什么操作,留言说一下,没有的我明天继续加. 好久没有玩DevExpress了,今天下载了一个玩玩,发现竟然更新到14.2.5了..我去 ...

  10. exp/imp 与 expdp/impdp 区别

    在平常备库和数据库迁移的时候,当遇到大的数据库的时候在用exp的时候往往是需要好几个小时,耗费大量时间.oracle10g以后可以用expdp来导出数据库花费的时间要远小于exp花费的时间,而且文件也 ...