本次将要很大家分享的是一个跨平台运行的服务插件 - TaskCore.MainForm,此框架是使用.netcore来写的,现在netcore已经支持很多系统平台运行了,所以将以前的Task.MainForm改良成跨平台的服务共大家使用和相互交流;本来这篇应该分享的是nginx+iis+redis+Task.MainForm构建分布式架构后续文章,但使用.netcore来定义一个服务插件和跨平台测试经过让我既兴奋又头痛,不说了下次再分享分布式后续文章吧;那么开始今天的分享内容,希望各位多多支持:
. 框架结构介绍及运行效果图
. 如何生成nuget包和使用开源框架TaskCore.MainForm
. win7和ubuntu16.04运行TaskCore.MainForm的两种方式和测试截图(也可认为.netcore项目在win7和ubuntu系统运行的两种方式)
. 框架代码解读及感悟
下面一步一个脚印的来分享:
. 框架结构介绍及运行效果图
首先,咋们先来认识下项目源码的工程目录结构如图:
结构看上去应该够清晰了,源码文件量也很少,不过的确实现了动态加载程序集dll来执行任务,后面会给出相应的执行截图,我们再来看下TaskCore.MainForm项目通过vs2015生成之后Bin文件夹中的文件如图:
如果安装了.netcore sdk的话在windows上您只需要上面截图的文件就能运行插件了;再来我们在已经安装过core sdk的win7系统上执行一下如下命令dotnet TaskCore.MainForm.dll就能看到如图的效果:
没错这就是插件运行起来的效果图,因为.netcore现目前暂时没有提供类似于winform那样的皮肤界面效果,所有只能通过命令行来做跨平台运行程序
. 如何生成nuget包和使用TaskCore.MainForm
首先,我们要明确服务是由两部分构成(TaskCore.MainForm和TaskCore.Plugin);TaskCore.MainForm主要用来运行程序,TaskCore.Plugin用来作为子任务需要继承的父类插件;当我们下载TaskCore.MainForm运行包之后(如图2结构),我们还需要做的就是继承TaskCore.Plugin.dl中的TPlugin这个类,来重写自己的任务内容,因此我们新建一个项目取名为:TaskCore.Test,再来我们通过vs2015引用功能直接添加TaskCore.MainForm运行包中的TaskCore.Plugin.dl引用,这个时候会提示一个错误:
错误意思是没法加载netcore版本的dll,因此这种直接在vs项目中引用方式添加dll依赖不行,需要通过nuget来添加依赖包(.netcore对类库的引用目前只能通过nuget来安装依赖,这个需要注意),所以我这里把TaskCore.Plugin项目通过dotnet pack命令来生成nuget包,然后以便我TaskCore.Test项目中来使用;
如何生成nuget包(win7系统dotnet命令来生成包的过程和下载):
直接在vs中右键您需要打包的类库项目-》选择"在资源管理器中打开文件夹"-》这样就到了您类库的根目录,然后退到类库根目录的上一级文件夹中-》按住键盘”shift"键并同时鼠标右键要打包类库的项目文件件(我这里是TaskCore.Plugin文件夹)-》选择“在此处打开命令窗体” 这个时候就进入了cmd命令窗体,当然有些朋友直接喜欢直接先cmd再来找对应的磁盘,反正我觉得第一种更快点(不同人不同选择吧),下面看下操作截图:
由上图可以看到,通过命令生成了nupkg文件,这文件就是咋们需要在项目中下载安装的TaskCore.Plugin插件包;接下来我们来在TaskCore.Test项目中安装这个插件如下步奏,右键TaskCore.Plugin项目中的“引用”-》选择“管理nuget程序包”-》然后选择右上角的这个图标
-》选择“Nuget包管理器”-》“程序包源”-》
-》然后选择新创建的包源,下面设置如图
这里的“源(S)”指定的本地路径就是刚才我们生成的nupkg文件文件的磁盘(当然我这里是吧刚才pack命令生成的文件复制到了MyNugPackage文件夹中方便测试)-》然后点击”确定“按钮-》然后在返回到
选择我们的包源MyNugPackage-》再浏览这里就能看到我们创建的nuget包了
-》选择并安装-》好安装好后我们可以查看“引用”下面有了如下变化
并且project.json文件中自动添加了依赖项:
好了到我们的TaskCore.Test项目中就可以使用Task.Plugin包里面的方法很类等信息了;
使用TaskCore.MainForm: