`

看透面向对象的复用技术

 
阅读更多
原文地址:http://raychase.iteye.com/blog/1174354


作为以老版本为模子重做的解耦版本,这个大型互联网应用产品是从2009年中开始落地的。而我本人也是该版本的主创人员之一,到今日,团队已经发展到开发测试人数百人的大型互联网产品团队的规模,发布、割接和上线了许许多多个商用版本。



对架构的审视,对选型和设计的反思,不仅仅要在产品初创时期,更要在产品发展的整个过程中进行,团队做同类型产品的能力就是这样在不断总结和自我批评中成熟的。以下为个人观点,难免不对许多人的胃口,不过还是希望这些文字有足够到让人思考的价值。无论如何,对于这样一款产品,从如今的视角来解读它的历史故事,更别有一番风味。



---------------------------------------------------------------------------------------



5条成功的记录:



1、Portlet技术作为整个架构的核心。

这一条既是成功的记录,也是失败的记录。

Portlet给各个局点的不同定制版本带来了相当的页面定制灵活性,不懂jsp的管理员都可以按照自己的要求部署页面,通过简单的选择和拖动,将一个个内容丰富的频道展现出来。

另一方面,Portlet对于栏目的扩展和定制保留了相当的灵活性,尤其是对于潜在的互联网应用按照栏目维度保持伸缩性方面,留足了空间。



2、持久层选择了更加轻量级的iBatis,没有选择Hibernate。

事实证明,iBatis透明、简单,易于配置和使用,多数开发人员可以读透持久层的代码,擅长数据库的开发人员可以轻易地完成Oracle下SQL语句的调优,应用到iBatis的配置文件中去,并不需要太多ORM的技术积累,也不需要深厚的Hibernate调优技巧。



3、业务核心逻辑层得以抽象出来,独立成可以单独发布的API模块。

面对多种接入渠道,把核心业务通过API的行为抽取出来,给项目组带来的最大好处是:清晰的团队分工。

虽然API模块还不成熟,但是API的诞生和发展意味着可以让各个接入门户的开发和定制团队更聚焦在以展现为核心的工作上面,把业务代码的梳理交给专门的API团队去做。

从长远看,纯Java的API是干净、简洁和易于UT的,通过这种天然的方式隔离了持久层,也保护了核心业务的代码质量。



4、将功能的界面展示部分抽取成可重用的业务标签。

有人会对这个有异议,事实上,除了FreeMarker的性能确实让人不敢恭维以外,将界面的展示部分以标签的方式组件化带来的益处是很大的。

理想状况下,定制团队可以通过简单的标签插入、删减和修改,完成页面的定制工作,这比理解宏伟复杂的jsp页面,进行拷贝粘贴大法简单了不少。



5、基础设施稳定且有质量保障。

基础设施包括日志、协议栈、License等等,大多稳定而且易于使用。

比如异常体系,整个异常体系给开发带来了自然和轻松的异常处理流程,开发人员只需要更关注核心流程,把错误流程交给运行时异常去处理;不同的异常捕获层次给最终页面的错误展示和归纳带来便捷。

也有遗憾的地方,比如错误码比较纠结,错误码是团队内部讨论经过激烈的斗争和妥协的结果,有些过于庞大和繁杂了,这似乎更验证了:软件工程不是明主选举。



---------------------------------------------------------------------------------------



5条失败的记录:



1、Portlet技术作为整个架构的核心。

这一条既是成功的记录,也是失败的记录。

Portlet的许多特性还远未得到适合的发挥,譬如Portlet状态的保持、远程聚合的能力等等,却给开发人员带来了许多困扰,譬如页面分解困难,Portlet Session和Portal Session的互异性,聚合流程性能问题等等,给开发人员定制手提出了更高的要求。



2、独立出基于Portlet核心的负责门户运营的Portal平台。

Portlet规范作为一种聚合展现行为的抽象,通过组件化这样一种独立平台的形式,将页面控制聚合流程从业务页面展现和业务流程处理中剥离出来,开发人员得以将更多的精力聚焦在业务开发上面。

我想这是它诞生的本意,但是实际上,却带来了聚合流程复杂,方法调用栈过深等问题,而门户定制的开发人员,也必须经过相当的培训才得以上手。



3、通过ajax方式聚合Portal位于不同war包内的管理台页面。

本意是想让不同的管理台页面随着不同的Portal接入渠道分离发布,在展现时在页面上进行简单集成。

但由于浏览器的安全机制和对于不同域的会话独立管理的机制,使得它像恶魔一般被引进来,带来的不仅仅是定制的困难,开发人员理解的困难,还有一些因会话无法统一而导致的在不同域页面间信息传递时难以解决的问题。



4、保留XDIME、WML和XHTML三套WAP的模板页面。

当然也许这有一些人为无法控制的因素在里面。

XDIME页面的目的就是经过终端适配组件转换成适合手机的WML和XHTML页面的,而由于局点或某些历史原因,WML和XHTML还无法被干脆地摒弃掉,无论是一种主动的决策还是迫于无奈,带来的问题就是页面模板数量增加了两倍,给开发和测试带来了大量的工作量。

最终,WML和XHTML模板还是被抛弃了,只保留了XDIME一套模板。



5、缺少一套简易的和可管理的UI框架。

前端开发是整个产品的瓶颈,尽管页面并不非常复杂,前端的混乱却已经带来了诸多问题,这些问题主要暴露在产品定制和最终的用户细节体验环节上。互联网产品是否专业,很大程度上是由产品的前端团队所决定的。

依据不同的团队级别、不同的前端展示要求,需要定制不同的UI框架。由展现的简易性,而且需要定制的基线版本,决定了我们的UI框架应该简单;并且由于开发成员普遍前端能力欠佳,决定的我们的UI框架应当便于控制和管理,不应暴露过于复杂的界面行为给普通开发人员。
分享到:
评论

相关推荐

    看透Spring MVC源代码分析与实践

    《看透Spring MVC源代码分析与实践》这本书深入剖析了Spring MVC这一强大的Web应用程序开发框架。Spring MVC作为Spring框架的一部分,被广泛应用于企业级Java应用中,它为开发者提供了构建可扩展、模块化且易于维护...

    MACD看透主力通达信指标公式源码.doc

    本文档主要介绍了 MACD 看透主力通达信指标的公式源码,涵盖了技术指标、股票交易策略和编程语言等方面的知识点。 一、MACD 指标 MACD(Moving Average Convergence Divergence,移动平均线聚合离散度)是一种常用...

    看透springMvc源代码分析与实践

    SpringMVC是Spring框架的重要组成部分,广泛应用于企业级Web开发,因此掌握其工作原理对于提升开发效率和解决技术问题至关重要。 首先,本书会介绍SpringMVC的基本架构,包括Model-View-Controller(MVC)设计模式...

    MACD看透主力指标通达信指标公式源码.doc

    MACD(Moving Average Convergence Divergence)是技术分析中常用的指标,用于衡量市场趋势和变化。MACD看透主力指标通达信指标公式源码是基于MACD指标的改进版本,加入了主力买卖信号和背离信号,旨在帮助投资者更...

    文华财经指标公式源码WH6指标公式期货软件指标macd看透主力指标.doc

    缺点:本指标可能存在滞后性,且需要结合其他指标和技术分析方法进行使用。 本文档提供了一个基于WH6指标公式的MACD看透主力指标,旨在捕捉市场的短期和长期趋势。该指标可以应用于股票、期货、外汇等金融市场,...

    看透SpringMVC:源代码分析与实践

    《看透SpringMVC:源代码分析与实践》是一本深度剖析Spring MVC框架的专业书籍,旨在帮助读者深入了解Spring MVC的工作原理,并通过源代码分析提升实际开发能力。Spring MVC是Spring框架的一部分,它为构建Web应用...

    精通spring mvc 4 看透springmvc pdf 高清完全版

    《精通Spring MVC 4:看透SpringMVC》是一本深度解析Spring MVC框架的专业书籍,旨在帮助读者全面理解和掌握Spring MVC 4的核心概念和技术。Spring MVC是Spring框架的一部分,专门用于构建Web应用程序,它提供了模型...

    看透springMvc源代码分析与实践.pdf

    《看透SpringMVC源代码分析与实践》这本书旨在帮助读者深入理解SpringMVC这一流行的Java Web框架的工作原理,通过源代码分析与实践相结合的方式,提升开发者的技术深度和解决问题的能力。SpringMVC作为Spring框架的...

    看透 Spring MVC 源代码分析与实践

    看透 Spring MVC 源代码分析与实践

    看透springMvc源代码分析与实践 源码

    《看透Spring MVC源代码分析与实践》是深入理解Spring MVC框架的重要参考资料,它通过源码解析帮助开发者深入了解Spring MVC的工作原理,提升开发和优化应用的能力。Spring MVC是Spring框架的一部分,专门负责处理...

    通达信指标公式源码MACD 看透主力+CCI副图指标.doc

    通达信指标公式源码MACD看透主力+CCI副图指标 通达信指标公式源码MACD看透主力+CCI副图指标是基于通达信平台的指标公式,旨在提供一种综合的交易策略,结合MACD指标、CCI指标和OBV指标,提供多种交易信号。 MACD...

    MACD看透主力更新版通达信指标公式源码.doc

    MACD看透主力更新版通达信指标公式源码.doc

    看透Spring MVC:源代码分析与实践 (Web开发技术丛书)

    看透Spring MVC:源代码分析与实践 (Web开发技术丛书)

    python面向对象之类属性和类方法案例分析

    面向对象编程是Python中一种重要的编程范式,它允许我们以更加抽象和模块化的方式组织代码。本篇文章将深入探讨Python面向对象中的类属性和类方法,并通过案例进行详细分析。 1. 类属性和实例属性 类属性是直接在...

    看透springMvc源代码分析与实践-扫描版本

    看透springMvc源代码分析与实践-扫描版本 解压后大小(57.7M) 国内资深Web开发专家根据Spring MVC全新技术撰写,基于实际生产环境,从基础知识、源代码和实战3个维度对Spring MVC的结构和实现进行详细讲解 全面介绍...

    看透Spring MVC:源代码分析与实践.pdf

    看透Spring MVC:源代码分析与实践

    看透springMvc源代码分析与实践,韩路彪著

    SpringMVC的核心概念包括模型-视图-控制器(MVC)架构模式、请求处理、依赖注入和AOP(面向切面编程)。在源代码分析中,作者可能涵盖了以下关键知识点: 1. **MVC架构**:解释了MVC模式如何分解应用程序的职责,...

Global site tag (gtag.js) - Google Analytics