集DDD,TDD,SOLID,MVVM,DI,EF,Angularjs等于一身的.NET(C#)开源可扩展电商系统–Virto Commerce
今天一大早来看到园友分享的福利《分享一个前后端分离方案源码-前端angularjs+requirejs+dhtmlx 后端asp.net webapi》,我也来分享一个吧。以下内容由笔者写于昨天晚上[2015.10.08]。
《集DDD,TDD,SOLID,MVVM,DI,EF,Angularjs等于一身的.NET(C#)开源可扩展电商系统–Virto Commerce》–看着这个标题有点长了,笔者本想试着用这个标题来大体概括一下这个[Virto Commerce]基于.NET(C#)的开源电商系统的,但很显然是办不到的。因为无论从Virto Commerce的解决方案架构,还是从Virto Commerce所涉及的各种技术概念来说,用无法一个标题来概括。那么,对于初识Virto Commerce来说,它到底是什么呢,其中运用了哪些牛X的技术和解决方案呢?让我们从Virto Commerce的官方简介说起。
Virto Commerce是在基于许多个成功的实际生产经验之上于2011年创建的电子商务系统框架,如今这个框架被许多企业所运用。对于中小企业来说,你可以免 费使用Virto Commerce的社区版,并自由地完成二次开发与扩展。作为一个完整的电商系统,Virto Commerce包含了前端的购买商城系统和后端的管理系统。后端的管理界面如下图:
Virto Commerce使用到的技术包含如下图:
具体的技术如:
- ASP.NET MVC 5
- ASP.NET Web API 2
- Entity Framework 6.1
- EF Migrations
- ASP.NET Identity
- Signalr
- Angularjs
Virto Commerce的架构使用了DDD,TDD以及SOLID等作为底层的技术,作为表现层则使用了MVVM的模式,具体的架构图如下:
Virto Commerce是基于模块开发的,这样对于开发者来说实现扩展是非常容易和方便的,而且模块是热插拔的。如下图的官方已实现的模块:
此外,Virto Commerce还集成了强大的搜索组件ElasticSearch来实现前后台的搜索功能,集成了定时任务组件Hangfire来完成各种定时任务的调度和执行等。
最后,由于Virto Commerce后台管理系统界面(UI)是基于Angularjs实现的,所以用户体验是相当的流畅的,如果读者使用过Azure的管理系统,在体验上 就是如此(虽然目前的细节方面还不能和Azure的Portal相比^_^)。看一下Azure的Portal:
好了,介绍了这么多关于Virto Commerce电子商城系统的相关情况。
如果需要体验的话,请至官方演示地址:http://virtocommerce.com/try-now;
如果要查看下载官方源码,请至:https://github.com/VirtoCommerce/vc-community
如果需要查看官方的介绍及文档,请至:http://docs.virtocommerce.com/display/vc2devguide/Introduction
如果你对本文介绍的新鲜的.NET开源框架系统还不错的话,那请你点点“推荐”,让更多人也了解它吧。
写在最后:如果你把Virto Commerce这个电商系统研究透了,那架构什么的是水到渠成的事!!!(奋斗吧)
集DDD,TDD,SOLID,MVVM,DI,EF,Angularjs等于一身的.NET(C#)开源可扩展电商系统–Virto Commerce的更多相关文章
- 电商系统架构总结1(EF)
最近主导了一个电商系统的设计开发过程,包括前期分析设计,框架搭建,功能模块的具体开发(主要负责在线支付部分),成功上线后的部署维护,运维策略等等全过程. 虽然这个系统不是什么超大型的电商系统 数亿计的 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十五)——集中式接口文档实现
之前有小伙伴在评论区留言说如何集成swagger,最开始没有想透给了对方一个似是而非的回答.实际上后来下来想了一下,用.NET5 提供的Source Generator其实可以很方便的实现接口集成.今 ...
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- MVVM大比拼之AngularJS源码精析
MVVM大比拼之AngularJS源码精析 简介 AngularJS的学习资源已经非常非常多了,AngularJS基础请直接看官网文档.这里推荐几个深度学习的资料: AngularJS学习笔记 作者: ...
- Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计
Atitit各种SDM 软件开发过程SDP sdm的ddd tdd bdd设计 1.1. software development methodology (also known as SDM 1 1 ...
- 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发
阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...
- 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成
阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...
- 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车
阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
随机推荐
- 图片延迟加载(lazyload)的实现原理
此前在浏览一些网站的时候,发现他们网站的图片都是你“鼠标”滚到哪,图片才会加载显示.当时觉得好神奇,怎么会这么“跟手”呢. 核心原理是: 1 设置一个定时器,计算每张图片是否会随着滚动条的滚动,而出现 ...
- android怎么连接sqlite数据库?
SQLite数据库首先先建立SQLiteOpenHelper()的子类实现SQLiteOpenHelper中的OnCreate()方法和构造方法. this class takes care of o ...
- spring ioc DI 理解
下面是我从网上找来的一些大牛对spring ioc和DI的理解,希望也能让你对Spring ioc和DI的设计思想有更进一步的认识. 一.分享Iteye的开涛对Ioc的精彩讲解 Ioc—Inversi ...
- 17110 Divisible(basic)
17110 Divisible 时间限制:1000MS 内存限制:65535K 题型: 编程题 语言: 无限制 Description Given n + m integers, I1,I2,. ...
- Android之TelephonyManager类的方法详解
TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法.其中包括手机SIM的状态和信息.电信网络的状态及手机用户的信息.在应用程序中可以使用这些get方法获取 ...
- 嵌入式开发板iTOP4412学习开发板
网站:http://www.topeetboard.com 淘宝:https://item.taobao.com/item.htm?_u=okcahs0f42a&id=38712193806 ...
- Sql-oracle and sqlserver differences
1.string contact operator Sqlserver use + or contact(sqlserver 2012) In oracle, you can also use con ...
- [转]AngularJs 多语言的使用 angular-translate
本文转自:http://www.tuicool.com/articles/zeymimB 随着世界各地Web访问量的增加,作为开发者的我们也在不断让应用国际化.本地化.当用户访问我们的应用时,他应该能 ...
- Bellman-Ford算法解决单源最短路问题
#include<stdio.h> #include<stdlib.h> #include<stdbool.h> #define max 100 #define I ...
- 如何利用ZBrush中的DynaMesh创建身体(一)
之前的ZBrush教程中我们用Extract抽出功能演示了头发的立体雕刻方法,本讲将对已完成的头部模型添加躯干,使用DynaMesh创建身体的方法,以及人体比例和结构的介绍. 查看详细的视频教程可直接 ...