今天是个特殊的日子,我在北京房租价格又上了一个新的台阶。在这个日子我准备开始建立一个开源项目,一个B2C行业的EC系统。

一、关于定位

我要做的不只是一个商城,应该说是一个能满足中小型企业建立电子商务的一套完善的系统。其中的一些模块包括(但不限于)如下:

1. 前台商城

1.1. 前台网站商品的展架模块,包括整个商品的推销策略,包括分类、检索、各类活动形式等。

1.2. 前台的购物流程,包括购物车、定单、支付等。共中的客户可能包括:一般零售客户、大客户、团购客户等。

1.3. 前台用户中心,包括个人信息及商业行为信息等的维护。

2. 后台ECERP系统

1.1. 对前台各展架信息等的维护模块,也就是网站管理模块。对应的操作角色:网站的运维人员

1.2. 商品管理模块,对商品的分类、商品等基元信息进行管理等。对应的操作角色:网站运维人员、采购人员等。

1.3. 活动管理模块,包括优惠券系统等。对应的操作角色为:网站运维人员

1.4. 采购模块,对商品的库存进行管理,一系统的缺断货控制等。对应操作的角色为:采购人员

1.4. 销售定单处理模块,对定单进行处理。对应的操作角色为:客户服务人员、财务人员、主管人员等概据不同角色进行处理。

1.4. 财务模块,财务人员进行销售的收款单处理,采购的付款单处理等。对应的操作角色为:财务人员

1.5. 售后模块,对售后进行管理,商品的退货换货等。对应的操作角色为:客服人员、售后工作人员、物流人员

1.6. 物流模块,对定单的出货、换货、退货等业务进行处理。对应的操作角色为:物流人员

1.7. 仓库管理模块,对仓库进行管理。对应的操作角色为系统管理人员

3. 其他

当然系统还需要权限的支撑。其他的还有很多东西通过增量的方式迭代出来吧。

二、关于开发模式

最好的开发模式就是无模式了,适合自己就好,不过也要有个基本的思路,本系统将采用2个DDD,第一个就是Domain driven design(领域区动设计),

第二个就是Domain driven development(领域区动开发),当然DDD只是个思想,我们不必拘泥于形,每个人都有每个人的想法,还是那句话:适合自

己就好。

这里说一下敏捷开发,我对这个概念理解不深。个人感觉真的没必要理解的“过于深”,个人感觉现在一般的小公司的开发模式“不正规,很敏捷”,由于

没有正规的开发方法论,一直是个迭代的过程。没有文档、口头交流、增量、迭代好像出现了不少这样的名词了。

三、关于架构

架构方面现在只是个初步想法,先贴出来大家参考下。

以上Solution图我一个一个的简要描述一下:

AssionShop.AdminWeb 这个是个WebForm项目,是我们前面提到的ECERP系统的UI层,做这样的信息系统WebForm还是有一定优势的,具体再定。

AssionShop.Caching 系统的缓存层,之所以把缓存独立出来,因为它在项目中的份量挺重要的,对对象的生命进行支持,可以抽象出支持多种缓存架构,

比如asp.net的进程缓存,基于key-value的分布式缓存产品等。

AssionShop.Common 系统的一些公共框架级模块,可能包括字符处理、AOP、IOC、ORM、Log等一系列支撑对象。

AssionShop.DBMap 数据库映射层,可以采用NHibernate框架来解决o-r的阴抗问题。为什么不直接在Repositories里?不为什么。

AssionShop.Domain 领域层,系统的核心业务逻辑对象,不依懒其它任务层,半充血模式。不自身完成持久化,持久化由仓储来负责。

AssionShop.Dto 数据传统对象,里面包括数据传统对象和相应的适配器,注:有可能DTO直接跨越UI和Repositories/DBMap 比如系统的报表等。

AssionShop.Repositories 仓储,负责Domain的工厂生产及生命周期控制,内部调用缓存和数据库完成领域对象的持久化。

AssionServices 这个Services应该是ApplicationService而非DomainService,它调用Domain与Repositories进行轻量的组装,为UI或是SOA提供API,

我把事务控制放在这层,采用MSDTC分布式事务,Services为事务边界我认为是比较合理的。

AssionShop.Web 前台商城WEB项目,初步计划采用asp.net mvc 这层同AdminWeb一样,调用Services以及对DTO对象的引用。

以上就是项目的初步设想与规划定位,有很多不足将通过一步步的深入进行处理。下一章将从需求的《用例模型》开始。

AssionShop开源B2C电子商务系统-概述(转载)的更多相关文章

  1. AssionShop开源B2C电子商务系统-(二)定单流程活动图状态图(转载)

    B2C系统的灵魂所在就是定单的流程了,下面展示下定单的最重要的两个动态图,一个是定单流程活动图.还有一个是简单的定单状态图.通过这两张图,基本可以 了解系统定单流的大概情况了啊.图画的只是初步的设想, ...

  2. AssionShop开源B2C电子商务系统-(一)用例图(转载)

    这篇文章,将有实质的进展.先把大体的需求整理了一份用例图,自认为粒度做的已经很细了,再细就没法搞了.我还是坚信一个原则:自己业余搞的东西千万不要 想一口吃个胖子,这样很容易项目就搞流产了~,废话不多说 ...

  3. 转:国内外著名开源b2c电子商务系统比较包括asp.net和php

    from: http://longdick.iteye.com/blog/1122879 国内外著名开源b2c电子商务系统比较包括asp.net和php 博客分类: 电子商务   国内外著名开源b2c ...

  4. B2C电子商务系统研发——商品SKU分析和设计(一)

    一.SKU及相关概念定义 在设计商品SKU之前,首先让我们熟悉一下SKU和相关的一些概念. # 什么是SKU: SKU=Stock Keeping Unit(库存量单位) 同一型号的商品,或者说是同一 ...

  5. B2C电子商务系统研发——商品SKU分析和设计(二)

    转:http://www.cnblogs.com/winstonyan/archive/2012/01/07/2315886.html 上文谈到5种商品SKU设计模式,本文将做些细化说明. 笔者研究过 ...

  6. B2C电子商务系统研发——产品媒体常见功能点

    产品媒体常见功能点 电商研发系列——产品媒体常见功能点 支持图片.视频和文档等媒体类型 产品图片对清晰度要求比极高,但又不能太大,所以图片一般是jpg格式. 视频一般是flv流媒体格式,如果是嵌入产品 ...

  7. 30个开源电子商务系统(PHP)

    osCommerce osCommerce是一款著名的PHP开源电子商务解决方案,提出“开箱即用”的强大功能,使网上商店安装非常方便快捷,并可以作为GNU通用公共授权的开源项目免费发布.osComme ...

  8. 开源的.NET系统推荐

    C# 源码 AForge.NET     RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的 ...

  9. 【转】B2C电子商务系统设计精选

    B2C电子商务系统研发——促销引擎设计(一)(Promotion Engine) B2C电子商务系统研发——商品SKU分析和设计(一) B2C电子商务系统研发——商品SKU分析和设计(二) 电商后台系 ...

随机推荐

  1. ThinkPad X240 禁掉触摸板

    控制面板 --> 鼠标 --> Thinkpad

  2. 怎么查看和修改 MySQL 的最大连接数

    通常,mysql的最大连接数默认是100, 最大可以达到16384.1.查看最大连接数:show variables like '%max_connections%';2.修改最大连接数方法一:修改配 ...

  3. JavaScript基础入门教程(五)

    说明 本系列博客的第一篇已经说明了,要求阅读者需要具有其它语言的编程基础,所以关于组数的基础部分本篇博客将不再赘述,主要讲js中数组的特性. 创建数组 数组的创建主要有两种方法,一种是数组直接量,还有 ...

  4. 报错:this class is not key value coding-compliant for the key closeLotTextField解决方法

    几种情况下都会报这种错误: 1,加载自定义的tableViewCell的时候总是死在: XInstrumentOpenCell *cell = [tableViewdequeueReusableCel ...

  5. [Java基础] Java对象内存结构

    转载地址:http://www.importnew.com/1305.html 原文于2008年11月13日 发表, 2008年12月18日更新:这里还有一篇关于Java的Sizeof运算符的实用库的 ...

  6. Ceph源码解析:CRUSH算法

    1.简介 随着大规模分布式存储系统(PB级的数据和成百上千台存储设备)的出现.这些系统必须平衡的分布数据和负载(提高资源利用率),最大化系统的性能,并要处理系统的扩展和硬件失效.ceph设计了CRUS ...

  7. javascript配置ckfinder的路径

    <script type="text/javascript" src="ckfinder/ckfinder.js"></script> ...

  8. javascript 中contentWindow和 frames和iframe之间通信

    iframe父子兄弟之间通过jquery传值(contentWindow && parent),iframe的调用包括以下几个方面:(调用包含html dom,js全局变量,js方法) ...

  9. Hive:用Java代码通过JDBC连接Hiveserver

    参考https://www.iteblog.com/archives/846.html 1.hive依赖hadoop,将hdfs当作文件存储介质,那是否意味着hive需要知道namenode的地址? ...

  10. Dos网络查看命令

    net use //ip/ipc$ " " /user:" " 建立IPC空链接 net use //ip/ipc$ "密码" /user: ...