你的位置:首页 > 软件开发 > ASP.net > (2)dotnet开源电商系统

(2)dotnet开源电商系统

发布时间:2016-07-09 11:00:07
看大牛们的源码,对于水平一般的人,还是略微有点难度的。我从我自身读码的亲身体验,写下杂散片语,希望能和大家一同进步,也为了日后记忆上的备查。 先看的是brnMall的源码结构,从哪看起呢? 首先推荐看的肯定是官方的剖析:BrnShop开源网上商城第二讲:ASP.N ...

  看大牛们的源码,对于水平一般的人,还是略微有点难度的。我从我自身读码的亲身体验,写下杂散片语,希望能和大家一同进步,也为了日后记忆上的备查。

 

  先看的是brnMall的源码结构,从哪看起呢?

 首先推荐看的肯定是官方的剖析:BrnShop开源网上商城第二讲:get='_blank'>ASP.NET MVC框架

 官方的这篇文章主要讲清楚了几点:

 (1)brnshop设计时对网页环境上下文是如何获得,如何保存,并如何访问的(重载了控制器的基类,用于截获http访问时的预处理,身份授权和验证等问题),这些都是mvc程序自定义时惯用的方式。

 (2)而为了便利地获得上下文,并自动转换对应类型,则需要重写mvc的WebViewPage页。这里可能一些读者会搞不清楚,这里涉及到对mvc底层的一些了解,我找了些资料看了看,才弄明白。资料url:ASP.NET MVC的Razor引擎:View编译原理

  简单说:一个View最终也被编译成一个类,这个类的基类可以自定义为WebViewPage类的派生类,所以可以在这个派生类里完成上下文的类型转换,并替换为视图页面的基类。当然做自定义替换后,也要记得改相关的配置,让mvc用你自定义的视图页的派生类作为基类来生成页面。

 (3)另外,讲一下,代码阅读时,该代码的划分放置。

    (A) brnMall的Library中的brnMall.Data主要是数据库实体类(和各种表对象打交道),brnMall.Core主要是业务逻辑和辅助功能用到的接口和策略配置管理类(譬如:邮件接口和配置,订单接口和配置),brnMall.Service则是业务逻辑具体的实现

   (B) 阅读变现层Presentatio时,重点是要读懂两点:

   第一:框架上的自定义改造作者是怎么做的,在BrnMall.Web.Framework中,在Controller里对各个主页面模块的控制器基类做了派生,主要在派生类里完成了网页上下文信息的自动记录。这样当用户访问页面首页时,就能自动获取很多信息,譬如:浏览器类型,是否为移动设备的用户等等。在ViewPages里主要是做了对获取的上下**了类型返回的自动转换。在Pager里主要对分页做了相关处理。在Validator中主要是封装了各种信息的合法性检查的逻辑和正则表达式的使用。而Theme这个主题风格的问题,目前还没深入读,后面再做分析。

   第二:我们看代码时,一般会希望知道程序的起点和跳转的逻辑。我们知道mvc程序都是有启动项目的,BrnMall.Web就是启动项目,在它的Global.asax中为程序的起点。

  

namespace BrnMall.Web{  public class BrnMallApplication : System.Web.HttpApplication  {    protected void Application_Start()    {      //将默认视图引擎替换为ThemeRazorViewEngine引擎      ViewEngines.Engines.Clear();      ViewEngines.Engines.Add(new ThemeRazorViewEngine());      //注册所有的区域      /*AreaRegistration.RegisterAllAreas()是global.asax中调用的,它会找到所有的AreaRegistration的子类,       * 不管是在Web项目中,还是在其他类库项目中。所以我们在项目的Api文件夹中放一个AreaRegistration的子类,       * 也是能被找到的,然后在注册Area时,在参数中传递Controller所在的命名空间,问题就解决了。       */      AreaRegistration.RegisterAllAreas();      RouteConfig.RegisterRoutes(RouteTable.Routes);      //启动事件机制      BMAEvent.Start();      //服务器宕机启动后重置在线用户表      if (Environment.TickCount > 0 && Environment.TickCount < 900000)        OnlineUsers.ResetOnlineUserTable();    }  }}

原标题:(2)dotnet开源电商系统

关键词:dotnet

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录