这样的应用如何进行架构?
这样的应用如何进行架构?这样的应用如何进行架构?
- 前言:
由于初次涉及到软件架构,对于架构的知识和经验的十分缺乏,不知道如何做好架构,希望有这方面经验的朋友来谈谈您的看法,多多指教一下,多给点建议,小弟不胜感激。我知道此类请教的贴子不适合发布在,因为发布到首页规则是:原创、思考与写作时间在1小时以上,能够让读者有真正的收获。但是由于求真心切。也希望更多人参与讨论。希望大家能够理解。如果大家实在对非常排斥,我马上去掉。
- 背景:
产品是一个网络安全设备管理软件,可以对多台硬件防火墙,路由器等进行管理,监控,日志收集,及报表生成。
由于要对多台设备同时进行实时监控,日志收集有时会达到20000条/秒,甚至更多。报表生成更需要处理海量数据,所以性能及其重要。
已经有CS版,用C++写的。应用户需求现在想推出BS版。
- 需求:
(1)实现B/S版,用户可以在浏览器端管理安全设备。
(2)性能:至少保持现有性能。
(3)稳定性:至少保持现有稳定性。
(4)易用性(安装,使用,升级)。
(5)培训成本:跟原来版本差异不大。
(6)调试:调试方便。
(7)测试:测试方便。
(8)架构:符合需要,并有一定的前瞻性。
(9)扩展性:适应一倍以上的需要膨胀。
(10)安全性:高
(11)工作量:尽量减少
(12)开发:可以快速开发,尽可能的复用以前的代码,
(13) 新增的Web代码需要易容开发和维护,把主要的精力专注到核心业务处理上(如性能的提高,软件的稳定等)。
- 软件结构:
- 1.原软件结构:管理器,服务器,单纯的VC++编写,使用原始的套接字通讯
2.设想软件结构:
a.平台选择.net:原因:满足(4),(6)VC++ ,C#,Silverlight都可在VS下开发,微软的现成的诸多类库和框架。减少了大量的工作量,使有更多的精力专注到核心业务处理,而用少量的精力就可以处理界面展示问题 b.服务器实现方式:将老服务器封装成Dll,使用WCF技术通过.net平台调用调c++Dll,并封成Wcf服务。原因:满足(12),(13),(10)WCF提供了很多提高安全的方法。 c.管理器:使用Silverlight,使用MVVM架构原因:满足(4),(6)Silverlight良好的支持WCF,支持双向通讯。在VS平吧下易容开发。并能得到良好的用户体验。
- 问题:
以上列出软件结构只是我的一种简单设想。我只是简单的根据需求本能列出想法,并没有对它进行深入的调研。
如:富应用程序应选择那种技术(ajax+asp.net、silverlight、flux、还是ajax+php);.net平台调用性能损耗情况如果;WCF的并发处理支持情况.等等。希望有经验的朋友能给点建议.
1.一般类似的软件升级到Web版是如如何架构的。采用些什么技术?
2.Web版开发中需要注意那些。瓶颈在那?
3.Web版性能的处里通常用那些方法?
4.Web版安全性一般是怎么考虑的?
我列出的问题只是抛了块砖,肯定还有很多需要考虑,希望欢迎大家来讨论,帮一下我,谢谢。
update :
首先谢谢大家的参与,看了大家评论,感觉自己还是没有把碰到的情况,和自己的意图说清楚,再补充几点:
1.Web版主要跑在外网,方便用户随时随地查看安全设备状态,不需要安装庞大的客户端软件,(考虑使用sl是因为它小和flash一样只要安一次,就再也不用安装,而使用asp.net +ajax,或,ajax框架+html是必写大量的代码还需要处理浏览器兼用问题。开发人员必须有web开发经验);如果是局域网的话现有的C/S版已经可以胜任了。
2.我们的团队有几个人,90%都是只有C/S的开发经验。
3.我们想在Web上能跑,保证一定的安全性和前瞻性,但又不想在Web那上面花太多的时间。而想更多专注核心业务。
4. 我现在能想到的就是第二个图所示的:C#调C++DLL封装成WCF服务,WCF服务与Silverlight通讯实现UI的管理这样的架构。也想采用这个架构,但徘徊不定,这会有问题吗?缺点在那?那些地方没想到?
5.如果你面临这样的情况,这样的团队,这样的需求。你会怎么去考虑这个项目,你会采用什么方法去架构这个项目呢?