㈠ 电子商务的框架是什么

电子商务套件是电子商务时代,基于ERPII思想的管理软件,主要强调的是企业在整个产业链中的协同商务能力,以物流为基础,物流、信息流、资金流、商务流四流合一,串起ERP、SCM、CRM、DRP等企业信息化应用的各个部分,是电子商务套件的显著特征。目前主流的电子商务套,国外以Oracle11i为代表,国内以博科的Open9000为代表。
本文以国内外主流的电子商务套件为例,讲述电子商务套件的框架及设计理念。
一、产品框架
1、什么是电子商务套件
电子商务套件是旨在增强整个价值链竞争优势,采用基于活动管理的技术来评估各种业务流程,消除重复(即不增值)的活动;强调内部协作和外部协同;以物流管理为基础,功能涵盖ERP、CRM、SCM、DRP等企业信息化应用,同时支持企业间的协同商务。通过标准化的咨询、实施和服务,为企业分阶段快速部署行业化解决方案,在开放、集成的平台基础之上,可以灵活地满足用户个性的需求及企业业务不断变化的要求。
对于需要管理创新的中国企业来说,电子商务套件不单是软件产品,而是为企业引进一种先进的管理思想,导入一套成熟的经营管理模式、管理方法和手段。
2、电子商务套件应用框架
电子商务套件为企业信息化搭建起一个战略框架,在这个框架指导下,企业可以根据自身的实际需求迅速构筑信息平台,同时可以灵活、动态地、有效地管理,并实现电子化的商业事务处理的能力,使企业可以持续保持在IT投入上的竞争力,在提供的专业、贴身的服务下塑造自己的独特竞争优势。在这一灵活弹性的框架下,电子商务套件供应商给出了在供应市场、消费市场、资本市场、知识市场具体应用解决方案,体现了作业层、管理层和决策层等不同层次的应用,真正实现物流、资金流、信息流、商务流四流合一。实现了企业的集成管理,使企业产、供、销、人、财、物各个环节联结成一个紧密衔接的有机整体,同时也为进一步实现产业链级的协同商务提供了保证。
电子商务套件主要的应用框架特点:
◆ 全面集成、功能完整应用解决方案
◆ 弹性、灵活、可成长
◆ 开放的体系,集成第三方应用
◆ 基于价值链,面向电子商务及产业级协同商务
◆ 标准化服务、快速实施
电子商务套件应用框架
3、子商务套件主要特点
电子商务套件针对不同企业的规模,不同企业的类型以及不同管理模式与管理流程,均能够实现功能可裁剪性、系统可配置性、流程可重构性、平台可移植性。
主要特点:
◆ 基于架构式平台技术,开放、集成,可成长
◆ 跨平台操作,支持多种大型数据库
◆ 先进的工作流技术,工作流程可自由定义
◆ 国际化应用,多语言、多币种及多会计制度
◆ 协同商务,实现全程物流管理
◆ OLAP技术,实现多维多点智能分析
◆ 全面的预算管理,完善的KPI绩效考核
◆ 支持多种生产管理模式,灵活的计划应变功能
◆ 全面电子化的实时企业内部审计
◆ 支持移动计算技术,实现移动商务
4、电子商务套件的主要功能部件
国外电子商务套件产品,以Oracle 11i为例,主要的功能部件或者模块包括:
◆ 市场营销
◆ 销售
◆ 服务
◆ 合同
◆ 财务
◆ 人力资源
◆ 供应链管理
◆ 定单管理
◆ 项目管理
◆ 采购
◆ 资产管理
◆ 生产制造
国内电子商务套件产品,以博科Open9000为例,主要的功能部件或者模块包括:
◆ 财务管理
◆ 生产制造
◆ 购销链管理
◆ 客户关系管理
◆ 物流配送系统
◆ 零售系统
◆ 工作流及知识管理
◆ 企业内审
◆ 集团管理
◆ 商业智能
◆ 企业信息门户
二、设计理念
电子商务套件的产品核心理念,主要包括:技术平台化,功能套件化,应用协同化。
以博科电子商务套件Open9000为例,产品理念的详细情况阐述如下:
1、技术平台化
架构式平台技术是企业级应用软件开发技术的一种趋势,博科的Open9000平台是基于软件构件技术,完全集成和开放的“通用对象化内核+客户端界面”体系架构(构件应用框架),是目前国内在技术上居于领先的,最具规模的大型企业管理平台。构件应用框架,它常是针对特定应用领域的,表示构件复用所需的软件结构架构,说明构件是如何组装成应用系统的,以及它们是如何相互交互的,框架既反映了一个应用领域共性的功能和基本的支撑服务,代表更大、更高层次的设计复用模式,另外,它又具备灵活性和可扩充性,允许客户根据特定应用需要,在一些可变的插入点上,接入所需特定功能的构件,进行客户化。“通用对象化内核”是一个群件化结构的用于数据处理的构件仓库,它包含了企业管理中各类基本业务内容和业务逻辑规则。在内核的基础上,针对不同行业企业处理的特点和需求,抽取不同的构件进行组合。
博科电子商务套件正是基于这一软件工程思想,基于这一平台技术实现的,并在此基础上快速孵化出各种行业版本的解决方案。
平台技术的优势:
◆ 可以使企业方便地、快速地、平滑地增加新的功能,新的构件同原有的构件可以集成在一起可靠地工作
◆ 可以特别灵活地、动态地重新配置,将一个构件替换为升级的新版本不必考虑对其它构件的适配
◆ 允许对给定的任务采用不同的软件开发供货商提供的软件,企业在实现它的解决方案时具有选择产品的充分自由
◆ 企业可以容易地、灵活地将为企业特别设计的构件与整个系统集成使用,从而实现企业的特殊需求
◆ 基于构件的解决方案能够为进一步方便地扩展系统功能提供方便,因为定制的构件的接口也可以由用户特殊构件的使用
2、功能套件化
对于ERP软件来说,集成是第一位的。由于国内管理软件起步较晚以及在产品发展规划方面缺乏远见,没有考虑到不同产品的集成,甚至依靠收购的方式来增加完善功能,结果导致用户在使用过程中形成了一个个信息孤岛,无法发挥信息整合的作用。同时用户可能面临对于相同的基础资料要分别维护,数据需要重复输入之类的问题,一方面带来无效劳动;另外为了得到想要的数据,不得不做大量的二次开发工作,这不但增加项目实施的难度,还会使预算大大超过计划。这些都给企业信息化设置了陷阱。
博科是国内第一家倡导套件概念的软件厂商,博科电子商务套件基于博科Open9000平台实现了大型企业应用程序的全面集成,其十一大功能部件涵盖了公司的前台和后台办公系统,不同的功能模块均能互连互通,还提供了无缝实时的商业智能。
3、应用协同化
企业运作效率越来越依赖于各部门、各类不同应用的协同,而不是单一部门、单一应用的水平。由于电子商务的出现,人们开始从单纯关注交易这一节点向关注商务全过程转移,这将使协作扩大到整个供应链上企业业务之间的协作。在企业内部,有各部门之间的业务协同、不同的业务指标和目标之间的协同以及各种资源约束的协同。如协同的生产管理能根据现有可调配的人力、物力和设备能力等资源进行优化排产,以便实现按期交货。而在企业之间,业务间的协同变得更为重要,也更难实现。在供应链上,企业为了满足客户和市场的需求,通常需要有三个层次的计划:需求计划、供应计划、满足需求计划,通过实施这三个计划来完成需求与供给的匹配,在相应执行层次上提供支持功能。
只有做好不同层次、不同业务间的协同,才能帮助企业提高其产品和服务的创新能力,优化企业内部的业务流程,合理调配企业及供应链上的资源,更好地实现企业的并行运作,提高企业和供应链整体的快速响应能力。

㈡ 电商网站开发适合用什么框架

基础架构层面。

1. 前端网站和M站,考虑到访问量和系统的可用性,基本会采用分布式部署。通过代理服务器进行请求分发。

2. 其他的业务子系统,像商家前台,和管理系统,基本上都是单机或是主从部署。

3. 各个DB ,Redis 服务和 文件和图片服务,搜索引擎Solr服务等,采用主从部署。

亚宁传媒在整个系统架构里面,还有一个比较重要的组成部分,那就是监控系统。例如:流量监控,硬件监控,系统性能监控等,
还有就是对某个页面进行监控,设置页面的其中一块进行监控等。它是提高整个平台可用性的一个重要手段,多平台,多个维度的监控,能够确保系统的可用性,一旦出现异常,特别在硬件或者性能方面出现异常,监控系统也能立刻发出警告,这样也好防范于未然。

总而言之,一个好的系统架构应该从扩展性、安全性、性能和可靠性来考虑。罗马不是一天建成的,架构适合就行,可以先行之而后优。通过渐进演化的过程,逐步是系统越来越完善。

㈢ 电子商务网站一般架构有哪些

大型电子商务网站架构,摘抄 7.同一个网站的多语言该如何处理是好,使用配置文件然后cookie或url来判别?===客户是自己公司,使用标准方法即可
8.电子商务网站最多的就是 商品的打折方式和积分的赠送了,这里要怎么设计才好(工厂模式)?===采购成熟的规则引擎
9.如果同一时间并发大量订单的话,如果确保一个订单的有效提交呢?
==电子商务一般要使用MQ,推荐IBM MQ;使用MSMQ也可
第一点是数据库要设计好,要达到什么级别,你可能需要考虑哪些表需要拆分,哪些表的核心数据需要冗余,如果是mysql,还要考虑其他的问题,比如存储引擎。
新闻肯定是要生成纯静态页,对数据库压力就小很多,不过静态页也有管理上的不方便,更新删除添加都要对磁盘文件进行操作
做一个自定义缓存层,对缓存逻辑进行控制,可以采用第三方缓存模块,如果使用.net来做,可以层层缓存,页面缓存,数据缓存(memcache,不过在win下效率不高)
电子商务网站特点就是对事务的严格,需要数据库设计的时候要求高性能,也需要合适的索引,支持高并发,经常对产品表用户表等进行索引检查,是否有很多索引扫描和表扫描(即使是局部的,也要将逗局部地控制到最小范围)
mssql语句对不需要事务的查询要附带上with(nolock),以利于并发更新。
有些功能模块不能按照想当然的方式开发,比如产品访问次数,切不可将这些更新非常频繁的字段置于核心表内,明确的做法是将其剥离开来 还有就是切不可经常性将字段设计成bool类型,这样会给以后的扩展留出路,即使是男女这种字段,也建议采用tiny类型
其他还有就是在产品设计的时候充分考虑seo,网站目录结构清晰可读,而不是带着一串串的查询参数。
对安全要有整体的把握,最好全都是用存储过程,在项目上线前将数据库存储过程全部导出再查找貌似exec的语句,查找是否需要替换成sp_executesql。
另外,如果采用mssql,全文搜索直接用mssql fte就可以,速度和精确度都还是可以的,最重要的是维护和管理开发很简单。
打折的处理可以按照电信的一次,二次批价功能,如果你做过电信方面的系统。
当然也可以设计得更简单的一些。 静态的页面建议使用CDN加速,以解决网通和电信之间访问速度的问题;
数据的缓存方面建议考虑用memcache,另外也可以分别在表现层和数据层利用.net中的现存缓存机制作业可;
简单执行的sql可以不用存储过程,存储过程会占用数据库服务器的处理时间,造成死锁;
mvc建议还是做些CMS的项目上应用,电子商城不是很适合,个人观点。url上可以做转义,使url显示更友好;
数据库建议建立分布数据库,这样可以转移查询和大访问量对数据库带来压力;
图片可以考虑单独放在一台服务器上;1.三层架构
2.使用手写sql,手写entity(生成也可),缓存反射绑定(不是缓存数据哦,缓存映射关系),要考虑网站的长期发展还是手写吧 灵活 性能也好
3.没有这种问题,商业驱动的,纯购物就好了,千万别搞什么圈子,wiki
4.纯.net的mvc不建议,webform不搞viewstate,不搞服务端控件(除repeater)再加点mvc的思想已足够用了
5.不需要缓存数据(除搜索产品部分),要考虑多台服务器的程序快速部署,config文件会很多,config要序列化缓存
6.当然是先生成好了,参照jd吧,按业务每张图片对应几个不同大小的图
7.据经验,电子商务网站仅靠中英双语来达到多语言是不靠谱的(文化 用户习惯不是简单的语言切换),如果想真正运营英语的就要重新开发一个版本
8.不搞模式
9.负载均衡(web,db)+ssb异步处理数据
10.你是业务类型的日志还是异常日志? 前台订单流程上异常日志不需要了,找个工具录个脚本不停的跑 保证随时发现问题发邮件就可以了
11.找第三方搜索组件 类似endeca的
12.负载均衡挺简单的,初期靠软件就可以,一切图片找第三方放cdn,前台网站用到ajax的地方很少,如果用的话jquery 1,一个电子商务网站用户99.5%的行为时Find
2、对于商品检索部分,能不用数据库就不用数据库(网上切词等相关的开源平台很多)
3、分布式缓存(Memcached 、Volecity),个人测试volecity 3还是不错的
4、系统设计时必须要考虑可运营。从这个角度去设计系统
5、对于电子商务网站改动很频繁,必须考虑架构设计如何适应频繁的版本更新
6、必须设计一个好的单点登录系统。
7、建议能不用sqlserver就不用它。
8、对于大型电子商务网站来说,系统的I/O是起决定因素而不是CPU和内存。1.项目划分是否会有问题,图中分别是 实体层,数据访问接口层,数据访问层,业务逻辑接口层,业务逻辑,网站A,B,C
项目划分其实不重要,重要的的是你在写代码的时候是否能把代码合理的分到对应的项目里。
2.数据访问层是要开发效率(NBear,Linq,Nh等),还是访问效率(直接使用sql等)?是否可以先使用开发效率高的,等日后访问量大了,再重写并替换数据访问层?
开发效率优先,访问量大了以后,我相信是有钱投到硬件上的,在你程序写的不是很烂的情况下,升级硬件远比优化程序节省成本。
3.网站被切割成了多个子网站,有一些控件(如header,footer)是要共享的,如何跨网站项目共享这些控件呢?
那就做成自定义控件啦。
4.ms的mvc 1.0也出来不少时间了,是否已经够成熟运用到项目中?或者是网站后台使用webform的,前台使用mvc?
推荐使用使用webform的,前台使用mvc,对于前台来说使用mvc能更好的提升性能,更方便的更换页面表现形式。后台界面相对稳定,用webform可以提高开发效率。
5.网站数据的缓存是自己开发一个hashtable什么的来维护呢,还是使用Memcached ?
初期建议用hashtable,因为简单,将来升级到Memcached 。
6.缩略图的处理,我看有的网站是在上传图片的时候直接生成,有的是在httpmodle里处理,访问的时候生成.
直接生成缩略图的好处是节约性能。httpmodle相反,每次浏览图片的时候都会生成新的图片,服务器压力大,建议直接生成。
7.同一个网站的多语言该如何处理是好,使用配置文件然后cookie或url来判别?
多语言建议使用asp.net自带的资源文件的方式实现,当前语言保存在cookie里面。
8.电子商务网站最多的就是 商品的打折方式和积分的赠送了,这里要怎么设计才好(工厂模式)?
规则引擎
9.如果同一时间并发大量订单的话,如果确保一个订单的有效提交呢?
使用MQ队列
10.日志方面,log4net?
log4net只能记录程序运行日志,主要目的是用来调试程序的,系统业务操作日志还你是得自己建一个表来保存。
11.电子商务的全文检索,这也是个头疼的问题
lucene,微软索引服务,sqlserver全文检索,方案很多的。
12.负载均衡方面,有什么好的文章推荐码?
可以看windows 2003 集群方面的文章 1.项目划分是否会有问题,图中分别是 实体层,数据访问接口层,数据访问层,业务逻辑接口层,业务逻辑,网站A,B,C
目前我也是这样分的,不过当数据表结构有修改时,会带动其它层的联级修改,非常不方便,所以开发之前最好将数据库设计地完善一点。另外,当网站分成多个以后,其它项目生成的DLL文件要部署到每个网站的bin文件夹里,更新一次都要重新部署,这也是个挺烦人的事,当然可以将DLL部署到GAC里来解决这个问题,不过这样的话本地调试起来就不太方便了,因为项目一有改动,就要将生成的DLL重新拷贝到GAC里才能看到效果。
2.数据访问层是要开发效率(NBear,Linq,Nh等),还是访问效率(直接使用sql等)?是否可以先使用开发效率高的,等日后访问量大了,再重写并替换数据访问层?
这个我也在考虑。目前我还没有采用ORM框架,都是在DAL里直接访问DB的。
3.网站被切割成了多个子网站,有一些控件(如header,footer)是要共享的,如何跨网站项目共享这些控件呢?
自定义控件。
4.ms的mvc 1.0也出来不少时间了,是否已经够成熟运用到项目中?或者是网站后台使用webform的,前台使用mvc?
正在学习这一块。
5.网站数据的缓存是自己开发一个hashtable什么的来维护呢,还是使用Memcached ?
现在我用的比较多的是.net自带的数据缓存。
6.缩略图的处理,我看有的网站是在上传图片的时候直接生成,有的是在httpmodle里处理,访问的时候生成.
直接生成好,快一点。
7.同一个网站的多语言该如何处理是好,使用配置文件然后cookie或url来判别?
我没涉及到这一块,不过我觉得资源文件应该就是用来处理这个问题的。
8.电子商务网站最多的就是 商品的打折方式和积分的赠送了,这里要怎么设计才好(工厂模式)?
这些都放在逻辑层好了。
9.如果同一时间并发大量订单的话,如果确保一个订单的有效提交呢?
MSMQ
10.日志方面,log4net?
目前我是自已写代码存在库里的。
11.电子商务的全文检索,这也是个头疼的问题
用lucene.net分词建索引,再直接从索引库里搜索,又快又准。
12.负载均衡方面,有什么好的文章推荐码?
不清楚了。 这样的设计要达到新蛋的效果肯定不可能的,新蛋少说几百台服务器,不同数据库之间的发布订阅链路都有几千条。有复杂的缓存,负载均衡机制。新蛋所有的通讯都是基于WCF的。另外对于这么大型的网站来说,数据库一刻都不停止,所以读写分离也很重要,因为你也不可能让数据库停下来进行备份。总归要做到新蛋这样的大型电子商务网站,靠你上面画的这点好像远远不够。
不过关于公共的header,footer,我不建议做成自定义控件,这个维护起来不方便,稍有变动就要发布dll,麻烦的。
如果你的header和footer不是很大的话,建议采用js+css的方式。然后加上压缩和cdn缓存,应该效率上能接受。

㈣ 电子商务网站常用的系统架构哪些

前台系统包括:商品展示,内容展示,订单确认,支付系统,用户中心四大模块

一. 商品展示

  • 站内搜索(搜索提示,搜索规则,搜索成功页,搜索不成功页,相似推荐)

  • 导航(频道导航,其他导航如销售排行,广告位,推荐位,文字链,also buy等)

  • 商品分类(品牌分类,品类分类,属性分类如剪裁形式)

  • 登陆页(商品列表页,商品详细页,商品活动页)

这里的访问逻辑是:a /b/c分流消费者去往相对个性化的页面,由登陆页体现商家的核心诉求和价值传递,完成call-to-action的第一步。

二. 内容展示:内容展示较为简单,对纯购物品牌而言包括:

  • 公告区

  • 帮助中心

  • 论坛(如需商城与论坛发生交互,则需自行开发,否则可集成discuz做同步登陆即可)

三. 订单确认

订单确认,就是帮助消费者正确提交订单信息的环节,看似简单,实则非常复杂,需要对很多信息逻辑判断和处理,一般由2个部分组成:

  • 购物车

  • 订单提交(返回购物车,收货地址&地址薄,支付方式判断,配送方式,发票,订单标记,实付金额计算等等)

四. 支付系统

与一般的想象不同,支付系统其实并不简单等于第三方支付工具接入:

  • 外部支付系统(支付宝将接口,财付通接口,网银直联端口,信用卡分期端口)

  • 内部支付系统(账户余额,积分,礼品卡,优惠券)

支付系统的逻辑设计不但需要考虑到各种极端情况的发生(如一张订单先用礼品卡,再用积分,最后网银支付),还要预留财务做账所需的相关字段,并充分考虑订单取消之后如何回滚各类内部账户。

五. 用户中心

用户中心的实质是用户自助功能的dashboard,一般4个部分组成:

  • 注册&登陆(快速注册,完整注册,注册有礼,推荐注册,密码找回,主站id登陆,open-id登陆如qq,新浪微博等)

  • 订单中心(历史订单状态,中间状态订单修改,物流追踪)

  • 服务中心(各类自助服务如退款申请,退换货申请,建议与投诉等)

  • 信息管理(用户基本信息管理和账户信息管理)


后台系统包括:商品&促销,crm,订单处理,wms,采购管理,财务管理,报表管理,系统设置,wa系统9大模块

一. 商品&促销

  • 商品管理(品类管理,品牌管理,单品管理)

  • 促销管理(活动管理和自定义活动模板管理)

在上述模块中,最重要的是2个部分:单品管理中的批量产品生成的自动程序和活动管理中“共享与互斥”管理。前者用于大幅提升上新速度,后者避免促销活动失控。

二. crm :crm是对b2c核心资源—会员的管理,服务与再营销系统,包括如下部分:

  • 会员管理(会员信息的增删改查和到其他系统的链接)

  • 用户关怀(条件触发和人工触发相关edm &短信& ob)

  • 定向营销(会员分组和营销活动管理)

  • 客服管理(内容非常多,集成所有需前台与后台交互的功能,详情还是看图吧)

  • 呼叫中心(ivr,坐席管理,统计报表,参数传递与窗口嵌入)

值得注意的,edm和短信通道市面上已经有成熟的外包服务商,一般都会外包;呼叫中心和在线客服自行开发成本太高,特别是呼叫中心系统,业务初期也都是外包的。

三. 订单处理:订单处理是在订单未正式进入仓储部门处理之前,对订单的前置性处理环节。

  • 订单录入(电话订购,网上下单,外部团购订单,无金额订单录入如礼品单)

  • 订单审核(自动审核和人工审核)

  • rma处理(rma申请单和rma处理单)

四. wms(warehouse management system仓库管理系统)

  • wms的流程很长,功能模块也很多,大致分为入库管理,库存管理,出库管理和票据管理4个模块四个模块

五. 采购管理

  • 供应商管理(供应商信息管理,合同发票管理)

  • 采购单管理(po单管理,负po单管理)

  • 库存管理(库存查询,库存占用单,库存变动log)

六 .财务管理:b2c的财务管理,主要是对供应商,渠道和内部费用支出的成本控制。

  • 供应商结算

  • 渠道结算

  • 配送结算

  • 内部结算

七. 报表管理:报表是b2c业务的宏观表现,理论上说,每个部门的kpi都应该从中找到。

  • 搜索报表(站内搜索量查询)

  • 销售报表(多个维度销量查询,优惠券使用情况,报表导出)

  • 财务报表

  • 客服报表(客服日报和坐席报表),前者反映与消费者发生的日常交互(包括正常与异常),后者考核客服的工作绩效

  • 仓储物流报表,这几块报表,是业务运作的核心,涉及到公司机密,就不能写的太细了,见谅。

八. 系统设置:这块大家都知道是干嘛的,也就不多说了,分成三块。

  • 基础设置(和业务有关的一些字段值)

  • 权限设置(不同账号的操作权限和操作记录)

  • 其他设置

九. wa系统(web analytcis)

网站分析系统,几乎全是外购,很少有能够自建的,即使自建,最多做几个简单的模块。用于实战的,要么是免费的ga(google analytics),要么是昂贵的omniture。

㈤ 独立开发一套电商系统,UI用什么框架

基础架构层面。
1. 前端网站和M站,考虑到访问量和系统的可用性,基本会采用分布式部署。通过代理服务器进行请求分发。
2. 其他的业务子系统,像商家前台,和管理系统,基本上都是单机或是主从部署。
3. 各个DB ,Redis 服务和 文件和图片服务,搜索引擎Solr服务等,采用主从部署。
亚宁传媒在整个系统架构里面,还有一个比较重要的组成部分,那就是监控系统。例如:流量监控,硬件监控,系统性能监控等,
还有就是对某个页面进行监控,设置页面的其中一块进行监控等。它是提高整个平台可用性的一个重要手段,多平台,多个维度的监控,能够确保系统的可用性,一旦出现异常,特别在硬件或者性能方面出现异常,监控系统也能立刻发出警告,这样也好防范于未然。
总而言之,一个好的系统架构应该从扩展性、安全性、性能和可靠性来考虑。罗马不是一天建成的,架构适合就行,可以先行之而后优。通过

㈥ 电商前端架构设计

什么是前端架构

  • 说到架构,很容易拉出一系列的概念知识点,像系统架构、软件架构、框架等等,这些不是今天探讨的重点,大家可以下去网络来理解。架构的本质是什么?其实也是一种管理。通常我们所说的管理,都是指对于任务和人员的管理,而架构管的是机器和代码。比如说,机器的部署属于运维的物理架构,SOA属于服务架构,那么,前端的架构指什么呢?

  • 长期以来,前端所处的位置是比较偏应用层,很薄的一层,而架构又要求深度和广度,所以之前在前端里面做架构,好比在小水塘里游泳,稍微扑腾两下就到处碰壁。但最近这几年来,随着一些列新的技术和概念的出现,前端的范围被大大拓展了,所以这一层逐渐变得大有可为。

  • 单纯从语言的角度来说,html、js、css是最简单最容易上手的开发语言,不考虑模块化、工具、压缩优化,任何人都可以快速上手,完成一两个功能简单的页面。在规模很小的项目中,前端技术要素彼此不会直接产生影响,因此无需架构相关的思考。由于前端语言这种灵活松散的特点,使得前端项目规模在达到一定规模后,工程问题凸显,成为发展瓶颈,原来孤立的技术要素开始彼此产生影响,各种技术要素彼此之间开始出现关联,要用模块化开发,就必须对应某个模块化框架,用这个框架就必须对应某个构建工具,要用这个工具,就必须对应某个包管理工具……这个时候,需要有人从比较高的角度去梳理、寻找适合自己团队的集成解决方案。而这一系列解决问题的工具和手段就是所谓的前端架构。

  • 架构的组成

    组件框架

  • 架构不等于框架这一点很好理解,相信大家都能够很深入的说明这里的差别,框架是架构的重要组成部分,架构决定框架的选型,框架决定架构的技术路线。架构围绕框架进行一系列的流程工具建设,从而形成完善自动的开发体系。
    +框架不等于类库,这里就是很多人困惑的点,你用的什么框架?jquery、underscore、linq、seajs、requirejs等等,每个人都能够列举一大堆。但这个是不准确的,一套编码框架是有一系列的元素组成:

  • 开发模式,我们如何来实现代码的职责分离。以前整个前端是mvc中v这一层,而现在前端内部也进行了mvc的逻辑细分,Javascript的MVC框架现在很多,有的强化m、有的强化c。每一个框架其实都有其特点的,并且有越来越多的创新改造,比如现在最流行的是mvvm。有angular、react等等。我们是为了引入mvvc才把他们纳入到我们的开发体系,而不是因为他是一个好用的类库。

  • 通讯,模块化、组件化是前端在推进开发模式过程中的一个过程产物,为了有效的进行组件隔离和独立,现在有各种各样的通信模型出来,不过由于实现简单,代码少,他往往是合入到某个类库里面,但本质也是一个类库。比较成熟的比如:消息总线、事件模拟、缓存中转、flux模型等等。

  • 模板,我们用什么样的方式来集中的处理数据往html的转换过程,这里就不用多展开,这种类库现在太多了,光我们公司就有很多套,大家在代码行、缓存管理、预编译、运算性能、强大的语法等等各个维度不段追求各种极致。

  • 基础类库最后才是传统类库,相信现在已经没有同学会在项目中去约束团队中的dom操作、常用函数、方法、异步化等等各种很基础东西,这个时候我们一般就是引入jq、zepto、underscor这些封装好的东西就行了。核心就是为了改善编码生产力。

  • 对于框架的选型要从两面看,一是看该框架的本领,二是看你们团队的能耐。从经验上给几个点建议:

  • 这里也可以顺便展开聊一下现在前端产品的形态分类:

  • 从这些分类里面,我们这些年派生出了所谓全端和全栈的概念。但本质上怎么走还是要由所在产品的形态来决定。

  • 内容型Web站点 侧重渲染方面的优化,前端逻辑比重小

  • 操作型B/S系统 以数据和逻辑为中心,界面较规整

  • hybrid内置型,要处理缓存和一些本地接口,包括PC客户端和移动端。现在的本地应用,基于很多考虑,都变成了混合应用,也就是说,开发这个应用的技术,既包含原生的代码,也包含了嵌入的HTML5代码

  • Web游戏,前端的逻辑非常重,在代码结构上要求非常高的可管理性和更复杂的设计模式。

  • 桌面应用型,现在有一些PC端的混合应用开发技术,比如node-webkit和hex,前者的典型应用是XDK,后者的典型应用是有道词典,此外,豌豆荚的PC客户端也是采用类似技术的,也有一些产品是用的qt-webkit。这类技术可以方便做跨平台,极大减少开发工作量。

  • 大工程应该尽量避开谷歌产品,他的很多技术开源项目都是玩票性质的,GWT、Closure、Darty就是前车之鉴。曾今提出过很多的新技术,到现在还是独家的,变出太大。包括现在angular,喜欢做断崖式升级,做做运营后台系统问题不大,如果是线上系统的话,每次升级就是一次人月神话中的典型焦油坑。

  • 关注应用场景,像刚才说到的boss后台是一种;另外我的平台是否有沉重的历史包袱,需要兼容ie6,还是可以轻装上阵;产品对于seo是什么样的态度?是否需要考虑自适应?或者我的团队足够大,能够各搞一套?;产品特征是强内容还是强交互或者是游戏性。这些都是选择不同框架的主要出发点。

  • 没有最好,只有最适合自己的,基本上,针对每个平台,我们都可以列出一些主流框架,但不意味着你们都能驾驭得住。小马过马,老牛没过膝,松鼠淹个半死,就是这么回事。但无论我们选择什么框架或决定自己动手造轮子,都勿忘初心,技术必须让我们工作生活更为轻松愉快——我们只选择我们能驾驭住的框架,我们不能保证它在一年后是否会过时落后。

  • 而且按照我个人这么多年的经验来看,任何框架都会过时,往往不是因为他不够好,而是因为一定有更好的出来。我们再选择一个框架或者一个类库的时候就要想好,未来我如何抛弃他。至少不能成为我们引入新的框架的绊脚石。现实的工作中很多的团队往往会陷入到年复一年的用今年的新框架去重构去年老框架代码的历史循环中去。对于引入框架如何尽量延长他的生命力,我个人的意见是选择框架时去追求概念,而不是潮流,当我的架构可以接受新的设计概念的时候才去考虑引入新的框架。用设计理念的选择代替框架的选择。之所以这么说是因为我观察到我们部门的后端架构的开发理念跟我进公司的时候是差不多的。更多你可以参考成都网站建设