nopCommerce_4.4功能实现详解-----第22章 后记

第22章 后记

       “nopCommerce”程序从2008年至今(2021年7月1日星期四),已经有13个年头了,版本从1.0到现的4.40.3,已经有30多个版本了。本人实际上从2.x已经注意到了“nopCommerce”程序,当前它还是设计丑陋、实现逻辑相对混乱,但是经过多年的持续不断的改进,以及在程序中应用新的主流开发思想和技术,当前的“nopCommerce”程序中虽然小有瑕疵,但经过这么多年和版本的改进,从整个软件工程的整体角度来看,从所有评价角度来说,已经做到了相对的平衡和完美。比国内一些动辄数十万的网站软件项目,并不差,更为主要的是它是完全开源且免费的,开发者花费一些时间深入的研究它,在专业角度而言,费效比完全是不成例的。

    说实话让我决心深入的研究“nopCommerce”程序,是.NetCore框架的推出,因为.NetCore框架本身是完全开源的,那时“nopCommerce”程序的版本是4.1,.NetCore框架的版本正在从1.x向2.x过渡。如果.NetCore框架本身不是完全开源的,我现在还会使用.NetFramework框架来开发程序。毕竟我从.NetFramework框架转到.NetCore框架花费了2.5年的时间。

    环境决定生态,生态决定人,但是大国、强国如果有意愿创建环境,那么他就会通过改变环境来塑造一个对自己有利的环境(10-15年前有谁会认为氢能源汽车,不是汽车领域的主要发展方向,但中、美一个大国,一个强国就把氢能源汽车限制在日本这个生态圈内,且这个生态圈正在消亡)。所以中国一个大国,可及的未来也极有可能是一个强国,最近的社会环境及其以后的发展趋势决定了国内硬件要独立自主,而在硬件独立自主之前的软件开发生态首先会独立自主,因为独立自主的软件会先兼容当前不完全独立自主硬件。作为开发者要敏锐的发现这些大环境的变化,并尽快的适应变化。适应变化的一个比较快速的方式就是研究大量且优秀的开源程序(“nopCommerce”程序就是其中之一),并在自己的程序中迁移的使用它们。

    在工程技术领域不像科学领域一样,在科学领域如果一个人足够优秀、聪明和运气那么他可以以一个之力颠覆地球上绝大多数人在成百上千年基础上建立起来的三观。而工程技术领域必须向老农民一样成年累月的劳作,持续不断的改进,在实现的过程中随着思想的技术的发展,把它们融入到自己的工程中。这样一个开发者才能从磕磕绊绊,到能够驾驭,到唯手熟尔和最终的随心所欲,对于绝大多数工程技术人员而言只能达到第二个境界,对于第三个境界只有本行业的杰出从业者,而第四个境界他不但杰出从业者,他还引领、集成和创造该行业新的发展方向并在此基础上生成新的生态,从而改变人们生存的物理环境和社会环境。所以在工程技术领域即使一个人百分的优秀、聪明和运气也不可能凭一己之力颠覆成千上万人数十年建立起来的生态环境,而是迁移它们、改进它们、集成它们和融合它们(苹果手机所创建的智能手机生态环境就是一个现实的证,众多企业并在此基础上塑造了我们当前生存的物理环境和社会环境)。许多开发者总是认为在信息技术领域,思想和技术更新和变化太快,但是我认为只要长时间关注一两个方面(如果你自认为你足够优秀、聪明和运气那你可以关注更多),收获总的比所必须抛弃的多。

    (1)、下面是“nopCommerce”程序的整个实现结构,本人认为Nop.Web.Framework(展示框架层)是,“nopCommerce”开发者对.NetCore框架的十分聪明且有效的改进,它解决把在大量、复杂且较为混乱的具体定义和实现,被定义在了Nop.Web(展示架层)中。

(2)、下面是“nopCommerce”程序的对.NetCore框架内置方法Configure管道和ConfigureServices依赖注入中间方法自定义扩展的具体实现

  1. 从上图可以直接看出Order属性实例,只用于限定管道中间件方法的调用顺序或实例实例化顺序,否则会出现异常,这些定义规范和现象,这是由当前版本.NetCore框架中规范所规定的。
  2. 我一直在寻找一个生活中的例子来形象且恰当的来类比.NetCore框架中的Configure(管道)和ConfigureServices(依赖注入) 两个内置中间件方法,这个例子还真被我找到了:家里的净水机。

Configure(管道)方法中所定义或调用的中间件方法,就像是净水机(以.NetCore框架进行开发的程序)厂家生产的滤芯(管道中间件方法)一样,每一具都有自己独特的功能和作用,并通过组合净水机有不同的整合功能,但是滤芯(管道中间件方法)和净水机(以.NetCore框架进行开发的程序),一般情况下出自同一个厂家。但是管道中间件方法可以是.NetCore框架内置的、三方的或开发者自定义的,只要符合.NetCore框架所规定的中间件方法的定义格式和规范,它们都可以被安装到以.NetCore框架进行开发的程序中并实现其应有的功能。

ConfigureServices(依赖注入)方法,就像是把滤芯(管道中间件方法)安装在净水机(以.NetCore框架进行开发的程序)中一样,如果只把滤芯(管道中间件方法)买回来不安装,则净水机(以.NetCore框架进行开发的程序)就不会整合这个滤芯的功能。所以ConfigureServices(依赖注入)方法就是把内置的、三方的或开发者自定义的管道中间件方法安装到以.NetCore框架进行开发的程序中,使用程序在执行的过程中能够整合这项功能。

  1. 上图中4个特定功能的启动项实现类,按照其实现的特定功能来对.NetCore框架内置Configure管道和ConfigureServices依赖注入中间方法进行自定义扩展,使用程序在定义或设计时能够在实际实现上拥有该功能。
  2. ApplicationBuilderExtensions类通过调用.NetCore框架中内置的特定功能管道中间方法,来自定义扩展该特定功能的管道中间方法;ServiceCollectionExtensions类通过调用.NetCore框架中内置的特定功能依赖注入中间方法,来自定义扩展该特定功能的依赖注入中间方法,使用程序执行时能够整合这项功能。

(3)、“nopCommerce”程序通过以下类的定义来实现,对程序中所有具体实现类的实例进行统一、集中管理操作。这些统一、集中操作包含:依赖注入、实例化、为相应实例分配内存空间,所相应实例存储到指定的字典实例中。

1、“nopCommerce”程序在执行时第1步,通过EngineContext类对NopEngine类进行实例化操作,NopEngine类实例,第2步,NopEngine类的类型及其实例,通过Singleton类构建为对应的键/值对,最后把该键/值对实例被存储在BaseSingleton类所定义的字典实例中。根据定义限制具有以下特性:不受多线程操作操作影响,且为单例实例。

2、第2步,程序执行过程中使用NopEngine实例,通过统一、集中依赖注入操作操作和自定义的实例化方法和拷贝构造方法,对“nopCommerce”程序执行过程中,相应类进行实例化操作。第3步,通过NopEngine实例及其Singleton类把相应类的类型及其实例,构建为对应的键/值对。最后把程序执行过程中所构建的,所有键/值对实例存储在BaseSingleton类所定义的字典实例中。

3、,以上这些类是“nopCommerce”程序对整个程序执行过程进行管理的核心,在执行过程中所有类型实例的生命周期都是通过以上这些类的定义来实现的。这同样是“nopCommerce”程序实现的独特特征之一。

(4)、本系列的所有示例程序是由“nopCommerce”程序4.2、4.3和4.4版本中的源代码杂糅而成,并不是单纯的由4.4版本中的源代码所构成。下一个系列我将完成以4.40.3版本中的源代码为蓝本,来解释“nopCommerce”程序的构建过程。4.40.3版本的大的变更有:

    1、完全使用.NetCore内置依赖注入容器,进行依赖注入操作。

    2、缓存操作实现由redis变更为DistributedCache。

    3、把EntityFrameworkCore数据库CURD数据交换中间件变更为FluentMigrator,从而让程序实现对多数据库软件的支持。

    4、完全实现角色权限管理。

    5、展示层Areas的具体实现。

(5)、我准备新开一个系列的,根据因素不是因为上述的这些变更,而是因为有新的理解,我要对示例程序中的注释进行大量的重构。在这里再一次着重强调,如果使用依赖注入思想和技术进行开发,程序中注释的重要性与代码同样重要,甚至有的时候一个明确且有效的注释比相应的代码更能够快速有效的解决问题。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值