很多人都说通过阅读、学习大神们高质量的代码是提高自己技术能力最快的方式之一。我觉得通过阅读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.4的源码结构:

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下面放的都是对应项目的单元测试。

转载于 :https://www.lanhusoft.com/Article/349.html

Nopcommerce主要用到的技术及特点的更多相关文章

  1. Nopcommerce主要的技术

    Nopcommerce主要用到的技术及特点: 1.Entity Framework 2.ASP.NET mvc 3.IoC容器+依赖注入(Autofac) 4.使用EF中的EntityTypeConf ...

  2. 【NopCommerce源码架构学习-一】--初识高性能的开源商城系统cms

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

  3. NopCommerce功能与特点介绍

    [本文转自]http://www.cnblogs.com/nopcommerce-b2c/p/3758676.html 前两节我们主要介绍了NopCommerce下载与安装和NopCommerce中文 ...

  4. 03.NopCommerce功能与特点介绍

    前两节我们主要介绍了NopCommerce下载与安装和NopCommerce中文语言包,让大家体验一下NopCommerce.这次我们主要来介绍NopCommerce的功能与特点. NopCommer ...

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

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

  6. NopCommerce源码架构详解

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

  7. nopcommerce商城系统--技术与系统需求

    原址:http://www.nopcommerce.com/technologysystemrequirements.aspx 在这里,我们将着眼于nopCommerce的系统要求.为了运行nopCo ...

  8. 我的NopCommerce之旅(2): 系统环境及技术分析

    一.系统环境 IIS7.0 or above ASP.NET 4.5(MVC 5.0) .NET Framework 4.5.1 or above VS 2012 or above 二.架构设计 Pl ...

  9. Portal.MVC —— nopcommerce的简化版

    Portal.MVC 简介 项目是基于MVC4+EF,带有角色,权限,用户中心及账户相关(登录,注册,修改密码,找回密码等)等基本功能.参考的开源项目 nopcommerce,这是一个电商架构的MVC ...

随机推荐

  1. Linux 文件的读写执行权限的说明

    文件的读写执行权限的说明 X 进入目录的权限: cd 1.文件本身是可执行的 2.普通用户还具备r的权限 3.root用户只需要有r的权限即可 r 查看目录/文件的内容 :ls dir 没有读的权 限 ...

  2. Unity调用安卓中的方法遇到的问题

    最近在用U3D做一个简单的迷宫游戏,在项目中利用Unity制作游戏场景,在android中调用游戏场景,并在游戏结束后调用安卓方法,传递参数,退出游戏场景 查找网上资料,基本上Unity调用安卓的写法 ...

  3. php中empty(),isset(),is_null(),==,===区别

    有关 PHP 的 empty(),isset() 还有 is_null() 这三个函数的用法讨论得已经很多了,而且很多资料也未必能说得很清楚.这里再重复一次,但不是从概念去说,直接用程序例子来说话,应 ...

  4. 本地YUM源制作

    YUM相关概念 什么是YUM YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器.基于RPM包管 ...

  5. Spring 源码阅读之BeanFactory

    1. BeanFactory 的结构体系如下: 2. XmlBeanFactory ,装载Spring配置信息 package org.springframework.beans.factory.xm ...

  6. 【错误记录】uwsgi 启动 flask 出错

    在测试环境使用uwsgi启动flask未成功 正常报错信息: *** Starting uWSGI 2.0.13.1 (64bit) on [Fri Sep 23 09:27:47 2016] *** ...

  7. iOS应用内抓包、NSURLProtocol 拦截 APP 内的网络请求

    前言 开发中遇到需要获取SDK中的数据,由于无法看到代码,所以只能通过监听所有的网络请求数据,截取相应的返回数据,可以通过NSURLProtocol实现,还可用于与H5的交互 一.NSURLProto ...

  8. java.sql.SQLException: Incorrect string value: '\xE5\xB0‘

    mysql插入中文字符报java.sql.SQLException: Incorrect string value: '\xE5\xB0‘ #原因:由于默认情况下,mysql的字符集是latin1(I ...

  9. [USACO08NOV]Mixed Up Cows

    嘟嘟嘟 一看n那么小,那一定是状压dp了(表示从没写过,慌). 首先dp[i][j](i 是一个二进制数,第x位为1代表选了第x头牛),表示 i 这个状态最后一头牛是第 j 头牛时的方案数. 然后当 ...

  10. Python中乘法

    1.numpy乘法运算中"*"或multiply(),是数组元素逐个计算,具体代码如下: import numpy as np # 2-D array: 2 x 3 two_dim ...