看到题目,很明显这里要说的是插件式框架的开发,当然是用c/c++来实现的。开发对于我来说,是一种爱好,但并非科班出身,所以这里要说的一点分享就是,开发并不是会写代码就行了,最主要的是要有思路想法,比如要实现一个功能,就要知道,这个功能到底是要来实现啥的,要实现它需要什么样的算法等等,做到胸中有丘壑,再去用最简单代码去实现它,就会发现写代码是一件很享受的事情。
参加工作快两年了,一开始的是用C#开发,写了半年多的功能和小控件,上手之后,参考ICSharpCode.Core.Presentation开源插件式开发框架源码,写了仿Office2013插件式管理框架(见图1运行界面,为西安瑞特森科技股份有限公司设计),所有功能均是WPF样式设
图1
计前端,后台实现功能;这里提到了WPF,为什么选择WPF来开发呢,对于它来讲,网上众说纷纭有夸有也有贬的,我是比较中立的对于这一点,因为只要对于我的开发有帮助那就是好的,选择WPF,因为它是数据驱动的,想我写的功能多是与数据打交道,要是完全代码实现会增加很大工作量,但是WPF就能很解决这一问题,有很多数据与界面的交互,在前端设计的时候就可以实现,后台只需要很少代码就能完成。虽然目前为止我用到的WPF的功能只是部分,就感觉它能设计出很多酷炫的东西,有兴趣的话可以网上搜一下WPF设计出来的东西,单从美观上看确实要好,既然WPF很适合我现在的工作用,为什么后来又选择C/C++来开发呢原因有那么几点:首先虽然C#上手快,但是写好的代码不安全,很容易被反编译,原代码都可以完完全全的开放给别人;二就是在运行效率上不如C/C++,当然了C/C++也有其好坏,我只关注好的地方。
不多说费话,前文说我现在一为了软件不容易破解和效率选择了C/C++重新做一个插件式开发框架,有一个问题摆在面前就是,C/C++,并没有那么丰富的控件库,当然MFC先就不说了,我现在这里说明的就是脱离MFC的框架;在网上找了下,发现C/C++的控件库还是有好多了,找来找去还是选择了SharpUI,因为它是和我之前用WPF开发最接近的一个控件库,支持数据绑定,前端设计和后台实现不冲突;具体优点,这里就摘自SharpUI于说明文档里的几句话:
Sharpui是居于DUI思想的一套界面引擎,采用纯c++开发,实现完整的消息处理机制、渲染引擎分离以及灵活的控件扩展,是一款c++真正意义上的界面和业务逻辑分离的界面引擎。 Sharpui通过把界面元素抽象为一个一个单独的绘制单元,然后通过模版的概念把这些绘制单元重新组合成一个逻辑控件,因此,界面引擎实现最核心的渲染和绘制单元,通过组合得到各种各样的逻辑控件,从而满足不断变化的业务需求,而且,从根本上使得界面的开发简单、高效,业务真正地只关心自己的业务逻辑,至于业务数据的展现则通过界面引擎数据绑定核心层自动完成。Sharpui是目前c++领域优秀的界面引擎,其采用了和传统完全不一样的实现方式,传统的DUI界面库一般使用的是界面驱动数据;而Sharpui采用的是数据驱动界面。
其特点如下:
- 实现数据到UI控件的绑定,自动完成用户数据和UI控件同步更新,用户真正只需专注业务逻辑,开发效率更高效、更智能、更轻松;
- 实现完整的依赖属性系统,有效节约系统占用的内存空间;
- 实现完整的虚拟显示机制,轻松支持100000+数据项的呈现,大幅加速应用程序的启动速度和减少内存的占用;
- 完善的动画框架,用户可以轻松开发各种高效、酷炫的动画,满足实际业务需求,提升产品的用户体验;
- 界面相关绝大部分逻辑都可以通过xml配置完成,开发效率高、代码小;
- 采用虚拟控件和脏区域处理技术,系统占用cpu小、消耗内存低;
- 委托机制的实现,使得用户和界面的交互简单、轻松、自然。
具体示例程序示例图如下:
图2
先给大家上一下,我用C/C++基于SharpUI控件库写的控件式框架运行界面图(图3):
图3
在图3中的菜单和工具条全是在插件中定制,程序在启动后自动加载,在后续的篇章中会逐一介绍如何实现?在第二篇里会先介绍C/C++来实现的可停靠管理的实现。