BrnShop开源网上商城第一讲:架构设计
来源:互联网 发布:喷涂机器人及软件编程 编辑:程序博客网 时间:2024/05/21 09:31
今天的主题:BrnShop开源网上商城架构设计
拿到源码的朋友知道BrnShop解决方案是由4个解决方案文件夹构成的。它们分别是Libraries,Presentation,Strategies和Plugins,下面是这四个解决方案文件夹的截图和介绍:
- Libraries:商城基础类库,主要提供系统核心,数据访问,业务逻辑等功能。
- Presentation:商城web展示,提供网站前台和后台实现。
- Strategies:包含各种策略程序集
- Plugins:包含开发授权,支付等插件。
通过上面的介绍大家可以看出其实BrnShop的主要功能都在Libraries和Presentation中,而Strategies和Plugins只是提供程序外围的一些服务。到这相信大家的思路就清晰多了,下面依次介绍各个项目:
BrnShop.Core项目:这个项目是BrnShop最核心的项目,它提供商城最底层,最基础的服务。首先通过图片给出各个模块的基本介绍:
- 对于异步模块,缓存模块,配置模块,数据模块,邮箱模块,随机值模块,Session模块,短信模块这8个模块来说,BrnShop.Core项目只提供加载和接口,并不包含具体实现。大家请看邮箱模块代码(其它7个模块的实现原理一样):
1 /// <summary> 2 /// BrnShop邮件管理类 3 /// </summary> 4 public class BSPEmail 5 { 6 private static IEmailStrategy _emailstrategy = null;//邮件策略 7 8 static BSPEmail() 9 {10 Load();11 }12 13 /// <summary>14 /// 邮件策略实例15 /// </summary>16 public static IEmailStrategy Instance17 {18 get { return _emailstrategy; }19 }20 21 /// <summary>22 /// 加载邮件策略23 /// </summary>24 private static void Load()25 {26 try27 {28 string[] fileNameList = Directory.GetFiles(System.Web.HttpRuntime.BinDirectory, "BrnShop.EmailStrategy.*.dll", SearchOption.TopDirectoryOnly);29 _emailstrategy = (IEmailStrategy)Activator.CreateInstance(Type.GetType(string.Format("BrnShop.EmailStrategy.{0}.EmailStrategy, BrnShop.EmailStrategy.{0}", fileNameList[0].Substring(fileNameList[0].IndexOf("EmailStrategy.") + 14).Replace(".dll", "")),30 false,31 true));32 }33 catch34 {35 throw new BSPException("创建\"邮件策略对象\"失败,可能存在的原因:未将\"邮件策略程序集\"添加到bin目录中;将多个\"邮件策略程序集\"添加到bin目录中;\"邮件策略程序集\"文件名不符合\"BrnShop.EmailStrategy.{策略名称}.dll\"格式");36 }37 }38 39 }
通过以上代码大家不难看出实现的核心思想就是“约定大于配置”和“策略模式”。这里的“约定大于配置”大家需要注意下,如果大家想自己实现一个策略,例如邮箱策略(其它策略一样),请一定要保证符合约定限制,具体就是程序集名一定要满足“BrnShop.EmailStrategy.{自定义名称}.dll”格式,命名空间满足"BrnShop.EmailStrategy.{自定义名称}"格式,主类名必须是“EmailStrategy”。还有一点就是为了保证策略程序集能正确的编译到BilShop.Web项目的bin文件夹中,一定要配置项目生成的输出路径为“..\..\Presentation\BrnShop.Web\bin\”
目前商城默认实现了每个策略,他们的对应关系及介绍如下:
- 当前只有企业版提供NOSQL实现,所以目前Data文件夹中的NOSQL为空,后期随着企业版的开源也会补上NOSQL代码实现。
- 插件部分内容比较多,我后面会专门写一遍博客介绍。不过大家可以先看看这篇文章http://shazwazza.com/post/Developing-a-plugin-framework-in-ASPNET-with-medium-trust
BrnShop.Data项目:这个项目主要是通过调用BrnShop.Core项目中的BSPData类来和各种数据存储做交互,大家可以自己看下代码,都有注释,没什么难度。PS:前几天园子里有个朋友说想用EF替换掉sql语句和存储过程,他当时的替换点是重写BrnShop.Data项目,在此我不反对他使用EF,只是替换点不应该是BrnShop.Data项目,而是BrnShop.RDBSStrategy.SqlServer策略程序集。
BrnShop.Services项目:商城的业务功能实现,如果你想找商城某个功能的实现可以来这个项目中找,例如购物车的实现。PS:在BrnShop.Service项目中有个Admin文件夹,这个文件夹是商城后台操作要用到的类。
BrnShop.Web.Framework项目:这个项目主要提供商城web层面的设计。大家可以打开看一看里面都是自定义控制器类,分页,动作筛选器等MVC方面的东西。
BrnShop.Web.Admin项目:商城网站后台,这个项目的类型是类库,不是web项目(但mvc的各部分俱全),所以不能直接启动。PS:关于网站发布问题,这里提供一个简单的方法,首先将vs的生成配置改成"release",然后将BrnShop.Web项目中的web.config文件中的compilation节点的debug属性设置成“false”,然后重新生成BrnShop.Web项目,最后把BrnShop.Web项目的文件夹复制并删除无用的文件(例如obj文件夹下的文件)到iis中就可以了。
BrnShop.Web项目:商城网站前台:使用ASP.NET MVC3实现。各个文件夹或文件解释如下:
今天这一篇博文主要是帮助大家对BrnShop项目有个整体的认识,下一篇我会介绍下BrnShop的ASP.NET MVC实现。敬请期待!
- BrnShop开源网上商城第一讲:架构设计
- BrnShop开源网上商城第二讲:ASP.NET MVC框架
- BrnShop开源网上商城第三讲:插件的工作机制
- [架构设计]第一讲:什么是架构
- 网上商城后台架构设计
- 网上商城后台架构设计
- 架构设计之异常处理(第一讲)
- 初识C#开源商城BrnShop及BrnMall
- 设计模式第一讲
- 第91讲:Akka第一个案例动手实战架构设计学习笔记
- 第91讲:Akka第一个案例动手实战架构设计
- 开源Asp.Net MVC网上商城BrnShop正式发布,提供源码下载(非官方文章)
- 第一讲:大型MMO服务端基本架构
- [架构设计]第二讲:架构切分
- 设计模式第一讲:策略模式
- JavaWeb网上商城的设计
- Android中级第十二讲浅谈架构设计
- 一些php+mysql的开源网上商城
- VJ Pots
- Jxnu Group Programming Ladder Tournament 2017题解
- Recycleview的实例及于listview的强弱分析
- C++栈的应用——后缀表达式求值、中缀表达式到后缀表达式的转换
- Qt按键值与Windows Virtual-Key Codes映射表
- BrnShop开源网上商城第一讲:架构设计
- 23种设计模式汇总整理
- Android中 如何判断现在所处的界面是否为home主桌面
- Linux日常使用命令
- 创建进程程序3 子函数1 创建进程选项
- 安卓游戏中的精品-你玩过吗?
- 各种数据类型所占的存储空间
- Windows Wget v1.19
- 个人认为安卓开发前景