一、一个好电子商务网站的架构必须是一个易扩展、易维护性的架构
电子商务网站一个最大的特点就是商业逻辑比较复杂,需求变更快,代码的维护和功能扩展一般会占用整个应用生命周期80%-90%的时间。所以,只有一个灵活性高,扩展性强、方便维护的架构才能适应电子商务网站发展的要求。
具有以上特点的架构通常具有以下特征:
1、是一个松散耦合的架构。分层是必须的,通常指常见的三层架构,各层内部也可以根据需求作出一定的细分。
2、采用了一些合适的设计模式。一个优秀的架构必然在其中使用了一些设计模式,当然反之并不一定成立。
j2ee社区已经给我们提供优秀的设计模式供我们参考:
(1) j2ee核心设计模式
http://java.sun.com/blueprints/corej2eepatterns/Patterns/
(2) martinfowler的Patterns of Enterprise Application Architecture。
http://www.martinfowler.com/eaaCatalog/
你可以在这些模式中找到满足需求的设计模式。总之,一句话,不要为了模式而模式,关键要领会各个模式(when and how),灵活地使用。
3、提供了一定的基础设施和可重用的组件。只有这样的架构才能提高开发效率,降低重复代码,对客户的需求变化能作出快速的反应。目前我认为SOA(面向服务的架构)是最符合这一要求的架构。
网上介绍SOA的文章有很多,developerworks专门有个SOA and Web services专区介绍SOA的相关知识。
下面这篇文章我是不久之前看到,觉得写得不错,有一定的借鉴,大家可以看看。
Designing an Enterprise Application Framework for Service-Oriented Architecture
二、搜索引擎
一个优秀的电子商务网站会提供大量的商品或者信息。为了帮助客户找到他想要的商品,必然要为客户提供一个优秀的搜索引擎供他们查找。
这样的搜索引擎必须解决了以下两个关键性问题:
1、大数据量的索引和检索。
2、快速、准确地返回用户要搜索的信息。
Lucene是一个基于Java的全文索引工具包,它已经有了其他语言的版本。对于在搜索上没有技术积累的电子商务公司, Lucene是比较好的选择和学习的途径。现在luncene已经成为apache的顶级子项目。
http://lucene.apache.org/
http://www.lucene.com.cn/
学习Lucene,Lucene in Action 这本书是一定要看。
三、交互大数据量的访问。
对于用户与网站交互比较多的电子商务网站,应用的性能瓶颈通常在数据库方面。特别是随着数据量的增长,数据库的压力会愈加明显。
对数据库的优化有各种各样的方法,DBA、开发工程师都有各自的要求,比如要求开发工程师在写SQL语句的时候必须采用绑定变量,所有的SQL必须提交DBA审核等等。这些工作对数据库的优化都有大大的帮助。
但数据库中数据的增长是必然趋势,我认为最终的解决方案就是根据实际需求采用合适的策略降低要访问的数据量。这才是王道。
总之,一个信息量大,访问速度快,安全,方便使用的电子商务网站永远是客户的第一选择。为了创造最佳的客户体验需要网站开发者(这里我主要指技术部门)在以上几方面做出更大的努力,学习和创新是工程师们要牢记的法则。
电子商务网站一个最大的特点就是商业逻辑比较复杂,需求变更快,代码的维护和功能扩展一般会占用整个应用生命周期80%-90%的时间。所以,只有一个灵活性高,扩展性强、方便维护的架构才能适应电子商务网站发展的要求。
具有以上特点的架构通常具有以下特征:
1、是一个松散耦合的架构。分层是必须的,通常指常见的三层架构,各层内部也可以根据需求作出一定的细分。
2、采用了一些合适的设计模式。一个优秀的架构必然在其中使用了一些设计模式,当然反之并不一定成立。
j2ee社区已经给我们提供优秀的设计模式供我们参考:
(1) j2ee核心设计模式
http://java.sun.com/blueprints/corej2eepatterns/Patterns/
(2) martinfowler的Patterns of Enterprise Application Architecture。
http://www.martinfowler.com/eaaCatalog/
你可以在这些模式中找到满足需求的设计模式。总之,一句话,不要为了模式而模式,关键要领会各个模式(when and how),灵活地使用。
3、提供了一定的基础设施和可重用的组件。只有这样的架构才能提高开发效率,降低重复代码,对客户的需求变化能作出快速的反应。目前我认为SOA(面向服务的架构)是最符合这一要求的架构。
网上介绍SOA的文章有很多,developerworks专门有个SOA and Web services专区介绍SOA的相关知识。
下面这篇文章我是不久之前看到,觉得写得不错,有一定的借鉴,大家可以看看。
Designing an Enterprise Application Framework for Service-Oriented Architecture
二、搜索引擎
一个优秀的电子商务网站会提供大量的商品或者信息。为了帮助客户找到他想要的商品,必然要为客户提供一个优秀的搜索引擎供他们查找。
这样的搜索引擎必须解决了以下两个关键性问题:
1、大数据量的索引和检索。
2、快速、准确地返回用户要搜索的信息。
Lucene是一个基于Java的全文索引工具包,它已经有了其他语言的版本。对于在搜索上没有技术积累的电子商务公司, Lucene是比较好的选择和学习的途径。现在luncene已经成为apache的顶级子项目。
http://lucene.apache.org/
http://www.lucene.com.cn/
学习Lucene,Lucene in Action 这本书是一定要看。
三、交互大数据量的访问。
对于用户与网站交互比较多的电子商务网站,应用的性能瓶颈通常在数据库方面。特别是随着数据量的增长,数据库的压力会愈加明显。
对数据库的优化有各种各样的方法,DBA、开发工程师都有各自的要求,比如要求开发工程师在写SQL语句的时候必须采用绑定变量,所有的SQL必须提交DBA审核等等。这些工作对数据库的优化都有大大的帮助。
但数据库中数据的增长是必然趋势,我认为最终的解决方案就是根据实际需求采用合适的策略降低要访问的数据量。这才是王道。
总之,一个信息量大,访问速度快,安全,方便使用的电子商务网站永远是客户的第一选择。为了创造最佳的客户体验需要网站开发者(这里我主要指技术部门)在以上几方面做出更大的努力,学习和创新是工程师们要牢记的法则。
对于一种不够完美的技术,批评它总是容易的;若是拿不出更有建设性的方案,那批评也只能叫廉价的批评。
“虽然是做程序员,但是不能只把自己当成程序员。你还可以为你的老板和公司着想。但并不是找到问题就万事大吉,任何公司从来不缺挑刺儿的人。因为你看到的问题,可能不晓得有多少人早抱怨过了!所以你与其就这么跑去找老板而于事无补,还不如调查研究后,带着解决方案去找老板,这才是上策。只有一个指出了核心问题又拿出了有效解决方案的员工,才会得到老板的重视和信任。【唐骏语】
在和银行的合作中,我们遇到不少困难。但正因为有困难,整件事情才更有操作的价值和意义。如果这个东西三天就做好了,那么我肯定对这个事情没有兴趣。 【马云语】
题外音:
对于技术问题,太简单说明没有技术含量。
对于商业问题,太简单就容易模仿没有核心竞争力。