`

一步一个脚印-产品升级随笔(2)-为什么需要BS架构的产品

阅读更多

昨天加班将近7:00,一群人主要是讨论产品由CS结构转向BS结构的问题,争论的很是热闹,为什么非要用BS架构取代好好的CS架构呢?

一个兄弟的设计中十分强调WebService,建议将所有的服务全部封装为WebService,这样Client端无论采用什么方式都可以了,呵呵,多理想的想法,是呀,如果把所有的服务都这么做了,Client确实可以支持多种方式,可是代价是多大呢?这就需要将公司的产品全部推倒重写,公司现在的产品已经开发和运营了3年左右了,但是用户的需求和产品升级的压力还是很大,如果全部废弃掉,我想,没有1年的时间,产品是不可能制作出来的。

而且公司的产品中有一个链条特别需要关注,就是“消费品”,如果我们的产品不提供足量的、高质量的数据,产品的竞争优势很低,因此将CS中的数据迁移到BS中,还是一个很头疼的事情,而且十分重要。

公司产品的使用者主要是两个方面:1个是数量不是很多的管理者,一个是数量众多的使用者。而转向BS架构的应该是数量众多的使用者,因此经过讨论我们将注意力转向使用者前端的应用上,而将数量极少的管理者的功能暂时不作修订,而维持原装,这样升级的压力就降了下来。

在大家达成一致将炮火转向使用者的前端应用上的时候分歧又产生了,就是采用什么模式进行设计。

在兄弟的设计中提出了3种架构:(1)RIA(2)纯Web方式(3)Activex控件+Web

经过讨论我们基本认可了采用第3种方式,由于公司的产品最大的特色必须需要进行本地控制,就像杀毒软件一样,如果用户不能杀本地的病毒,只能杀服务器上的病毒,我想产品也别想卖了。

在将目光转向Activex控件上后,问题就又出现了。

从用户角度来看,用户选择BS架构主要就是减轻客户端的安装压力,用户总是抱怨CS架构的安装压力太大,而且升级更是怨声载道,因此很多用户提出了BS模式。

呵呵,但是由于公司的产品需要处理本地的东西,因此如果采用BS架构的方式,Activex的安全性和权限就很难说了,而且Activex控件的稳定性则需要我们尽一步加强。

但是由于客户机器本身保护的原因,Activex控件的下载也许用户的体验并不是很好,因此通过对产品的分析,基本上确立如下的原则:

(1)尽可能的减少Activex控件的尺寸,利用VC或者Delphi重写Activex控件,以加快Activex控件的下载速度。

(2)将功能分解,通过增加Activex控件数量的方式,来避免一次下载大Acitvex控件的方式。

(3)通过流程控制,只下载需要的Activex控件,而不是一次下载所有的控件。

(4)通过UI设计,提高用户体验,减轻控件下载的用户抱怨,并通过UI指导或帮助用户解决由于Activex控件问题造成的使用障碍。

(5)Acitvex都需要有一个Test函数,用来测试控件是否可以正常工作。

(6)以IE5为基准进行测试。

由于这些天再看《网站重构》这本书,也建议采用Web标准进行设计,别一开始就走上一条混乱之路,另外在这本书的封底说这本书是“博客园”推荐的,呵呵,我怎么在园子里没有发现呢。

在考虑兼容性上,我们基本否定了Sql2005的使用,呵呵,这个东西也许需要过一段时间才行,否则如果装了我们的系统对别的系统造成影响可就坏了。

还有,就是先前兼容的问题,呵呵,兄弟的计划是逐步将老产品改造成一个全新的产品,因此十分想改数据库的结构,这恰恰是不能接受的,最后的妥协是这样DAL层,还是按照新的设计走,但是对旧结构做兼容,能提供的提供,不能提供的按照接口作出默认值,呵呵,暂时只能这样了,目前还不是特别清楚。

估算时间,呵呵,兄弟总想立刻就开始Coding,唉,如果好好看看《Joel说软件》,也许就不会有这个冲动了,还有就是看看《克制Coding的冲动》,解决的办法是又配置了一个师兄,逐步分解他的烦恼,通过配对讨论来使架构逐步清晰。

这些只是昨日的想法,也许通过不断的调整、组合和分析,一切才逐步完美。

分享到:
评论

相关推荐

    一步一个脚印实现一个自己的简易MVVM框架

    我们可以为ViewModel添加事件处理器,这些处理器可以响应用户的输入,并相应地更新Model。 7. **初始化框架** 最后,我们需要一个初始化方法来启动MVVM框架。这个方法会在DOM加载完成后调用,对整个应用进行数据...

    一步一个脚印求职竞聘简历PPT模板.pptx

    一步一个脚印求职竞聘简历PPT模板.pptx

    vue最新实战项目教程从零开始一步一个脚印循序渐进跟着我一起学习vue吧

    本教程“vue最新实战项目教程从零开始一步一个脚印循序渐进跟着我一起学习vue吧”将引领初学者深入理解Vue.js的核心概念,并通过实际项目“vue-todos”来实践这些知识。 首先,我们要了解Vue.js的基础概念。Vue.js...

    XAF架构.md

    XAF学习心得与案例,天道酬勤 , 一步一个脚印

    2020-2021销售员年终工作总结报告..doc

    2. **销售技巧**: - **聆听与肯定**:销售员需耐心聆听客户需求,即使有不同意见也要委婉表达,同时要积极肯定客户,赞美他们的观点。 - **不耻下问**:面对不确定的问题,应勇于请教,不要装懂,确保了解客户的...

    XAF架构组件.md

    XAF学习心得与案例,天道酬勤 , 一步一个脚印

    XAF架构模型.md

    XAF学习心得与案例,天道酬勤 , 一步一个脚印

    XAF架构优点.md

    XAF学习心得与案例,天道酬勤 , 一步一个脚印

    企业级JAVA开发与架构:专业程序员在实战中的蜕变(PDF)

    企业级JAVA开发与架构:专业程序员在实战中的蜕变,在java的这条路上,告诉你如何成为技术总监,先学习什么再学习什么,一步一个脚印,是值得参考的一本书。分两部分。

    2019一步一个脚印求职竞聘简历PPT模板

    这是一款整理发布的2019一步一个脚印求职竞聘简历PPT模板,适合各类大学毕业生、专业人员等求职者...该文档为2019一步一个脚印求职竞聘简历PPT模板,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看

    Allegro-PCB-SI-一步一步学会前仿真

    ### Allegro PCB SI 一步一个脚印学会前仿真 #### Cadence Allegro PCB SI 简介 Allegro PCB SI(Signal Integrity)是Cadence公司推出的一款专门用于信号完整性和电源完整性分析的设计工具。它提供了从前仿真到后...

    一步一个脚印学习CMD

    学习CMD的基础,首先需要掌握一些常用的基本命令。例如: 1. `help`:提供命令的帮助信息,如输入`help cd`可以查看关于`cd`命令的详细说明。 2. `cd`:切换目录,`cd\`返回根目录,`cd..`返回上一级目录,`cd 目录...

    船舶智能能效管理系统设计探讨 (2).pdf

    为了实现这个目标,需要遵照循序渐进的原则,对其设计及建造要按照规范和计划,一步一个脚印地进行。 船舶智能能效管理系统的设计探讨可以为智能船舶的发展提供有价值的参考和借鉴。通过不断的技术创新和系统改进,...

    金算盘ERP一步一个脚印扎实重庆华华信息化之路

    金算盘ERP手机网络分销售,从传输客户订单、客户需求信息、库存管理调配等的神经系统—渠道网络入手,预计通过两个阶段,实现好的技术、好的产品、好的资源,建立一个良好的管理模式和管理平台,保持资金流与物流...

    为什么要应用以太网到汽车上

    车载以太网技术是现代汽车中一种重要的网络通信技术,它的应用代表了汽车电子控制单元(ECU)通信架构的一次重大变革。传统上,汽车行业使用了多种车内网络协议,包括CAN(控制器局域网络)、LIN(本地互连网络)、...

    产品销售专员年度述职报告.docx

    【产品销售专员年度述职报告】 在撰写产品销售专员的年度述职报告时,主要涉及以下几个关键知识点: 1. **自我评价与工作成果**:销售专员通常会回顾过去一年的工作,包括达成的销售目标、个人成就以及对团队的...

    2021一步一个脚印求职竞聘简历PPT模板.pptx

    2. **个人信息呈现**:在简历中,个人信息包括姓名、性别、年龄、民族、籍贯、学历、身高、体重、政治面貌、联系方式、电子邮箱和现居住地址等,这些都是招聘方通常希望看到的基本信息。 3. **教育经历**:求职者应...

    船舶智能能效管理系统设计探讨 (2).docx

    智能船舶的发展需要遵照循序渐进的原则,对其设计及建造要按照规范和计划,一步一个脚印地进行。 船舶智能能效管理系统功能框架 船舶智能能效管理系统应包括数据采集、设备能耗监测、推进系统监测、船舶综合航行...

    vue最新实战项目教程,从零开始,一步一个脚印,循序渐进

    实例 2.组件 3.指令 4.选项 5.模板渲染 6.事件绑定 7.计算属性 8.内置动画 9.组件交互 10.内置路由) vue进阶(1.vue生命周期 2.vuex使用 3.axios的使用 4.mock.js 前端模拟数据) 跨域问题的解决办法

    vue最新实战项目教程,从零开始,一步一个脚印,循序渐进。跟着我一起学习vue吧!.zip

    3. **创建组件**:在这个待办事项应用中,我们将创建一个名为`TodoList`的组件,用于展示待办事项列表,以及`TodoItem`组件,表示单个待办事项。组件之间可以通过props传递数据,或使用Vuex进行状态管理。 4. **...

Global site tag (gtag.js) - Google Analytics