很多人都说通过阅读、学习大神们高质量的代码是提高自己技术能力最快的方式之一。我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统、软件开发的规范和一些新的技术、技巧,可以快速地提高我们的技术能力。所以我最近决定写一个“nopCommerce源码架构详解”的系列,来详细剖析NopCommerce的架构和原理。

Nopcommerce主要用到的技术及特点:

1、Entity Framework

2、ASP.NET mvc

3、IoC容器+依赖注入(Autofac)

4、使用EF中的EntityTypeConfiguration+Repository模式+领域驱动开发

5、插件技术

6、Themes主题技术

7、Ajax

8、Validator验证技术

9、面向接口编程

10、事件通知、日志机制

11、缓存(System.Runtime.Caching.MemoryCache)

12、网站计划任务

13、消息队列

14、多语言支持

15、Jquery UI+kendo UI

16、多网店支持、促销推广、在线支付

17、seo友好支持

18、其它asp.net MVC和c#最新核心技术

Nopcommerce是国外的一个高质量的开源b2c网站系统,最新版是基于Entity Framework6.0和MVC5.0,使用razor模板引擎,有很强的插件机制,包括支付配送功能都是通过插件来实现的,基于xml的多语言版本,非常灵活的语言切换功能,包括在后台都能同时编辑产品的中英文属性,非常适合做外贸,优秀超前的程序架构,性能也非常强大,自定义的产品名称和分类又有很好的seo优化。综合能力远远高于国内的一些程序架构糟糕的.net商城程序,是二次开发和大型b2c架构的首选。3.0开始支持多店。

前台页面效果:

后台管理页面:

NopCommerce最新版的在CodePlex的源码下载。

nopcommerce主要从上往下Nop.Web、Nop.Admin、Nop.Web.Framework、Nop插件、Nop.Services、

Nop.Core、Nop.Data。引用的第三方模块EntityFramework,Autofac(控制反转,即依赖注入),telerik.extern.mvc(后台管理用的界面,2.0后开始使用)。

下图是nopcommerce最新版本3.8的源码结构:

1、Libraries

Libaries文件夹下项目主要是一些公共库代码。

Nop.Core:封装了项目要用的基础核心类,接口。比如领域对象类,缓存类、接口,扩展方法等等。

Nop.Data:EF相关的数据访问相关的类封装和扩展。里面最关键的就是Mapping,Nop采用代码API的形式来建立Model和数据库表之间的映射,命名都是以“表名+Map”的形式。比如:

  1. using System.Data.Entity.ModelConfiguration;
  2. using Nop.Core.Domain.Blogs;
  3. namespace Nop.Data.Mapping.Blogs
  4. {
  5. public partial class BlogCommentMap : EntityTypeConfiguration<BlogComment>
  6. {
  7. public BlogCommentMap()
  8. {
  9. this.ToTable("BlogComment");
  10. this.HasKey(pr => pr.Id);
  11. this.HasRequired(bc => bc.BlogPost)
  12. .WithMany(bp => bp.BlogComments)
  13. .HasForeignKey(bc => bc.BlogPostId);
  14. this.HasRequired(cc => cc.Customer)
  15. .WithMany()
  16. .HasForeignKey(cc => cc.CustomerId);
  17. }
  18. }
  19. }

以后我会详细的说明这个Mapping的怎么实现的以级这样做的好处。

Nop.Services:真正的处理数据的业务层,都是通过面向接口编程,减少对具体实现的依赖。

2、Plugins

Plugins文件夹下是放的插件项目,你也可以按照规则开发属于自己的插件。

3、Presentation

Presentation中文意思是呈现、表现的意思。也就是这文件夹下的项目都是解决方案的表示层。

Nop.Admin:后台管理

Nop.Web:前台Web项目

Nop.Web.Framework:Web及MVC相关扩展和公共类的封装,比如:BaseController,Seo相关,主题Themes,autofac依赖注入DependencyRegistrart等等。

4、Tests

Tests下面放的都是对应项目的单元测试。

图片以及部分内容转载:蓝狐工作室

【NopCommerce源码架构学习-一】--初识高性能的开源商城系统cms的更多相关文章

  1. NopCommerce源码架构详解--初识高性能的开源商城系统cms

    很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从中学习很多企业系统.软件开发的规范和一些新的技术.技巧,可以快速地提高我们 ...

  2. 【NopCommerce源码架构学习-二】单例模式实现代码分析

    单例模式是是常用经典十几种设计模式中最简单的..NET中单例模式的实现也有很多种方式.下面我来介绍一下NopCommerce中单例模式实现. 我之前的文章就分析了一下nop中EngineContext ...

  3. NopCommerce源码架构详解

    NopCommerce源码架构详解--初识高性能的开源商城系统cms   很多人都说通过阅读.学习大神们高质量的代码是提高自己技术能力最快的方式之一.我觉得通过阅读NopCommerce的源码,可以从 ...

  4. NopCommerce源码架构

    我们承接以下nop相关的业务,欢迎联系我们. 我们承接NopCommerce定制个性化开发: Nopcommerce二次开发 Nopcommerce主题开发 基于Nopcommerce的二次开发的电子 ...

  5. Nop--NopCommerce源码架构详解专题目录

    最近在研究外国优秀的ASP.NET mvc电子商务网站系统NopCommerce源码架构.这个系统无论是代码组织结构.思想及分层都值得我们学习.对于没有一定开发经验的人要完全搞懂这个源码还是有一定的难 ...

  6. 一张思维导图辅助你深入了解 Vue | Vue-Router | Vuex 源码架构

    1.前言 本文内容讲解的内容:一张思维导图辅助你深入了解 Vue | Vue-Router | Vuex 源码架构. 项目地址:https://github.com/biaochenxuying/vu ...

  7. vnpy源码阅读学习(1):准备工作

    vnpy源码阅读学习 目标 通过阅读vnpy,学习量化交易系统的一些设计思路和理念. 通过阅读vnpy学习python项目开发的一些技巧和范式 通过vnpy的设计,可以用python复现一个小型简单的 ...

  8. 深入解析Underscore.js源码架构

    Underscore.js是很有名的一个工具库,我也经常用他来处理对象,数组等,本文会深入解析Underscore源码架构,跟大家一起学习下他源码的亮点,然后模仿他写一个简单的架子来加深理解.他的源码 ...

  9. 如何快速为团队打造自己的组件库(上)—— Element 源码架构

    文章已收录到 github,欢迎 Watch 和 Star. 简介 详细讲解了 ElementUI 的源码架构,为下一步基于 ElementUI 打造团队自己的组件库打好坚实的基础. 如何快速为团队打 ...

随机推荐

  1. ASP.Net请求处理机制初步探索之旅 - Part 2 核心

    开篇:上一篇我们了解了一个请求从客户端发出到服务端接收并转到ASP.Net处理入口的过程,这篇我们开始探索ASP.Net的核心处理部分,借助强大的反编译工具,我们会看到几个熟悉又陌生的名词(类):Ht ...

  2. 小型单文件NoSQL数据库SharpFileDB初步实现

    小型单文件NoSQL数据库SharpFileDB初步实现 我不是数据库方面的专家,不过还是想做一个小型的数据库,算是一种通过mission impossible进行学习锻炼的方式.我知道这是自不量力, ...

  3. 文件上传之Apache commons fileupload使用

    后台servlet代码:         File file1 = null,file2=null;         String description1 = null,description2 = ...

  4. Java批处理ExecutorService/CompletionService

    服务端接收一个请求,常常需要同时进行几个计算或者向其他服务发送请求,最后拼装结果返回上游.本文就来看下JDK提供几个并行处理方案,牵涉到ExcecutorService/CompletionServi ...

  5. Ajax概要:

    Ajax概要: Ajax不是个全新的技术,它是多种技术合并在一起产生的,包括XHTML,CSS,JavaScript,XmlHttpRequest,XML,JSON,DOM等 优点:(这也解释了为何我 ...

  6. 让IE系列支持HTML5的html5shiv.js和respond.min.js

    HTML5越来越成为主流,被广大搜索引擎所使用,但IE对HTML5的支持却常被人唾弃. 解决方案有两种: 1.为网站创建多套模板,通过程序对User-Agent的判断给不同的浏览器用户显示不同的页面, ...

  7. Resource governor2:Configuration query

    SQL Server Engine 当前使用的configuration,称作 In-memory configuration,使用DMV:sys.dm_resource_governor_XXX查看 ...

  8. The transaction log for database 'tempdb' is full due to 'ACTIVE_TRANSACTION'

    今天早上,Dev跟我说,执行query statement时出现一个error,detail info是: “The transaction log for database 'tempdb' is ...

  9. 【已解决】WinPhone模拟器报错:模拟器没法确定来宾虚拟机通信的主机ID地址。某些功能已被禁用

    先看警告 再看错误信息 计算机管理打不开就==>Win+R ==>compmgmt.msc 发现,dnt在管理员权限组里面,也在Hyper-V权限组里面 看看Hyper-V的驱动有木有被禁 ...

  10. ModelDataExchange - Import

    ModelDataExchange - Import eryar@163.com Abstract. The ModelDataExchange import utility enables the ...