NopCommerce——源代码的组织,以及系统的架构
近来使用NopCommerce进行开发,仿照源码的Demo也能做出看上去还蛮高端大气上档次的系统出来,现下准备深入学习学习。首先从官方的Documentation开始看起,先来一篇官网文章的翻译(园里已有类似文章,觉得我翻译水平差的请参照相关文章)。
原文地址:http://www.nopcommerce.com/docs/71/source-code-organization-architecture-of-nopcommerce.aspx.
源代码的组织以及nopcommerce的架构
对于开发者来说,这篇文档可以指导你了解nopCommerce的系统结构。对于刚接触nopCommerce的开发者,这份文档是你学习nopCommerce源码的基础。首先,nopCommerce的源码是很容易获取的。它是一个开源的应用程序,所以,你只需要简单的从官网上下载就能获取到我们的源码。这些项目以及文件夹按它们在Visual Studio中的顺序陈列出来。当你读到这篇文档时,我们建议你在Visual Studio中打开nopCommerce解决方案来浏览里面的工程项目。

大多数的工程项目、目录以及文件的命名都是为了让你能够对它的意图首先有一个粗略的了解。例如,我们甚至不用去看这个叫作Nop.Plugin.Payments.PayPalStandard的工程项目内部的代码,就能猜到它是用来做什么的。
\Libraries\Nop.Core
Nop.Core工程项目包含了一些nopCommerce的核心类(core classes),诸如缓存,事件,帮助和业务对象(例如,订单和用户实体)。
\Libraries\Nop.Data
Nop.Data工程项目包含了一些用于读写数据库或者其它数据存储的类和方法。它有助于将你的数据访问逻辑与你的业务对象分离开来。nopCommerce使用Entity Framework (EF) 代码优先方法。这样能让你在代码中定义数据实体(所有的核心实体都被定义在Nop.Core工程项目当中),并且能根据你刚才定义的数据实体生成数据库。这就是它被叫做代码优先的原因。这样做后,你能够使用LINQ访问你的对象,而LINQ能自动翻译成SQL在数据库中执行。nopCommerce使用fluent code API 来充分的定制持久映射。你可以从这或者这了解更多关于代码优先的信息。
\Libraries\Nop.Services
这一工程项目当中包含了一系列核心的Services,业务逻辑,验证或者与数据相关的计算。如果需要,一些人称它为业务接入层(BAL)。
在 \Plugins\ 解决方案文件夹下的工程项目
\Plugins 是一个包含插件工程项目的Visual Studio解决方案文件夹。它位于你解决方案的根目录下。但是插件的DLLS(动态链接库?)被自动的拷贝到\Presentation\Nop.Web\Plugins\目录,它用于放置已经发布的插件。因为所有插件生成的输出路径都被设置为"..\..\Presentation\Nop.Web\Plugins\{Group}.{Name}\"。这样做可以让插件包含其它的外部文件,诸如一些静态内容(CSS 或者 JS 文件)而不必为了项目能够运行而在各个工程项目之间拷贝文件。
\Presentation\Nop.Admin
Nop.Admin是一个MVC Web应用程序项目。如果你从未使用过MVC,请点击这获取跟多信息。正如你所猜到的,它是一个admin 区域的展示层。这一工程项目位于\Presentation\Nop.Web\Administration目录之下。这一工程项目不能运行。
\Presentation\Nop.Web
Nop.Web也是一个MVC Web应用程序项目,一个公有区域的展示层。它就是你实际能够运行的应用程序。它是应用程序的启动项目。
\Presentation\Nop.Web.Framework
Nop.Web.Framework是一个类库工程项目,它包含了一些Nop.Admin 和 Nop.Web 工程项目共同需要呈现的东西。
\Test\Nop.Core.Tests
Nop.Core.Tests是用于Nop.Core 工程项目的测试。
\Test\Nop.Data.Tests
Nop.Data.Tests用于Nop.Data工程项目的测试。
\Test\Nop.Services.Tests
Nop.Services.Tests用于Nop.Services工程项目的测试。
\Test\Nop.Tests
Nop.Tests是一个类库,它包含一些公共测试类以及其它测试项目的帮助文件。它没有任何测试。
\Test\Nop.Web.MVC.Tests
Nop.Web.MVC.Tests用于是展示层的测试。
Time: 2013-11-28
NopCommerce——源代码的组织,以及系统的架构的更多相关文章
- SaaS系列介绍之十三: SaaS系统体系架构
1 系统体系架构设计 软件开发中系统体系架构决定了一个系统稳定性.健壮性.可扩展性.兼容性和可用性,它是系统的灵魂.体系架构是架构师所关注的核心.良好的体系架构是系统成功的开端,否则,再好的代码与设计 ...
- SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构
摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...
- 【转载】ROS系统整体架构
目录 1.从文件系统级理解 2.从计算图级理解 3.从开源社区级理解 由于ROS系统的组织架构比较复杂,简单从一个方面来说明很难说清楚.按照ROS官方的说法,我们可以从3个方面来理解ROS系统整体架构 ...
- (系统架构)标准Web系统的架构分层
标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...
- 标准Web系统的架构分层
标准Web系统的架构分层 – 转载请注明出处 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求 ...
- 标准Web系统的架构分层[转]
标准Web系统的架构分层 – 转载请注明出处 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求 ...
- (数字IC)低功耗设计入门(三)——系统与架构级
前面讲解了使用EDA工具(主要是power compiler)进行功耗分析的流程,这里我们将介绍在数字IC中进行低功耗设计的方法,同时也结合EDA工具(主要是Design Compiler)如何实现. ...
- Atitit.收银系统模块架构attilax 总结
Atitit.收银系统模块架构attilax 总结 1. 常规收银系统模块结构1 1.1. 商品管理1 1.2. 会员系统1 1.3. 报表系统1 1.4. 会员卡系统1 1.5. 库存管理1 2. ...
- 分布式公布订阅消息系统 Kafka 架构设计
我们为什么要搭建该系统 Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础. 如今它已为多 ...
随机推荐
- c#中的方法的定义和运用
首先,理解下,函数和方法: 其实两者是一样的,只是个叫法不同. C#中叫做Method,中文叫方法: C++中称为Function,中文叫函数. 函数是Function,多指以前面向过程编程时候,将逻 ...
- Android Studio使用OpenCV后,使APP不安装OpenCV Manager即可运行
转载自http://www.cnblogs.com/tail/p/4618790.html 采用静态初始化的方法,可以戳下边的链接查看官方的文档介绍 http://docs.opencv.org/do ...
- 联系电话正则表达式(jquery表单验证)
一.实现的效果图: 二.CSS样式 /*验证样式*/ .onError{ vertical-align: middle; color: #ff0000; line-height: 22px; padd ...
- C# Ajax 手机发送短信验证码 校验验证码 菜鸟级别实现方法
1.Ajax请求处理页面: using System; using System.Collections.Generic; using System.Linq; using System.Web; u ...
- 【学习笔记】【C语言】进制
1. 什么是进制 是一种计数的方式,数值的表示形式 2. 二进制 1> 特点:只有0和1,逢2进1 2> 书写格式:0b或者0b开头 3> 使用场合:二进制指令\二进制文件,变量在内 ...
- Stack Overflow 2016最新架构探秘
这篇文章主要揭秘 Stack Overflow 截止到 2016 年的技术架构. 首先给出一个直观的数据,让大家有个初步的印象. 相比于 2013 年 11 月,Stack Overflow 在 20 ...
- http请求访问过程
流程图(理解): 域名的作用: 对外,供访问 对内,提供域名与目录的对应关系 步骤说明: http://www.163.com/index.html 第1步:在本机的hosts文件中查找域名与IP的对 ...
- JavaScript选项卡
实现js选项卡 html的代码如下: <div class="tabdiv"> <ul class="tabs" id="oTab& ...
- 会场安排问题—NYOJ14
时间限制:3000 ms | 内存限制:65535 KB 难度:4 描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就是安排学校 ...
- Linux实现的IEEE 802.q VLAN
本文转载自: http://blog.chinaunix.net/uid-20786208-id-4291059.html Technorati 标签: Linux VLAN ---------- ...