Nopcommerce主要用到的技术及特点
很多人都说通过阅读、学习大神们高质量的代码是提高自己技术能力最快的方式之一。我觉得通过阅读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”的形式。比如:
- using System.Data.Entity.ModelConfiguration;
- using Nop.Core.Domain.Blogs;
- namespace Nop.Data.Mapping.Blogs
- {
- public partial class BlogCommentMap : EntityTypeConfiguration<BlogComment>
- {
- public BlogCommentMap()
- {
- this.ToTable("BlogComment");
- this.HasKey(pr => pr.Id);
- this.HasRequired(bc => bc.BlogPost)
- .WithMany(bp => bp.BlogComments)
- .HasForeignKey(bc => bc.BlogPostId);
- this.HasRequired(cc => cc.Customer)
- .WithMany()
- .HasForeignKey(cc => cc.CustomerId);
- }
- }
- }
以后我会详细的说明这个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
转载于:https://www.cnblogs.com/LowKeyCXY/p/8511689.html
Nopcommerce主要用到的技术及特点相关推荐
- NopCommerce功能与特点介绍
[本文转自]http://www.cnblogs.com/nopcommerce-b2c/p/3758676.html 前两节我们主要介绍了NopCommerce下载与安装和NopCommerce中文 ...
- 收集的计算机编程电子书目录,仅供日后查阅方便
本人有收集电子书的癖好.每日在网上收集经典的电子书籍,尤其喜欢原版的,看起来舒服.不过总是心血来潮,当时下载后瞅几眼,之后就束之高阁,再也不问津了.很为此苦恼,过后找某本书时也总是不知道在哪,为了查找 ...
- Java实现lucene搜索功能
直接上代码: package com.sand.mpa.sousuo;//--------------------- Change Logs---------------------- //<p ...
- nopcommerce的挂件技术
nopcommerce有着完善的插件处理机制.开发人员可以预先开发好独立运行的模块,在通过自身的插件机制即可加载实现该插件功能.这种插件模式有利于模块化编程,提高扩展性以及降低模块之间的耦合度.下面, ...
- 基于NopCommerce的开源电商系统改造总结
距离项目的结项会议差不多有一个月的时间了,研发人员也基本上都从该项目撤出.之前一直就想写一下这个项目的总结无奈身兼多职未能抽出身来写这篇文章.不过我们有幸能够在项目开始之初就接触到了.NET领域优秀的 ...
- ASP.NET Core 开源项目 nopCommerce,一款沉淀13年的电商开源佳作!
技术在不断更新迭代,.NET 6 的正式版也即将正式发布,在.NET Core 开源项目方面,CMS的代表作是SiteServer,商城的开源系统有没有什么代表作? 肯定是有的,强烈推荐这套开源免费的 ...
- 记录知识点或技术方案信息
1 ActiveReports .NET报表控件的领导者 2 SignalR :.Net使用SignalR实现消息推送功能(聊天室) 3 Modernizr:在我们使用HTML5/CSS3技术的时候 ...
- .NET平台常见技术框架整理汇总
使用.NET平台开发有段时间了,在网上资料的基础上做了进一步整理,汇集了.NET平台常见的技术框架. 参考资料: 基于.NET平台常用的框架整理 .NET开源框架列表 1.知识网络 2.分类清单 2. ...
- nopCommerce EF codefirst翻译版
在NopCommerce中使用实体框架(EF)代码优先迁移进行快速自定义 由Woon Cherk Lam | 2013年12月19日,星期四 我见过很多nopCommerce论坛用户询问他们如何使用E ...
最新文章
- VC实用小知识总结 (一),转http://blog.csdn.net/myiszjf/article/details/10007431
- 安装sql server 2016 always on配置dtc支持时遇到的问题
- 数学图形(2.10)一种绕在球上的线圈
- java中this的含义_Javascript中的this的含义
- Gradle入门:简介
- Requests库基本使用
- C# list删除 另外list里面的元素_在Python 中 List 操作 9种例子详细了解
- 温故之 “插入排序”
- python如何仿写文章_python,python3.x_求助,用python仿写以下代码,python,python3.x,java - phpStudy...
- Java LinkedList公共对象pollLast()方法(带示例)
- Linux学习总结(31)——工作中常用的Linux脚本和命令
- 剑指offer面试题49. 丑数
- 圆角进度条,带数字居中显示的圆角进度条
- jboss下载(jboss安装与配置)
- 无人车之美——双舵轮运动分解与合成
- css div img等元素居中对齐
- 我体验了禾多科技的自动驾驶汽车,离量产不远了!
- 不间断:即使被刺破,新的软电子设备也不会损坏
- 设计模式之十三观察者模式
- 红米4android版本怎么升级,红米4MIUI稳定版安卓9.0刷机包(完整固件升级包MIUI11 稳定版)...
热门文章
- python 会计师事务所_Selenium爬取会计师事务所新闻信息——以中准会计师事务所为例...
- 自动驾驶软件开发人才现状_浅析自动驾驶的重要一环:感知系统发展现状与方向...
- python itertools_itertools
- i计算机网络的应用程序,计算机网络技术及其在校园网的研究与应用毕业论文.doc...
- 黄冈学计算机的学校怎么样,黄冈学计算机的学校
- React Fiber 了解一下
- css3如何链如外部字体,微信小程序引入外部字体总结(针对安卓加载缓慢问题)...
- arcgis api for python网盘_ArcGIS API for Python(2)
- 判断php对象不包含的key,如何判断一个对象是否包含指定Key
- matlab 运行 释放内存,怎么能释放已经使用的内存