在以前的公司使用过Nopcommerce 1.9 是一个ASP.NET WebFrom 的产品,大体来说没有什么特别的,从前端到后台,大部分的代码都木有高深莫测,很简单,但是它是一个完整的产品,并且有了自己的生态圈,基于他的商城很多(多数在国外)。 我想这个事实给了我们屌丝程序员一个很大的启示,当我们的职业生涯发展到一定的阶段,也可以开发一个自己的产品,它未必有很nb的架构,很nb的内核,但是它有思想,有内容,简单,完整,必然会有自己的一片天地。
当我再次看Nopcommerce 的时候,他已经发展到2.8版本,从2.0起,产品从WebForm迁移到MVC,内核方面似乎也有很大的变化。OK,从官方文档以及它的代码中做个简单分析吧。
在官网http://www.nopcommerce.com 可以看到Nopcommerce 2.8的demo,貌似国外的商城前端都很朴素,不像我们国内那样大色块很绚丽,动态效果嗷嗷多,Nopcommerce 的注册,登录,商品展示都很简单。可能欧美网站都这么低调?
一: Nopcommerce 的结构
先看看他的架构图:
图1
从图1可以看到,整个解决方案分为library,Plugins,Presentation,Tests几个部分。
(1) library 这个是Nopcommerce 的基础库,核心代码。
Nop.Core 核心库,包含了大量的可重用代码,和系统业务无关,直接放到其他的产品都能用的东东。其中有依赖注入的组件,cache处理,Plugin解析等内容。稍后的blog内继续分析。
Nop.Data 不用说这是数据访问层的代码,系统用的是EntityFramework 5.0 code-first。 看起来好复杂,多少年前,我们只用一个SqlHelper.cs 这样的文件进行数据访问,而这个家伙,似乎有点重口味。以后继续分析。
Nop.Services 这层就和系统的业务逻辑紧密相关了。随便一个文件夹Discount,好吧,他的中文意思是折扣,这里的文件是处理和促销,打折等等相关的业务。
(2)Plugins 是系统的插件部分,在Nopcommerce 2.8 里内置了很多插件,比如支付(payment)的插件,如果我们要支持支付宝,快钱,等等,就可以写对应的插件,还有一些系统挂件(widget),在Nopcommerce 2.8里,首页的Flash轮换图就是一个插件,不过代码看起来写的不是太好,呵呵。插件如何写,怎么插到系统中去,下回再说。
(3)Presentation 这个是展示层。使用MVC3。 My Lord,哥还不曾学习MVC。 不过代码还是很容易了解滴。
Nop.Web 这个是商城的前端,给客户看的。
Nop.Admin 你懂的。
Nop.Web.Framework Web部分相关的公共方法。和内核一样值得研究哦。
(4)Tests 测试程序。