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


    很多人都说通过阅读、学习大神们高质量的代码是提高自己技术能力最快的方式之一。我觉得通过阅读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下面放的都是对应项目的单元测试。

  • 相关阅读:
    Windows Phone 7.8 SDK 离线安装包
    利用Async CTP改造Live SDK for WP7
    删除TFS云端上的项目
    Azure通过TFS进行部署
    IIS部署 HTTP Error 500.35 ANCM Multiple InProcess Applications in same Process
    树莓派4B装机指南(无屏幕)
    腾讯云VPS(CVM)重装Debian系统后的基础配置工作
    @Schedule和基于SchedulingConfigurer 定时任务
    (FutureTask和Future) 使用方式 开启线程异步执行并可以阻塞得到返回值
    springboot与logbackspring 非常简单集成
  • 原文地址:https://www.cnblogs.com/babietongtianta/p/4659381.html
Copyright © 2020-2023  润新知