![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
nopCommerce_4.4
文章平均质量分 82
zhoujian_911
这个作者很懒,什么都没留下…
展开
-
第七节 清理缓存
在nopCommerce_4.10执行插入操作后,会同时执行清理缓存操作。1、修改Service.Configuration.SettingService类中的InsertSetting方法为:/// <summary> /// 【插入设置】 /// <param name="setting">一个设置实体实例</par...原创 2018-11-26 08:09:06 · 200 阅读 · 0 评论 -
一步一步反向开发nopCommerce_4.10
第一节 前言nopCommerce从发布开始时我已经关注到了,但是当时并没有重视,直到我最近开发学习使用.Net Core架构开发网站时,才发现nopCommerc已经更新到了4.10版。本人认为在程序开发中评价一个应用程序的好坏,一个极其重要的标准就是该程序要不停的迭代和重构出新的版本。其他开发者在引用或使用这些第三方开发出的代码、中间件、控件、项目、Nuget和应用程序等开发资源时,一定要...原创 2018-10-06 23:14:16 · 750 阅读 · 0 评论 -
第六节 事件发布
第六节 事件发布 在执行nopCommerce_4.10应用程序时,如果与数据库发生数据交换(包含插入、修改、删除)时,产生错误,则触发事件发布机制,事件发布负责把错误信息写入数据库中的日志表。修改Service.Configuration.SettingService类中的InsertSetting方法为: /// <summary> //...原创 2018-11-23 11:21:28 · 190 阅读 · 0 评论 -
第二节 实现配置MVC服务
第二节 实现配置MVC服务使用.Net Core框架新建一个默认的Web程序时,其配置MVC服务的定义是存在于Startup.cs文件public void ConfigureServices(IServiceCollection services)方法中的services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Vers...原创 2018-10-08 17:11:31 · 2399 阅读 · 1 评论 -
第一节 基于Framework框架进行常规开发
本人将通过Framework与Core框架,使用常规的开发思想和手段,以对开发过的程序和代码进行重构的方式,渐进的在程序和代码中添加开发模式、控件反转(Inversion of Control,缩写为IoC)、依赖注入(Dependency Injection,简称DI)等开发思想,实现这些思想相应技术手段及其相互关系。为了大家能够容易和逐渐深入的理解,我会显式的指出它们之间的重构逻辑。即使使...原创 2019-12-13 11:45:30 · 351 阅读 · 0 评论 -
第十节 初始化用户、用色和密码
上节讲述了数据库的手动建立的过程,但是在数据库中的用户、角色和密码表中都没有任何数据产生,本节将讲述nopCommerce_4.20项目是怎样对用户、角色和密码表进行初始化的。 在InstallController.cs文件的public virtual IActionResult Index(InstallModel model)方法中添加以下语句: //现在解析安装服务...原创 2019-06-18 15:44:52 · 253 阅读 · 0 评论 -
第十八节 缓存
本节将通过对“2019-11-05_MyNopCommerce_VS19Core2.2Nop4.20(不删,014_添加一些中间件的定义)”程序进行重构,从而来实现授权功能。添加如图中所选择类的定义: 2、重构Nop.Web.Framework.Infrastructure.DependencyRegistrar类,重新定义 Register方法为: //缓存管...原创 2019-11-07 15:10:10 · 169 阅读 · 0 评论 -
第八节 nopCommerce_4.10应用程序中的项目架构及其引用
nopCommerce_4.10应用程序中必要项目有:Nop.Core、Nop.Data、Nop.Services、Nop.Web、Nop.Web.Framework。项目在nopCommerce_4.10应用程序的中的整体加构的依赖关系,从底至顶依次为:Nop.Core、Nop.Data、Nop.Services、、Nop.Web.Framework 、Nop.Web,其最终结果如下图:...原创 2019-03-08 20:26:22 · 237 阅读 · 1 评论 -
nopCommerce_4.4功能实现详解-----第6章 通过自定义接口及其类和EFCroe件间件注入到Autofac容器中
“nopCommerce4.4”中使用的依赖注入中间件容器是.NetCore框架自带的内置依赖注入中间件容器,而“nopCommerce4.2 、nopCommerce4.3”使用的是 “Autofac”第三方依赖注入容器。实质上“nopCommerce4.2 、nopCommerce4.3”程序是通过是.NetCore框架自带的内置依赖注入中间件容器实例来包含“Autofac”第三方依赖注入容器实例中所注入的自定义接口及其类,即最终所有的依赖注入操作通过是放置在.NetCore框架自带的内置依赖注入中间件原创 2021-07-01 10:44:23 · 187 阅读 · 0 评论 -
第四节 数据库启动配置
以上章节讲述的那么多,但依然没有我们最为关心的对数据库的操作,不管什么样的网站最后它们所提交的数据都要被持久化的数据库中。实际上对于国内的大多数开发者来说,在进行与数据库交互的程序开发时更加关注于数据层和所实现功能,对它们的对它们所进行的代码优化和重构所花费的资源也相对较多(本人也是这样)。通过nopCommerce_4.10应用程序的源代码属性国外的开发数据者相对来说更加关注于整个程序的调用或者...原创 2018-10-11 09:28:35 · 743 阅读 · 0 评论 -
.NetCore框架详解 -------三、 依赖、依赖注入、依赖倒置原则、 控制反转和容器
一、依赖(Dependency) 所有的工程产品都是有各个不同功能和特性的部件整合,通过相互协作完成来实现整个产品所需要实现的操作,各个不同相互协作关系形成了它们之间的相互依赖关系。对于软件开发角度从大的方面来说首先需要依赖于行业巨头提供的系统、开发工具、数据库等,中的方面需要依赖于行业巨头或第三方提供的框架、中间件等,而开发者所作的绝大部分工作是通过不同对类的定义整合这些软件、、框架、组件、中间件而形成自己的软件产品,而在整个过程中属性开发者原创的工作基本很少,这是软件行业的基本逻辑,无可厚...原创 2021-05-05 10:34:10 · 616 阅读 · 0 评论 -
第四节 .NetCore框架中的默认依赖注入
.NetCore框架在开发设计之初,就把控制反转(Inversion of Control,缩写为IoC)作为该框架的一个重要的开发设计思想,并通过在框架中集成依赖注入(DI)容器的默认实现等技术和手段表现并实施了这个开发设计思想。.NETCore团队对依赖注入的实现贯穿整个ASP.NET Core框架的整个项目中,它的实现被定义在Microsoft.Extensions.DependencyIn...原创 2019-12-24 10:30:04 · 723 阅读 · 2 评论 -
第十九节 任务
本节将通过对“2019-11-06_MyNopCommerce_VS19Core2.2Nop4.20(不删,015_添加缓存定义)”程序进行重构,从而来实现授权功能。1、添加如图中所选择类的定义:2、按F5可以发现数据库中已经生成了表LocaleStringResource和Log。3、添加CommonSettings和FulltextSearchMode定义。4、添加如图...原创 2019-11-11 10:34:16 · 164 阅读 · 0 评论 -
第二十节 结语
一步一步反向开发nopCommerce系列至此要将结束了。此系列主要讲是怎样在.Net Core2.X框架的基础上来述nopCommerce程序的。到这个时间点为止(2019年11月11日),.Net Core3框架的发布已经有一段时间了,本人大略的浏览了.Net Core3框架发现它与.Net Core2.X框架相差相当的大,在.Net Core3框架中更多关于服务配置的定义和声明被集成在了.N...原创 2019-11-11 11:12:48 · 109 阅读 · 0 评论 -
第五节 .NetFramework框架依赖注入技术实现
.NetFramework框架不提供默认依赖注入容器对依赖注入技术进行实现,如果所开发程序项目是基于.NetFramework框架且这个项目需要使用依赖注入技术进行实现,常用的手段有两种:1、使用微软自己提供MEF(Managed Extensibility Framework(托管可扩展框架)) 容器,MEF对应.NetFramework和.NetCore框架分别有两个不同的版本,.NetF...原创 2019-12-26 13:34:59 · 3404 阅读 · 0 评论 -
NetCore框架详解 -------四、.NetCore框架对依赖注入原则 的技术实现和运行原理
前三章主要从理论角度讲述了依赖注入原则及所衍生实现技术和手段产生的原因、发展和当前所处状况。大部分开发人为前三章对自己的技术水平的提高设有立竿见影的直接作用,但的我在里还是要说一下,前三章不但可以使开发者对更加容易的理解.NetCore框架,也是让开发者知道微软为什么会在已经有了一个成熟、使用范围广的.NetFramework框架时还会推出一个新的.NetCore框架历史和技术的重要因素。再者前三章理论性的知识在10年后对开发者或许还有指导作用,以下关于技术方面的具体实现或许因为对当前技术有着重要的指导性,原创 2021-05-05 22:24:32 · 1949 阅读 · 0 评论 -
第五节 数据库映射、仓储及连接
本章节所要实现的功能和定义的方法种类比较多样,我就按照本章节名称中的顺序一个个的剖析nopCommerce_4.10应用程序是如何通过定义相应的类和方法实现这些功能的。 一、数据库映射的定义及实现1、在nopCommerce_4.10应用程序中数据库映射的实现被定义在Nop.Data项目的Mapping文件夹中,而我则是把它们定义在Data项目的FluentAPI文件夹中(Fl...原创 2018-10-11 11:09:58 · 697 阅读 · 0 评论 -
第三节 通过Autofac中间件实现注册依赖
在开发中使用Autofac、MEF等中间件的根本目地是在整个的程序开发中,从前台的可视界面到最终的数据提交到数据库中这一流程可以被执行并通过,从纵向上保证了整个应用程序开发的可行性,而程序的其它功能和实现只是在此基础上横向的添加或扩展。相对于常规的从数据库到前台可视界面的常规开发,它特别适用于一个全新程序工程的开发,而对于一个已经存在程序工程的重构或修改,虽然依然可以使用Autofac、MEF等中...原创 2018-10-09 18:48:19 · 733 阅读 · 0 评论 -
第九节 手动生成数据库
在前几节讲述的MyNopCommerce项目使用Code-Frist方式自动生成数据库及其表。而nopCommerce_4.10项目中的数据库是通过创建数据库,自动生成数据库中的表并同时在相应表中生成初始化的数据。MyNopCommerce项目的数据库初始化方式要与nopCommerce_4.10项目中的相同,需要MyNopCommerce项目进行重构。 修改NopObjectConte...原创 2019-06-12 17:25:47 · 338 阅读 · 0 评论 -
第二节 Repository和UnitOfWork模式
一、为什么要使用Repository模式?Repository(仓储)模式最早是领域驱动设计 (DDD)思想提出的,实现其设计思想具体的技术手段。Repository(仓储)模式的主要解决的问题有:Repository(仓储)模式进一步对数据层中的查询、增、删、改等数据库业务操作,以及实体之间的映射进行封装,从而达到数据层与业务层(Service)的进一步解耦的目的。 Repositor...原创 2019-12-19 15:42:03 · 807 阅读 · 2 评论 -
.NetCore框架详解 -------二、 工程产品与耦合
工程产品与耦合程序开发中和软件工程中大牛、和一般开发者在所有的著作和文章中提到耦合,都是在讲述耦合是个样的不好,使用什么样的技术和手段来避免或减少耦合。从使程序开发中的各种类且有更好的灵活性、移植性、复用性和易替换性。上述这些是减少耦合所带来的各项收益,和其必要性,但是没有什么文章或著作(只少到现在为止因为本人的才疏学浅、阅读量不足和见识浅薄,从来没有阅读到这方面的文章。)来说上句在软件这种工程产中品耦合只能做有易和有效的减少,却不能被消灭,如果没有软件中没有耦合它就不是一个工程产品,而是开发者对一些功能原创 2021-05-05 10:20:55 · 235 阅读 · 0 评论 -
第十二节 初始化权限
本节将讲述nopCommerce_4.20项目是怎样生成数据库中的权限表,并对其进行插入初始化的数据。在Nop.Core\Domain\Security文件夹中添加DefaultPermissionRecord.cs、PermissionRecord.cs和PermissionRecordCustomerRoleMapping.cs三个类的定义。如图...原创 2019-10-15 15:47:34 · 342 阅读 · 0 评论 -
第十七节 中间件
本节将通过对“2019-11-05_MyNopCommerce_VS19Core2.2Nop4.20(不删,013_重构DependencyRegistrar))”程序进行重构,从而来实现授权功能。添加如图中所选择类的定义:添加Nop.Services.Common.NopCommonDefaults定义。 重构WebHelper和IWebHelper添加GetThisPageUrl方...原创 2019-11-11 11:15:19 · 141 阅读 · 0 评论 -
第52章 HTTPS SSL证书与Data Protection(数据安全)
自定义为HTTPS配置SSL证书和 通过Data Protection实例及其方法实现加/解密操作。原创 2022-06-25 12:33:29 · 1050 阅读 · 0 评论 -
nopCommerce_4.4功能实现详解-----第22章 后记
第22章 后记 “nopCommerce”程序从2008年至今(2021年7月1日星期四),已经有13个年头了,版本从1.0到现的4.40.3,已经有30多个版本了。本人实际上从2.x已经注意到了“nopCommerce”程序,当前它还是设计丑陋、实现逻辑相对混乱,但是经过多年的持续不断的改进,以及在程序中应用新的主流开发思想和技术,当前的“nopCommerce”程序中虽然小有瑕疵,但经过这么多年和版本的改进,从整个软件工程的整体角度来看,从所有评价角度来说,已经做到了相对的平衡和完美。比...原创 2021-07-04 12:30:53 · 543 阅读 · 4 评论 -
nopCommerce_4.4功能实现详解-----第21章 Session定义的具体实现
本章将按照自顶向下的开发模式,来解释Session是怎样被“nopCommerce”程序定义实现的。(1) 、修改Controllers.CustomerController类。0053、NopCommonStartup(2)、NopCommonStartup类是“nopCommerce”程序对.NetCore框架中,所有的内置常规依赖注入和管道中间件方法的自定义和扩展,为了简化实现逻辑和具体实现该类了除了Session依赖注入和管道中间件方法,之外的其它依赖注入和管道中间件方法..原创 2021-07-04 12:25:28 · 161 阅读 · 1 评论 -
nopCommerce_4.4功能实现详解-----第20章 身份认证权限服务定义的具体实现
本章将按照自顶向下的开发模式,来解释怎样在登录页面上显示自定义的Cookie对象。(1) 、修改Controllers.CustomerController类。0052、IAuthenticationService、CookieAuthenticationService(2)、CookieAuthenticationService类继承于IauthenticationService接口,该类通过自定义和扩展内置身份认证实例的API方法进行登录/登出操作,并在操作过程中所获取相关数据持久化到相原创 2021-07-02 09:22:59 · 167 阅读 · 0 评论 -
nopCommerce_4.4功能实现详解-----第19章 内置身份认证权限启动定义的具体实现
本章将按照自顶向下的开发模式,来解释“nopCommerce”程序是怎样实现对Cookie和Session的支持的0048、LoginModel(1) 、LoginModel类是登录视图模型类,用于程序与相应浏览器页面的数据交互操作。(2) 、定义Controllers.CustomerController.Login方法。(3) 、定义Views/Customer/ Login.cshtml视图。(4) 、修改Views/Shared/_Layout.cshtml视图。(5)原创 2021-07-02 09:18:42 · 238 阅读 · 1 评论 -
nopCommerce_4.4功能实现详解-----第18章 通过设置服务实例持久化默认缓存数据,并利用Redis存储缓存数据。
0046、SettingsSource(1)、重构Nop.Services.Installation.CodeFirstInstallationService类。 1、定义InstallSettings方法。 2、在Nop.Services.Installation.CodeFirstInstallationService.InstallRequiredData方法中调用InstallSettings方法。(2)、在Nop.Web.Framework.Infrastructu...原创 2021-07-02 09:06:46 · 352 阅读 · 0 评论 -
nopCommerce_4.4功能实现详解-----第17章 服务层设置和缓存定义实现
“nopCommerce”程序通过设置服务对ISettings接口及其实现类CachingSettings进行依赖注入操作,所以本章将先解释设置服务的实现。(1)、重构Nop.Core.BaseEntity类。0040、ISetting(2)、ISetting接口在“nopCommerce”程序中主要用于多个具体现类的继承操作,“nopCommerce”程序可以通过该接口与多个具体现类进行批量的依赖注入操作和相应的实例化操作0041、HashHelper(3)、...原创 2021-07-02 08:57:06 · 187 阅读 · 1 评论 -
nopCommerce_4.4功能实现详解-----第16章 核心层缓存定义实现
下面从第16~18章将按照自底向上的开发模式来解释,“nopCommerce4.3”程序是通过那些定义来实现,使用Redis内存数据库来缓存“nopCommerce”程序中的数据,第14章将会解释“nopCommerce”程序所有的缓存具体定义的核心层是怎样来具体定义和实现的。“nopCommerce4.3”程序是最后一个使用常规定义方式使用Redis内存数据库来缓存“nopCommerce”程序中的数据,在之后的“nopCommerce4.4”程序中将使用DistributedCache定义方式使用R原创 2021-07-02 08:48:48 · 504 阅读 · 0 评论 -
nopCommerce_4.4功能实现详解-----第15章 添加NopConfig类定义重构整个程序实现
使用Redis内存数据库与“nopCommerce”程序进行缓存数据交互,则需要先在程序启动项的指定配置文件中,定义和获取关于Redis内存数据库的配置信息,下面从第本章将按照自顶向下的开发模式来解释,“nopCommerce4.3”程序是通过那些定义来实现,Redis内存数据库的配置信息的定义和获取操作的。(1)、在启动项的appsettings.json文件中添加关于Redis内存数据库配置信息的定义。0032、NopConfig(2)、NopConfig类的主要作用是把程序中配置文件.原创 2021-07-02 08:25:32 · 196 阅读 · 1 评论 -
nopCommerce_4.4功能实现详解-----第14章 实现设置实体与数据库交互操作
下面将按照自底向上的开发模式来解释,怎样来实现设置实体与数据库之间的交互操作。0030、Setting、SettingMap(1)、Setting类,是一个设置实体类,该类用于来存储和持久化“nopCommerce”程序中的一些基本的配置信息数据,为了简化实现逻辑和具体实现,删除了该类所继承的本地化接口。Setting设置实体类所所对应的设置表中存在着大量的默认设置数据,而这些数据需要被缓存到内存中,从而大幅度的减少程序对数据库表的访问频率(这是Setting设置实体类实例的重要功能...原创 2021-07-02 08:15:59 · 186 阅读 · 2 评论 -
nopCommerce_4.4功能实现详解-----第13章 实现角色实体与数据库交互操作
下面将按照自底向上的开发模式来解释,怎样来实现角色实体与数据库之间的交互操作。(1)、修改Customer类的定义,添加CustomerRole和CustomerCustomerRoleMapping实体实例的相关定义,构建Customer实体实例与CustomerRole实体实例的多对多映射关系。方法AddCustomerRoleMapping和RemoveCustomerRoleMapping,因为这两个方法只用于内存数据交换,而不涉及数据库数据交换,所以它们被定义直接Nop.Core.Domain原创 2021-07-02 08:12:23 · 176 阅读 · 2 评论 -
nopCommerce_4.4功能实现详解-----第12章 准备使用Redis内存数据库作为当前程序的缓存
对数据加载的效率而言,从上面三图可以很明显的看出Redis内存数据库的加载效率对相比于直接从MircoSoftSQL数据库或从DbSet实体实例中加载数据来说并不显得效率有多高,甚至还会降低,本人认为Redis内存数据库的最大作用是降低程序对数据库的访问频率,特别是一些长期没有变化的数据例如图中提到的角色等。对以上功能更为具体实现和注释见21-06-06_RedisRole(MiniProfiler监视从数据库,Redis获取数据的效率)。...原创 2021-07-02 08:08:54 · 156 阅读 · 0 评论 -
nopCommerce_4.4功能实现详解-----第10章 在数据库软件中手动新建的数据库,程序执行后在该数据库中自动生成相应的表
下面按照自底向上的开发模式来具体实现,手动的在相应数据中生成表。(1)、修改IdbContext接口和NopObjectContext类。0025、DbContextExtensions(2)、DbContextExtensions类定义了程序与相应数据库交互操作的一些通用方法,这些方法包括: 1、根据实体的类型实例创建该实体对应表的副本。 2、根据表名称,除指定表。 3、获取表名称。 4、获取不同类型的字段最大长度。 5、根据连接字符串,获...原创 2021-07-01 14:51:13 · 209 阅读 · 0 评论 -
nopCommerce_4.4功能实现详解-----第9章 先具体实现自定义和扩展.NetCore框架中的管道方法
下面按照自底向上的开发模式来具体实现自定义和扩展.NetCore框架中的管道方法。1、具体实现自定义和扩展IServiceProvider接口及其方法修改Iengine、NopEngine:(1)、在NopEngine类中定义IServiceProvider接口实例,GetServiceProvider()方法自定义和扩展.NetCore框架中IServiceProvider接口实例的内置方法GetService<T>()。(2)、在NopEngine类中自定义Resolve三个原创 2021-07-01 14:45:47 · 265 阅读 · 0 评论 -
nopCommerce_4.4功能实现详解-----第8章 为什么自定义和扩展.NetCore框架中的管道方法?
1、.NetCore框架中类实现的实例化操作的两种主要方式(1)、在相应类的拷贝构造方法通过指定类的接口或抽象声明的参数实例,赋值给该接口或抽象声明的类实例对一个/批指定类进行实例化/初始化操作。这种实例化方式的实例化操作的整个过程完全被.NetCore框架所封装,除了相应类的拷贝构造方法外,无任何实例化操作被暴露出来。(2)、声明IServiceProvider接口的实例,调用该实例泛型方法GetRequiredService<T>()、GetService<T>()...原创 2021-07-01 14:39:27 · 189 阅读 · 0 评论 -
nopCommerce_4.4功能实现详解-----第7章 在启动项相应位置自动新建App_Data文件夹及dataSettings.json文件
下面将按照自顶向下的开发模式,对上面示例程序进行修改,在程序第一次被行时完成以下操作:根据相对路径字符串,在启动项相应位置自动新建App_Data文件夹及dataSettings.json文件,并向dataSettings.json文件中持久化保存一些基本的数据库连接信息。 通过默认页面输入操作向dataSettings.json文件中持久化保存一些基本的数据库连接信息。1、根据相对路径字符串,在启动项相应位置自动新建App_Data文件夹及dataSettings.json文件(1)、修改默认原创 2021-07-01 14:37:02 · 296 阅读 · 0 评论 -
nopCommerce_4.4功能实现详解-----第5章 通过代码优先模式定义实体类、映射规则类和初始化安装数据类
“nopCommerce”使用代码优先的开发模式进行开发,所以在开发实践中会第一步先在程序中定义实体类及其属性;第二步把实体类及其属性映射规则定义在映射规则类中;第三步定义一个类,该类把初始化数据信息赋值给相应的实体实例,该的方法通过实体实例对这些数据信息进行持久化操作。在程序具体实现了以上的定义后,在程序第一次被执行时以上所有的定义都会在相应的数据库、表、行及其字段中得以体现。0015、Customer、CustomerPassword、PasswordFormatCustomer类是一个实体原创 2021-07-01 10:42:24 · 219 阅读 · 1 评论