营销平台业务开放的尝试.ppt
1/26,营销平台-业务开放的尝试,无邪2011.7,2/26,今天的关键点,业务开放有哪些方式呢?业务开放的难点在哪里?业务开放应该如何规划?业务开放涉及哪些技术方面的内容呢?营销平台业务开放的经验分享!,3/26,大纲,业务开放的方式业务开放的挑战解决方案经验分享,4/26,业务开放方式,数据开放,商品信息物流信息交易信息,流程开放,影响业务流程影响中间数据深入业务环节,更加动态化和即时化,5/26,数据开放,需要交易分析报表,定制分析报表,获取订单数据,提供,6/26,流程开放,7/26,一个技术上的类比,Hibernate的使用者支持ORMapping支持Cache支持多DBHibernate的参与者添加对新DB的支持添加分布式Cache等,8/26,大纲,业务开放的方式业务开放的挑战解决方案经验分享,9/26,业务开放时的业务挑战,业务稳定业务抽象和建模流程梳理,10/26,营销平台的一个模型,11/26,业务开放时的技术挑战,安全:防止恶意代码稳定:保证减少程序出错机率性能:避免程序运行过慢兼容:开放其实是对外的一个承诺易用:淘宝的开发,是希望没有壁垒的,12/26,大纲,业务开放的方式业务开放的挑战解决方案经验分享,13/26,插件技术,所谓的插件,就是将变化与不变的内容加以分离。插件并不是说只有一级,事实上,往往是多级设计更为合理,因为插件意味着开放,开放也是有级别的。,14/26,营销平台中的多级插件,根插件最顶层的功能抽象使用不同的实现技术,对不同类型的用户加以开放。,15/26,插件与模块化,插件必须与模块化相结合资源控制独立部署动态加载使用Spring的Context来实现一些模块化的工作,16/26,使用Spring的Context做模块化,17/26,声明式服务,声明所需要什么资源声明自己的执行时间声明自己的有效性声明自己的可用性声明.,18/26,声明式服务的小例子,public double calculate(.)User userI=findUser(.);long lastTime=findLastBuy(.);if(上次购买不超过1天)return totalPrice*0.9;else return totalPrice;,19/26,声明式服务的小例子,public double calculate(Object)User userI=(User)object0;Long lastTime=(Long)object1;if(上次购买时间1天内)return totalPrice*0.9;else return totalPrice;public ParameterDef getDeclaredParameters()return new ParameterDef new ParameterDef(.);new ParameterDef(.);,20/26,声明式服务+模块化,安全:无法直接访问资源,减少犯错和入侵稳定:同上性能:更加有效地缓存资源兼容:每个业务都对应的版本,由不同的执行器来执行,21/26,大纲,业务开放的方式业务开放的挑战解决方案经验分享,22/26,SDK设计,易用性封闭性兼容性,23/26,易学易用,不易读/不易写,易读/不易写,易读/易写,易露写,24/26,封闭性,明确地告诉别人(通过包名和类名):可变与不可变(功能应该是final类,扩展是非final)可用与不可用(明确的入口),尽量不要使用,25/26,兼容性,Interface的兼容性很差Abstract Class的兼容性比较好final Class的兼容性很好很多兼容技巧:instance模式(如IViewPart2)Adapter模式(未知到已知)对于变化的内容,尽量带上版本号schema.version=1.0.0,26/26,QA,感谢您的关注,