程序架构——电子商务商城站架构设计

【原创作品——转载请说明出处】


一:引言

  刚过完年,小日子过得比较悠闲,去年做过的一些架构也没时间好好的整理一番,借此机会,写篇文章巩固下感觉

  顺便让后来人能够看到此架构的优势

二:之前的简单三层设计

  刚出校门那会,也只会这个,当初进了一个公司,里头就我一C#程序员,老板让我开发一套小门户吧,没有设计经验

,当初的结构设计是这样的

  MODEL DAO BLL WebUI,尤其是门户这块有商家等用户,但是用户类型还蛮多的,直接在webui中新增了一个文件

夹,所有用户后台的东西也直接丢进去,图片文件夹也在此列,等等等,现在回头看看这个设计,确实不堪回首,嘿嘿

三:现在的结构设计

  出来到现在为止也有两年多的时间了,耳读目染了很多程序,很多关于系统优化的文章,之前也看到了一篇神马10层

的架构文章,嘿嘿- -

  现在设计总的来说还是简单三层,哦不,是简单两层?

  首先谈谈底层的设计吧,采用ado.net封装了一个数据库访问类库DBHelper,通过app.config或者web.config中的

providerName对数据库进行无缝切换。【这种设计相信很多都已经有了,呵呵】

  然后还是模型层Model、DAL数据访问层,所有类继承至dbhelper中base类

  在然后就是webui了,这里头为啥省略了bll层呢,个人观点,大家有没发觉,bll层中,其实写到的代码非常之少? 而且

还要加点工作量在里面,何不直接写到DAL里头封装起来了,这个层,感觉还真没多大的必要了

  【PS:介于各位大大的评论,做一下修改,这种做法是在根据个人框架的一个情况下做出的结果吧,贴上一小段代码,

各位大大揣摩揣摩,可能跟大家用ORM,ADO等有较大的区别】

  1.所有model继承至BASEMODEL类,实例化的时候初始化所有字段属性

View Code
/// <summary>
/// 新增字段
/// </summary>
/// <param name="f">字段对象</param>
public virtual void AddField(Field f)
{}

  2.采用泛型 BaseProvider<T>作为数据访问层继承类

  看下代码,新增一条数据

View Code
 /// <summary>
/// 增加一条数据
/// </summary>
public override long Add( T model)
{
if (model == null)
{
throw new ArgumentNullException("model");
}
string strSql = string.Format("insert into {0}({1}) values ({2});select @@IDENTITY",
model.TableName, model.GetFields("", ",", true),
model.GetFields(ParameterPrefix, ",", true));

object obj = CurrentHelper.GetSingle(strSql.ToString(), GetAddParameters(model));
if (obj == null)
{
return 0;
}
else
{
return Convert.ToInt64(obj);
}
}

所有增删改查,在此base类中已经做完了,当然了,框架还有其他核心

鉴于以上说明,本人的DAO层,貌似只有可伶的几行代码- - 所以,也就是我这里不打算用BLL层的说明

【PS:补充end】

  新建tool工具类库,保存常用方法,常用组件。例如:字符串的处理,fck编辑器,flash批量上传控件等等。。。

  好了,基础的搭建完了,来谈谈电商的机构吧

四:电商结构

  1.web.product www.域名.com product.域名.com

  首先一点,电商中最主要的是产品展示以及下单支付,所以呢,这下就马上能够看到分开了,而产品展示中,又是访问

量特别大的,则主站web.product形成

  2.web.payment order.域名.com payment.域名.com

  其次就是要支付流程了,但是支付的流量还是会少于主站,但是也是一个很重要的环节,则有了web.payment

  3.web.member login.域名.com member.域名.com

  会员中心,这块相信大家都不会陌生吧?这里可以放用户登录,会员中心等信息,用来保存跨域名访问的用户认证信息

有需要用到用户登录信息的时候,就跑这边来拿?相信大家也没意见吧?

  4.web.cdn   cdn.域名.com cdn1,cdn2。。。。cndN

  cdn域名主要用做与保存图片、样式、js等固定,相对而言不会经常变动而又通用性较强的文件,cdn服务器,大家没意见吧?

  5. web.article  article.域名.com【静态页】

  文章资讯一个站,大家没意见吧?

  6.web.interface

  这个是网站接口放置地方,例如:各类支付接口,本地进销存接口,与各大电商(淘宝、拍拍、ebay)的接口等

  7.web.administrator

  这个是管理员后台管理的入口,大家都不陌生

  8、9、10、11web.XXXXX等

  这类下面其实还可以新建很多很多,上面所说的只是一个简单的电商架构,例如您还想新增一个社区web.community?

或者新增论坛web.bbs? 等等等

五:优点

  首先:可能大家一开始看到这个的时候,会觉得,这不是大大的加大了工作量?老板会说,开发个P商城要这么久之类的?

对于我们写程序的人来说,写出来的程序不可能说刚1.0的版本上上去,马上就着手大的改版,这种设计完了,就真的只是

维护就可以了。

  其次就是在部署的时候,如果您公司非常有实力,突然一夜之间IP,pv爆棚,那怎么办? 其实这种设计的话,完全不用担心了

域名指向做下,服务器多买几台分布式出台就容易的多了,你懂得!

  再次:看到这种设计结构,如果您已经完成了一套版本的话,那么如果在将来,您想设计一个大型如腾讯,网易,新浪的门户,

您还会说访问量太大,自己搞不定么?

程序架构——电子商务商城站架构设计

刚新建的,命名空间之类的都没啥考虑,反正大家都能看得懂来着,呵呵,就没拿原有程序出来装B了。

 

结语:希望大家给出批评指正,第一次发首页- -期待大神评论。

 

你可能感兴趣的:(电子商务)