程序开发常用的开发框架不是“自顶向下”就是“自底向上”,不管是那种方式,都说明框架是直上直下的框架,即是直线或墙型的框架模式,这在现实世界也工程建筑常见的框架(因为这种架构,最为成熟,成本最低,实现速度最快),但是异形的建筑框架也有的(例如悉尼的歌剧院等)。nopCommerce程序的整体框就是软件工程实现中的异形框架,通过AppDomain.CurrentDomain注入类型实例化,把整个软件构建为环形架构,再加上插件项,最终框架命名为;“棒棒糖”架构更为合适,最终如下图所示:
1 IConfig与appsettings.json
nopCommerce程序有大量需要使用的第3软件、中间件或服务来实现特定的功能,nopCommerce程序通过Iconfig及其具体继承具体实现类把程序所连接的第3软件、中间件或服务简单的连接信息(例如数据库软件:SQL Server,分布式缓存软件:Redis等),持久化到appsettings.json文件中,以使用nopCommerce程序正常连接到这些。更为明显的说法是:Iconfig及其具体继承具体实现类所交互的数据和功能来自nopCommerce程序外部。
2 ISettings与Settings表
nopCommerce程序是一个通用型程序,需要适用于极广的范围和极强的扩展性,nopCommerce程序为实现这种需求,nopCommerce程序通过ISettings及其具体继承具体实现类把程序实现需求所需的配置数据持久化存储到Settings表中。更为明显的说法是:ISettings及其具体继承具体实现类所交互的数据和功能来自nopCommerce程序本身。
3 插件与plugins.json
nopCommerce程序增强适用范围和功能的方式是通过插件,plugins.json中持久化存储着nopCommerce程序中已经安装插件的信息。同时卸载的插件也必须从plugins.json中删除所对应的信息。nopCommerce程序中的插件包含两种,1种是已经集成在nopCommerce程序中,另1种则是需要从官方网站上下载后集成在nopCommerce程序中。
这种增强适用范围和功能的方式,虽然足够灵活,使nopCommerce程序具有了系统软件的功能特性,但出增加的程序崩溃的概率,大大降低了程序的运行效率,增加了资源的消耗。