NopCommerce——源代码的组织,以及系统的架构

时间:2021-05-05 22:15:08

  近来使用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解决方案来浏览里面的工程项目。

  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