近来使用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——源代码的组织,以及系统的架构的更多相关文章

  1. SaaS系列介绍之十三: SaaS系统体系架构

    1 系统体系架构设计 软件开发中系统体系架构决定了一个系统稳定性.健壮性.可扩展性.兼容性和可用性,它是系统的灵魂.体系架构是架构师所关注的核心.良好的体系架构是系统成功的开端,否则,再好的代码与设计 ...

  2. SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  3. 【转载】ROS系统整体架构

    目录 1.从文件系统级理解 2.从计算图级理解 3.从开源社区级理解 由于ROS系统的组织架构比较复杂,简单从一个方面来说明很难说清楚.按照ROS官方的说法,我们可以从3个方面来理解ROS系统整体架构 ...

  4. (系统架构)标准Web系统的架构分层

    标准Web系统的架构分层 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求的不同,不一定每一层 ...

  5. 标准Web系统的架构分层

    标准Web系统的架构分层 – 转载请注明出处 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求 ...

  6. 标准Web系统的架构分层[转]

    标准Web系统的架构分层 – 转载请注明出处 1.架构体系分层图 在上图中我们描述了Web系统架构中的组成部分.并且给出了每一层常用的技术组件/服务实现.需要注意以下几点: 系统架构是灵活的,根据需求 ...

  7. (数字IC)低功耗设计入门(三)——系统与架构级

    前面讲解了使用EDA工具(主要是power compiler)进行功耗分析的流程,这里我们将介绍在数字IC中进行低功耗设计的方法,同时也结合EDA工具(主要是Design Compiler)如何实现. ...

  8. Atitit.收银系统模块架构attilax 总结

    Atitit.收银系统模块架构attilax 总结 1. 常规收银系统模块结构1 1.1. 商品管理1 1.2. 会员系统1 1.3. 报表系统1 1.4. 会员卡系统1 1.5. 库存管理1 2.  ...

  9. 分布式公布订阅消息系统 Kafka 架构设计

    我们为什么要搭建该系统 Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(pipeline)的基础. 如今它已为多 ...

随机推荐

  1. part 2 Angular modules and controllers

    What is a module in AngularJS? A module is a container for different parts of your application i.e c ...

  2. SQL_UNPIVOT(行列转换)

    --临时表 insert into ##table([column1],S1, S2,S3)VALUES('VALUE','VALUE','VALUE','VALUE') --把原S1, S2,S3列 ...

  3. php删除数组中相同的元素,只保留一个相同元素

    <?php// 删除数组中相同元素,只保留一个相同元素function formatArray($array){sort($array);$tem = ”;$temarray = array() ...

  4. 学习 AngularJS 第一天

    AngularJS 高级程序设计 遇到问题:安装web服务器 var connect = require("connect"); connect.createServer( con ...

  5. setbuf

    setbuf是linux中的C函数,主要用于打开和关闭缓冲机制. setbuf函数具有打开和关闭缓冲机制.为了带缓冲进行I/O,参数buf必须指向一个长度为BUFSIZ(定义在stdio.h头文件中) ...

  6. Linux下OpenCV的环境搭建

    OpenCV is the most popular and advanced code library for Computer Vision related applications today, ...

  7. Makefile中=、:=、+=、?=的区别

    =,就是基本的赋值 :=,覆盖原来的值 +=,添加新值 ?=,如果没有赋值则赋值

  8. JS预览图像将本地图片显示到浏览器上的代码

    js代码实现: 从file域获取本地图片url并将本地图片显示到浏览器上. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitio ...

  9. jquery批量控制form禁用的代码

    jquery批量控制form禁用的代码. 代码: <script type="text/javascript" src="/jquery/jquery-1.8.2. ...

  10. Global::pickClassMethod_DNT

    /*************************************************** Created Date: 19 Jul 2013 Created By: Jimmy Xie ...