今年铁路订票系统的热门话题是抢票插件。 从铁道部不允许电商代购看,业务上要求订票系统应该是设计成封闭系统。但订票系统能让别人开发出抢票软件,说明没有有意将其设计成封闭系统。 这是典型架构师没有完全实现业务要求的设计。 如果目标是只允许手工操作,不允许第三方程序访问,需要考虑在网络协议,API和用户界面操作模拟。当然封杀第三方程序访问,可能带来一些网络攻击,也需要进行相关设计。 由于业务用户和领导不熟悉技术,在提出需求时,往往考虑不到一些特别的状况。 所以产品和系统架构师的最重要工作是定义产品和系统的完整功能。 这个功能定义决定了开放成本质量和满足用户需要的程度。
开放与封闭不是相反的。一个不开放系统不一定是封闭系统。 可以参考《产品架构师手记》中的相关章节。 软件产品和系统架构师应该考虑业务和企业对开放和封闭系统的业务变化需求。使系统可以灵活切换开放接口和封闭访问。实际上通过提供开放接口可以更有利的防止和抵御非指定访问。例如订票系统如果把剩票查询功能开放,就会将一些刷票访问导向提供服务的电商。
互联网应用可以很方便地采用加密通讯,验证码,session管理等设计防止各种外挂技术。
http://product.dangdang.com/product.aspx?product_id=22821857