(1)dotnet开源电商系统-brnshopbrnMall 和老外开发的nopCommerce(dotnet两套电商来PK--第一篇)...

  一直想做电商软件,但是实在不想学PHP了,所以前后关注了这两个开源电商系统。一个是国人出品的,一个据说是俄罗斯人写得(不知道对不对)。目前两个开源软件都在学习了解中,以下的博文可能会涉及到这两套系统,我希望能对比进行学习,能互相借鉴和补充。

 brnshop :http://www.cnblogs.com/wheretime/p/3793979.html  (入门篇:BrnShop开源网上商城第一讲:架构设计)

 nopCommerce:http://www.cnblogs.com/babietongtianta/p/4659381.html (NopCommerce源码架构详解--初识高性能的开源商城系统cms)

  通过阅读源码和学习以上两篇文章,我们对比发现有几个异同点。

  (一)相同点: 

   A.两套源码的代码结构的划分挺接近,都有Library Presentation Plugins ,Library下也都有Core Data Service。难道两家商量好的,还是谁学谁?

   B.表现层都遵循典型的mvc的结构,每个插件也都是一个小的mvc结构

   C.架构上针对扩展性都还设计得比较合理

   (二)不同点:

   A.brnshop代码结构划分还有个策略分类,是具体接口的实现,它把它单独拎出来。

   B.nopCommerce老外更重视单元测试,还附有Tests单元测试的配套项目,一个复杂的电商网站,每每有改动,遍历测试似乎也是保证质量的重要手段,只是国内做项目一般都觉得还写测试用例和单元测试时浪费时间。

   C.nopCommerce数据库访问用的是EF,这对于用不惯EF的小伙伴是个坎。我用过EF一些,感觉还是不太好用,可能是习惯和水平的原因。 brnshop没有采用EF,采用dotnet的标准数据库访问对象再加一些辅助类(做一些对象转换等等)。这里是否可以使用轻量的dapper框架,也 许后面可以做些探索。

   D.还有一个是国际化的问题,nopCommerce在这方面很出色,支持界面的多语言切换。brnshop这方面舍弃了没有考虑,现在做软件如果从市场出发,一开始是否瞄向国际市场,也是个战略和战术上的双重抉择。

   E.另外隐约感觉到,nopCommerce的插件似乎更成熟和丰富

   今天这第一篇分析先到这里吧,后面的时间接着读。 愿意交流和交朋友的,可以加我的QQ:9200118

转载于:https://www.cnblogs.com/ashacher/p/5654365.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hdoj 2022 海选女主角

Problem Descriptionpotato老师虽然很喜欢教书,但是迫于生活压力,不得不想办法在业余时间挣点外快以养家糊口。“做什么比较挣钱呢?筛沙子没力气,看大门又不够帅...”potato老师很是无奈。“张艺谋比你还难看,现在多有…

linux 下的gettimeofday 函数在windows上的替换方案

方案一&#xff1a; #include <time.h> #ifdef WIN32 # include <windows.h> #else # include <sys/time.h> #endif #ifdef WIN32 int gettimeofday(struct timeval *tp, void *tzp) { time_t clock; struct tm tm; SYSTEMTIME wtm; Ge…

学习笔记(45):Python实战编程-键盘事件

立即学习:https://edu.csdn.net/course/play/19711/343107?utm_sourceblogtoedu 1.键盘事件&#xff1a;按键松开或者按下触发事件的执行&#xff0c;一般组件要绑定键盘事件都是同时绑定按键松开&#xff08;“”<KeyRelease>&#xff09;和按键按下&#xff08;“<…

JSDoc那些事

几天工作上需要文档化一些Javascript东西&#xff0c;所以在找一些JS文档化工具&#xff0c;以下分析几种工具。 1.JSDoc-toolkit 一开始还想用这个工具&#xff0c;但后来在解析生成文档时候&#xff0c;出现了很严重的错误&#xff0c;还存在其他问题。 问题1&#xff1a;闭包…

onBlur事件与onfocus事件(js)

onFocus事件就是当光标落在文本框中时发生的事件。 onBlur事件是光标失去焦点时发生的事件。 可以编如下例子 1.html <HTML> <HEAD> <TITLE>使用onBlur事件处理程序</TITLE> </HEAD> <BODY BGCOLOR"lavender"> <FORM name&qu…

谈论Java原子变量和同步的效率 -- 颠覆你的生活

我们认为&#xff0c;由于思维定式原子变量总是比同步运行的速度更快&#xff0c;我想是这样也已经&#xff0c;直到实现了ID在第一次测试过程生成器不具有在这样一个迷迷糊糊的东西。测试代码&#xff1a; import java.util.ArrayList; import java.util.List; import java.ut…

总结从linux - windows 上(GCC与MSVC 2015) 移植C或者C++代码时候遇到的编译和链接问题

解决办法和修改办法的总体思想 1、在代码的语义和功能不变的情况下&#xff0c;进行c->c的转变&#xff0c;消除编译器的跨平台编译报错问题&#xff1b; 2、遇到编译问题&#xff0c;先看编译器提示信息&#xff0c;然后逐个排查和定位&#xff0c;去解决问题。 1、当遇到…

1 week110的zookeeper的安装 + zookeeper提供少量数据的存储

下面是在weekend110上的zookeeper的安装 在此之前&#xff0c;先进行快照备份。 在这里&#xff0c;为了后续的zookeeper配置需要&#xff0c;在/home/hadoop/下&#xff0c;新建data目录&#xff0c;再新建zookeeper-3.4.6目录&#xff0c;再新建zkdata目录。 默认情况下&…

学习笔记(46):Python实战编程-protocol

立即学习:https://edu.csdn.net/course/play/19711/343108?utm_sourceblogtoedu 1.protocol协议&#xff1a;主要用于窗体关闭监听&#xff0c;通过这个协议可以在窗体关闭前提示是否真的要关闭&#xff0c;这样可以防止用户误触导致数据的丢失 2.关键代码 #----------------…

linux yum命令详解

yum&#xff08;全称为 Yellow dog Updater, Modified&#xff09;是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装所有依赖的软体包…

linux配置Java环境变量(详细)

一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录&#xff0c; 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议&#xff0c;连继敲回车&#xff0c;当询问是否同意的时候&#xff0c;输入yes&#xff0c;回车。之后会在当前目录下生成一个jdk1.…

在c++代码中关闭和启动另外一个pid进程号,共享内存数据使用

char * of_program_name "./AB"; 1、 pid getPidFromName(of_program_name); if (pid > 0) { ERROR("AB process still exispid %d\n", pid); if (kill(pid, SIGKILL)) //杀死进程 { fprintf(std…

提速XP操作系统

1、加速网上邻居 在Windows XP中访问网上邻居是相当恼人的&#xff0c;系统会搜索自己的共享目录和可作为网络共享的打印机以及计划任务中和网络相关的计划任务&#xff0c;然后才显示出来&#xff0c;显然这样速度就会比Windows 9x中慢很多。其实这些功能我们并没有使用上&…

学习笔记(47):Python实战编程-pack布局

立即学习:https://edu.csdn.net/course/play/19711/343109?utm_sourceblogtoedu pack布局&#xff1a; 1&#xff09;最常用的布局&#xff0c;顺序排列布局方法 2&#xff09;完成了简单的组件位置码放&#xff0c;但如果内部布局处理机制跟不上的话&#xff0c;也可能会达…

ASP.NET Web API 应用教程(一) ——数据流使用

相信已经有很多文章来介绍ASP.Net Web API 技术&#xff0c;本系列文章主要介绍如何使用数据流&#xff0c;HTTPS&#xff0c;以及可扩展的Web API 方面的技术&#xff0c;系列文章主要有三篇内容。 主要内容如下&#xff1a; I 数据流 II 使用HTTPS III 可扩展的Web API 文档…

JAVA类的构造方法

1,构造方法没有返回类型, 定义: []public] 方法名() {} 2,一个构造方法如果想调用同一类中的另一个构造方法,只能调用一个,并且要放在构造方法第一行 3,用this调用,如 1 public person(int i, int j) { 2 this(); //调用另一个构造方法,且放在第一行 3 } 转载于:https://www…

将字符串和数字合并动态写入

sprintf(tmpTime, "/media/AIlog/%02d_%02d_%.txt",100,200);

windows安装64位Pygame方法

因为官方网站http://www.pygame.org/download.shtml并没有提供64位的pygame&#xff0c;所以要找其他网站制作的64位安装文件。 如果你已经在你的64位开发环境中安装了32位的pygame&#xff0c; 那么在导入pygame包的时候&#xff0c; 会有提示&#xff1a; ImportError: DLL l…

学习笔记(48):Python实战编程-grid布局

立即学习:https://edu.csdn.net/course/play/19711/343110?utm_sourceblogtoedu grid布局&#xff1a;根据表结构进行的布局&#xff0c;索引为0行0列开始&#xff0c;最具代表性的即使电脑计算器的数字和符号按键布局 组件.grid(row 行索引号 &#xff0c; column 列索引号…

为什么“三次握手,四次挥手”?

前言&#xff1a; 如果你说你懂IT,你懂计算机网络&#xff0c;那么你会怎么解释“三次握手&#xff0c;四次挥手”&#xff1f; ---------------- 1.TCP报文段首部格式&#xff1a; 2.TCP建立连接图 -------------------------------------------- 符号说明 seq:"sequance…