nopCommerce_4.4功能实现详解-----第5章 通过代码优先模式定义实体类、映射规则类和初始化安装数据类

“nopCommerce”使用代码优先的开发模式进行开发,所以在开发实践中会第一步先在程序中定义实体类及其属性;第二步把实体类及其属性映射规则定义在映射规则类中;第三步定义一个类,该类把初始化数据信息赋值给相应的实体实例,该的方法通过实体实例对这些数据信息进行持久化操作。在程序具体实现了以上的定义后,在程序第一次被执行时以上所有的定义都会在相应的数据库、表、行及其字段中得以体现。

0015、Customer、CustomerPassword、PasswordFormat

Customer类是一个实体类,该类实例其属性用于存储从浏览器页面上或数据库相应表中指定的数据信息,

并通过该类实例其属性,把这些信息显式或隐式的呈现在浏览器页面上或持久保存在数据库表相应的行中。

即实现浏览器页面、程序、数据库三者之间的数据信息交互操作。

CustomerPassword类是一个实体类,该类实例其属性用于存储从浏览器页面上或数据库相应表中指定的数据信息,

并通过该类实例其属性,把这些信息显式或隐式的呈现在浏览器页面上或持久保存在数据库表相应的行中。

即实现浏览器页面、程序、数据库三者之间的数据信息交互操作。

PasswordFormat类是一个通用枚举类,它定义了三种枚举名称及其整型值,来确认程序在具体实现上选择何种操作方式对用户输入密码字符串进行加密操作,该类实例为密码字符串加密操作提供指定的参数实例数据。

0016、CustomerMap、CustomerPasswordMap

CustomerMap类是一个指定实体类的规则映射类,该类通过重写基类中的通用同名方法对Customer实体类及其属性进行映射规则的具体定义,根据所定义的映射规则程序会把这些规则映射到相应的数据库、表及其字段上。

CustomerPasswordMap类是一个指定实体类的规则映射类,该类通过重写基类中的通用同名方法CustomerPassword实体类及其属性进行映射规则的具体定义,根据所定义的映射规则程序会把这些规则映射到相应的数据库、表及其字段上。

0017、ChangePasswordRequest、ChangePasswordResult

ChangePasswordRequest类是一个数据信息交换类,它通常被作为参数实例,在Customer实体实例属性与CustomerPassword实体实例属性之间通过该参数实例方便的进行数据信息的交换操作。

ChangePasswordResult类用于描述密码修改操作的状态,如果密码修改操作发生错误,则把产生的所有错误信息字符串存储到错误集列表实例中;如果错误集列表实例中不存在任何的错误信息字符串,则密码修改操作处于成功状态。

0018、ICustomerService、CustomerService

ICustomerService接口、CustomerService类,对用户对象定义了一些特定的实现方法,通过这些实现方法可以在操作时产生的数据实例化存储到相应的实体实例中,进一步把实体实例中的数据持久化到数据库表的相应行中;或者从到数据库表的行中记取数据到相应的实体实例的属性中,通过实体实例把这些数据信息显式或隐式的呈现在浏览器页面上。

0019、ICustomerRegistrationService、CustomerRegistrationService

ICustomerRegistrationService接口、CustomerRegistrationService类,为用户注册操作定义了相应的实现方法,通过这些实现方法可以在操作时产生的数据实例化存储到相应的实体实例中,进一步把实体实例中的数据持久化到数据库表的相应行中;或者从到数据库表的行中读取数据到相应的实体实例的属性中,通过实体实例把这些数据信息显式或隐式的呈现在浏览器页面上。

0020、IInstallationService、CodeFirstInstallationService

IInstallationService接口、CodeFirstInstallationService类,该类中所定义方法把一些实体实例中的数据信息持久化保存在第一次生成的数据库相应的表中,以提供管理人员能够远程的对该程序进操作和管理。

由于“nopCommerce”使用代码优先的开发模式来实现程序与数据库交互操作的,即通过程序定义的实体类和映射规则类,在程序第一次被执行后,程序会根据预先定义好的实体类、属性和实体映射规则类,来自动生成相应的数据库、表和字段及其方法调用的实体实例中的基本数据信息,持久化保存到数据库表的相应行中,这样才能保证管理人员能够远程的对该程序进操作和管理。

以领域模型进行程序开发的绝大数实用性程序实现中,在具体实现上总是把所有实体类的定义放置在Core项目的Domain文件夹中(这里包含nopCommerce),程序中的项目是是依据实现功能的不同而定义的,所以在Core项目最好放置一些通用性、常规性和基础性的类定义,而把用于特定实现的类定义放置在相应功能的项目中。我不知道别的开发者为什么会把Domain文件夹及其中所有的实体类放置Core项目,但本人实际开发中则会把用于定义特定实现的Domain文件夹及其中所有的实体类放置Date项目中。由于该程序用于对nopCommerce具体实现功能的详解,所以本人会按照nopCommerce的定义逻辑来对该程序进行详解。

一个实用性的软件程序项目,它实质上就是一项完整的工程,开发者会参照建筑工程的管理方式和流程(规章、制度),制定具有程序开发特色的管理方式和流程,由于软件程序的特殊性这些管理方式和流程会以不同的具体技术形式和手段的实现被应用在软件程序项目中,在程序的实际开发过程中使用这些具体技术形式和手段的实现,来共同保证:程序项目的开发进度;通过降低各种开发资源的消耗来降低成本;提高程序的调试效率和速度,使程序的逻辑实现更加符合现实业务及其流程,一个实用性的软件程序项目在实际实现中会在以下多种开发模式,选择性的使用多个或全部来实现上述的软件工程的管理目标:

  1. 自顶向下开发模式、自底向上开发模式,根据实现情况选择或者混合使用这两个开发模式加快程序开发。
  2. 领域模型进行程序开发,使程序的逻辑实现更加符合现实业务及其流程,对于程序的快速开发和降低开发成本有显著效果。
  3. 代码优先等开发模式通过使用现成的CURD数据库交互中间件和数据库软件加快程序开发、降低开发成本。
  4. 依赖注入开发模式通过迁移实例化对象,降低程序中各类实现之间的耦合程度,做到根据接口或抽象类来快捷、批量定义的具体实现类,从开发实现的灵活性方面加快程序开发、降低开发成本。
  5. 面向切面编程(AOP-Aspect Oriented Programming)开发模式, 通过预编译方式和运行期动态代理等技术,在程序调试时,根据特定方法所获取的日志记录,捕捉的错误、异常信息、性能监控信息等,快速定位到错误信息、异常信息、性能消耗异常或开销的位置,通过对相应位置进行快速调试工作来节省开发资源达到加快程序开发、降低开发成本的工程目标。

以上只是本从所知道的软件工程管理方式的具体技术实现,以便大家在对大中型实用程序工程进行理解时,能够从这些工程技术方式在程序中的使用,分割来的理解整个程序;也以该程序是通过那些工程技术方式来实现的在整体上来理解整个程序,但这些软件工程管理方式的技术实现一定不是全部。

对第五章所有功能更为具体实现和注释见:21-05-19_Nop4.4(008_通过代码优先模式定义实体类、映射规则类和初始化安装数据类,默认页被正常启动)。

注意:

上述示例程序中存在少量语句被注释掉了,主要是因为以下因素:

  1. 简化示例程序实现。
  2. 保证程序的正常执行。
  3. 注释掉少量语句会在下面的示例程序中被很快的使用上,所以只是注释掉它们,而不是删除它们。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值