NopCommerce 电子商务代码学习(一)

源码下载地址:http://nopchina.net/page/nopcommerce-download.html 

最新版nop3.6,建议大家下载这个,因为学习技术当然学习最新的比较好,NOP的每个新版本都会用上一些新技术,这点也是学习NOP的价值之一。

一  项目框架介绍

这个就是用VS打开的页面了,

nop每次升级都会把package里面的dll升到最新版,所以NOP3.4里面需要.net framework 4.5.1,这个需要先安装上,要不然项目是打不开的, 个人建议直接安装VS2013,方便快捷,因为我发现自己安装了独立的.net framework 4.51发现项目还是打不开,悲剧。

项目打开之后,我们做下整体的分析:上面有四个文件夹

1.Libraries(库)

  Nop.Core项目包含NopCommerce的一系列核心类文件,包含以下内容

      缓存  NOP的缓存机制

 

      组件模型   只有两个文件,一个用来做类型转换的,一个用来锁定访问资源的,还没具体研究,不影响做项目

      配置   

 

      数据  

      表模型    表模型的修改比较常用,数据库里对表数据字段的一些操作都要在这里做相应的操作。

    

     事件

     页面操作重写 这个具体啥用不知道,按照名字猜测应该是对虚假用户访问的一些处理的方法。

     界面帮组类  前端的View的一些帮助方法,比如文本转换成HTML,HTML转换成文本之类的

     框架     域名查找,引擎上下文,计划任务,类查找,NOP引擎,单例模式

     插件方法,以及一些扩展extenstion类。

  Nop.Data项目包含相关和数据操作有关的类,如数据初始化类、数据映射类、还有一些EF的类。Nop提供很好的API可完全定制持久映射。

  Nop.Services故名思意,是业务逻辑层,包含验证。即BAL层

  如果大家刚开始学习NOP,不理解也没关系, 因为我也有很多不理解的,后面我们会详细做讲解,但是不懂这些并不妨碍我们做项目。

2.Plugins(插件)

 

这个Plugins文件夹顾名思义就是插件文件夹,里面存放的是一些NOP使用的插件,其实里面的很多插件我们国内是用不到的,我们只需要熟悉其中一个就可以大致明白它的原理,建议使用支付宝插件,自己做下修改调整就可以了解了,支付宝插件群里有共享,有需要的可以直接下载,这个我的感觉是前期对做项目没有很大的帮助,暂时知道有这么个东西就行了,等后期NOP的代码基本上熟悉了,这个也就没难度了。

3.Presentation(陈述)

Nop.Admin  这个是Nop的后台项目代码,值得一提的是Nop的后台在项目上虽然是分离的,但是运行上却是一起的,我们只要用管理员登陆账号登陆之后,在首页的头顶位置会出现一个administration的链接进入后台,如下图所示。

原理是Nop.Admin的Dll输出路径为..\bin\,而且项目路径为Nop.Web\Administration,也就是说,Nop.Admin的DLL放置在了Nop.Web文件夹的bin文件夹之下,这样在运行的时候它们可以在同一个站点,再加上MVC的Areas(对每个功能模块使用ASP.NET MVC规则的目录结构和命名方法。可以把不同的项目集合进行模块划分,这样可以完整的把项目分离,相互之间不会发生关联,比如我Nop.Web文件夹下有个CustomerControl,在Nop.Admin文件夹下也有个CustomerControl,如果是同一个站点会发生冲突,要不然就得建立两个命名空间,但引入了MVC的Areas则可以解决这个问题,这样各自的项目负责各自的事情,更符合程序开发的高类聚低耦合的思想),两个项目同时运行在一个站点,完全互不影响。

 Nop.Web  这个就是我们的网站运行项目了,把这个设为起始项,运行项目就能跑起来。

 Nop.Web.FrameWork   此项目为Web的框架层,一些控制器的基类、属性类、路由等前端和后端公用的类库都放在该项目下。

4.Tests

这个是Nop的单元测试项目。

 

 二  NOP数据库安装

   介绍了大致的框架内容,我们要做的就是把项目跑起来,设置Nop.Web 为起始项目,然后运行之后的界面如下:

  

NOP的数据库可以使用在线安装的方式,它默认检查你Nop.Web\App_Data\Setting.txt的文本文件,如果这里面有连接数据库的字符,则不会出现这个界面。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
//initialize engine context
  EngineContext.Initialize( false );
 
  //model binders
  ModelBinders.Binders.Add( typeof (BaseNopModel),  new  NopModelBinder());
  //判断数据库是否安装
  bool  databaseInstalled = DataSettingsHelper.DatabaseIsInstalled();
  if  (databaseInstalled)
  {
      //remove all view engines
      ViewEngines.Engines.Clear();
      //except the themeable razor view engine we use
      ViewEngines.Engines.Add( new  ThemeableRazorViewEngine());
  }
复制代码
  public partial class DataSettingsHelper
    {
        private static bool? _databaseIsInstalled;
        public static bool DatabaseIsInstalled()
        {
            if (!_databaseIsInstalled.HasValue)
            {
                var manager = new DataSettingsManager();
                var settings = manager.LoadSettings();
                _databaseIsInstalled = settings != null && !String.IsNullOrEmpty(settings.DataConnectionString);
            }
            return _databaseIsInstalled.Value;
        }

        public static void ResetCache()
        {
            _databaseIsInstalled = null;
        }
    }
复制代码

点击确定之后,会转到InstallController,代码如下

数据填写正确之后,项目就可以正式运行出来,数据来源的原理就是利用appdata里的几个.sql文件。

三  项目发布

     NOP的发布和普通网站的发布类似,不同的一点是需要引用脚本映射

 

这样,一个NOP的站就运行起来了,效果可参考http://demo.nopchina.net/

转载于:https://www.cnblogs.com/iwyc/p/4682312.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值