【MyBean-开源框架】进行简单的逻辑插件(演示在控制台中应用)
【说明】
很多时候大家认为客户端插件一般是窗体。其实不然,很多功能都可以看成是插件,比如一个单据的审批功能,一个单据上面,单价的获取功能,都可以看成是插件,然后后期通过配置,可以灵活进行切换。MyBean支持这种插件,支持这种纯逻辑的插件。剩下的是需要自己去制定执行逻辑的协议,这个DEMO就是展示如果进行逻辑插件的编写。
【DEMO设计】
该DEMO在调用DLL的一个插件完成两个简单数字的简单合计,然后可以由其他插件调用日志插件输出功能。
先制定接口协议(uILogic.pas):
type
/// <summary>
/// 合计插件接口
/// </summary>
ISumExp = interface(IInterface)
['{D02C3764-1231-46EC-8C74-95DFBF2A1ED5}']
function sum(i:Integer; j:Integer):Integer; stdcall;
end; /// <summary>
/// 日志插件接口
/// </summary>
IMyBeanLogger = interface(IInterface)
['{B872909D-99FF-47B9-A3F9-8CB9C26A8FD5}']
procedure LogMessage(s: PAnsiChar); stdcall;
end;
2.注册日志插件, 由EXE提供实现,在EXE中注册日志插件(uMyBeanLoggerImpl.pas)。
initialization
///注册日志插件
beanFactory.RegisterBean('mybeanLogger', TMyBeanLoggerImpl);
3.逻辑插件的实现(ISumExp接口的实现)
function TSumExpImpl.sum(i, j: Integer): Integer;
begin
Result := i + j; (TMyBeanFactoryTools.getBean('mybeanLogger') as IMyBeanLogger).LogMessage('dll插件调用mybeanLogger插件,输出一些信息');
end;
4.注册逻辑插件
library logicBean; uses
SysUtils,
mybean.core.beanFactoryForNoVcl,
Classes,
uSumExpImpl in 'uSumExpImpl.pas',
uILogic in '..\common\uILogic.pas'; {$R *.res} begin
beanFactory.RegisterBean('sumExp', TSumExpImpl);
end.
5.编译出来的DLL和EXE放一起就可以运行了

该DEMO只是抛砖,想想自己的系统中可以把哪些功能做成逻辑插件……
【MyBean-开源框架】进行简单的逻辑插件(演示在控制台中应用)的更多相关文章
- Farseer.net轻量级开源框架 入门篇:逻辑层的选择
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 入门篇:增.删.改.查操作演示 下一篇:Farseer.net轻量级开源框架 入门 ...
- Android中Universal Image Loader开源框架的简单使用
UIL (Universal Image Loader)aims to provide a powerful, flexible and highly customizable instrument ...
- webSocket开源框架:SocketRocket 简单的使用
需要用到webSocket,所以搜集了一下使用方法, git下载地址:square/SocketRocket gitHUB 上没有看懂,就要 cocoaPod 导入了 socketRocket 导入这 ...
- chrome插件演示,经js转让chrome api清除浏览器缓存
一个简单的chrome插件演示,主页脚本.内容脚本.背景和脚本之间的通信api呼叫.在此之上可以延长通话等chrome api. 下载链接:http://download.csdn.net/detai ...
- Farseer.net轻量级开源框架 入门篇:分类逻辑层
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 缓存逻辑层 下一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解 ...
- 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发
[原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文 http: ...
- Android中android-async-http开源网络框架的简单使用
android-async-http开源网络框架是专门针对Android在Apache的基础上构建的异步且基于回调的http client.所有的请求全在UI线程之外发生,而callback发生在创建 ...
- 开源一个跨平台运行的服务插件 - TaskCore.MainForm
本次将要很大家分享的是一个跨平台运行的服务插件 - TaskCore.MainForm,此框架是使用.netcore来写的,现在netcore已经支持很多系统平台运行了,所以将以前的Task.Main ...
- Pyhton开源框架(加强版)
info:Djangourl:https://www.oschina.net/p/djangodetail: Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 ...
随机推荐
- [转载]TortoiseGit安装与使用
原文地址:TortoiseGit安装与使用作者:了凡春秋 之前一直用SVN做项目开发,确实感觉这些版本控制工具非常实用,尤其是在一个团队开发项目的时候.最近偶然看到一个新的版本管理工具Git,它本来是 ...
- 树莓派进阶之路 (016) - 通过595驱动4位LED显示系统时间
模块图片,4位共阳极数码管. 我们使用树莓派wiringPi的库来通过74HC595驱动4位数码管: C 代码如下: #include <wiringPi.h> #include < ...
- php 执行命令函数
/** Method to execute a command in the terminal Uses : 1. system 2. passthru 3. exec 4. shell_exec * ...
- 【ASP.NET】ASP.NET如何发布Web项目
1.右击需要发布的项目,选择 属性>应用程序 在目标框架中选择.NET的版本,选择的版本的要本机安装的版本相符合,通常可以在“C:\Windows\Microsoft.NET\Framework ...
- 【Struts2】Struts2获取session的三种方式
1.Map<String,Object> map = ActionContext.getContext().getSession(); 2.HttpSession session = S ...
- 【Redis】解析Redis和Java传递数据
在Java中使用Redis之前需要导入 jedis.jar 包,由于Redis是基于key-value进行数据存储,java中的数据存储到Redis中有许多方式,这里笔者介绍采用JSON字符串和对象序 ...
- 【Spring】SpringMVC中浅析数据的传递方式
包括了基本数据类型的传递和 Date数据类型的传递.关于SpringMVC的配置可以参见基于注解实现SpringMVC+MySQL 假设有表单页面如下: <h1>登录</h1> ...
- TOP字句加SQL变量的相关问题
SQL Server数据库中的变量可以加载TOP字句之后,下文将对TOP字句加SQL变量的相关问题进行讨论,供您参考,希望对您学习SQL数据库有所帮助. SQL Server2005开始,TOP子句后 ...
- thinkphp __hash__
thinkphp会自动在模板文件的表单后加一个__hash__来验证提交,保证一定程序上的安全: 但是有时用不着,可以用: C('TOKEN_ON',false); 关闭这项
- MySQL Cluster
MySQL Cluster MySQL集群一个非共享(shared nothing).分布式.分区系统,使用同步复制机制提供高可用和高性能. MySQL集群使用的是NDB引擎.NDB存储引擎会在节点间 ...