软件框架设计设计重要性
2008-08-06 16:45
225 查看
上周参与了公司SAAS技术的培训,这两天在看Windows 安全性和SQL Server安全性方面的技术,主要是要部署公司的一个WinForm项目,因为这个项目,终端用户数会不少,另外涉及到计费,所以对数据安全性要求比较高,数据库出问题,会直接影响到公司的运营和形象,重要性可想而知了。
一开始,因为时间关系,所以框架设计相对简单,只是逻辑上实现了分层,物理上分层只是一个前台,一个数据库。所以,要想办法限制用户的使用,必须是合法用户才能使用数据库。另外,数据库的连接对合法用户来讲是有效性,如果防止内部访问数据库也是一个问题。 初步想,采用域管理终端用户,这样外面来的用户可以被挡掉,SQL Server安全也是采用域账号用户。这样做可以挡掉外部,但内部还是一个问题,内部我的想法是采用域限制策略,不允许客户端安装软件,这样用户没办法通过别的软件来操纵数据库,安全性会好点吧,不过技术水平好点的人,总会找到什么漏洞的,防外好防,防内有点难啊。
所以,软件架构设计的重要性,如果我们一开始能考虑分层,中间有个业务层,当然可以物理上分开,那么,数据库仅需对业务层的服务器开放就行了,终端用户根本不知道,数据库在哪里,那样安全性肯定会很好,没办法,经验也是积累出来的。
再做下一个项目,一定要考虑分布式,就是物理上分层,这样才能提供强大的可扩展性。上次培训SAAS也讲到了这个问题。我前段时间看CSLA.NET,把现在讲的分布式扩展表达的很清楚。这样的架构,拿ASP.NET来讲,WEB层通过代理调用业务层,业务层的代理对应根据传入的业务对象,执行数据库操作。这样,物理上WEB层可以和业务层分在两台服务器上,再加上数据库,由三台机器来承担。前端调用业务层,可以采用好几种通信方式,目前有Web Service,Remoting,COM+企业服务,最近3.5版本又加入了WCF。
这样的框架部署起来,可大可小,如果在一台机器上,配置成本地调用,可以跳过代理,最大化性能。如果要实现大规模的应用,在WEB层可以通过WEB Farm实现负载均衡,每台WEB服务器再对应一台业务处理服务器,所有的业务处理服务器,再调用数据库层,而数据库层通过集群技术,可以想象,每层有5台服务器,3层15台服务器组成的应用有多强大。
而对于SAAS软件这样的平台软件来讲,架构一开始一定要考虑到可伸缩性,我觉得用CSLA.NET这样的框架来开发软件,一定能满足需求,另外还有代码生成工具使用,今天我研究了一下Code Smith自带的CSLA的模板,通过代码生成,真的相当方便。
这样一个框架,是我看过所有软件框架中感觉最满意的,毕竟老外考虑的比较好。站在巨人的肩膀上,我们会很快成功。强烈建议每一个做软件架构的人都能读一下<<Expert C# 2005 Business Objects>>这本书,里面有好多思想,值得我们去借鉴。
做软件要思考,我想一个人也是随着不断的做项目,积累了相当的经验,可以少走弯路,我们尽量不要自己去造轮子。
一开始,因为时间关系,所以框架设计相对简单,只是逻辑上实现了分层,物理上分层只是一个前台,一个数据库。所以,要想办法限制用户的使用,必须是合法用户才能使用数据库。另外,数据库的连接对合法用户来讲是有效性,如果防止内部访问数据库也是一个问题。 初步想,采用域管理终端用户,这样外面来的用户可以被挡掉,SQL Server安全也是采用域账号用户。这样做可以挡掉外部,但内部还是一个问题,内部我的想法是采用域限制策略,不允许客户端安装软件,这样用户没办法通过别的软件来操纵数据库,安全性会好点吧,不过技术水平好点的人,总会找到什么漏洞的,防外好防,防内有点难啊。
所以,软件架构设计的重要性,如果我们一开始能考虑分层,中间有个业务层,当然可以物理上分开,那么,数据库仅需对业务层的服务器开放就行了,终端用户根本不知道,数据库在哪里,那样安全性肯定会很好,没办法,经验也是积累出来的。
再做下一个项目,一定要考虑分布式,就是物理上分层,这样才能提供强大的可扩展性。上次培训SAAS也讲到了这个问题。我前段时间看CSLA.NET,把现在讲的分布式扩展表达的很清楚。这样的架构,拿ASP.NET来讲,WEB层通过代理调用业务层,业务层的代理对应根据传入的业务对象,执行数据库操作。这样,物理上WEB层可以和业务层分在两台服务器上,再加上数据库,由三台机器来承担。前端调用业务层,可以采用好几种通信方式,目前有Web Service,Remoting,COM+企业服务,最近3.5版本又加入了WCF。
这样的框架部署起来,可大可小,如果在一台机器上,配置成本地调用,可以跳过代理,最大化性能。如果要实现大规模的应用,在WEB层可以通过WEB Farm实现负载均衡,每台WEB服务器再对应一台业务处理服务器,所有的业务处理服务器,再调用数据库层,而数据库层通过集群技术,可以想象,每层有5台服务器,3层15台服务器组成的应用有多强大。
而对于SAAS软件这样的平台软件来讲,架构一开始一定要考虑到可伸缩性,我觉得用CSLA.NET这样的框架来开发软件,一定能满足需求,另外还有代码生成工具使用,今天我研究了一下Code Smith自带的CSLA的模板,通过代码生成,真的相当方便。
这样一个框架,是我看过所有软件框架中感觉最满意的,毕竟老外考虑的比较好。站在巨人的肩膀上,我们会很快成功。强烈建议每一个做软件架构的人都能读一下<<Expert C# 2005 Business Objects>>这本书,里面有好多思想,值得我们去借鉴。
做软件要思考,我想一个人也是随着不断的做项目,积累了相当的经验,可以少走弯路,我们尽量不要自己去造轮子。
相关文章推荐
- 软件架构和软件框架-用例模型设计应用(1)
- [笔记]软件框架设计的艺术
- 文档之产品的软件设计方案的编写框架
- 软件测试中自动化测试框架设计参考准则
- 【TUP】第七期:框架设计、异步编程与管理软件自主化·上海
- 软件系统开发中的组件框架技术研究、设计和应用
- 软件界面设计对于软件开发的重要性
- 软件构架,框架,设计模式.Vs.知识工程
- 软件架构/ 框架 /设计/模式以及MVC是设计模式还是架构模式
- Android 框架搭建 软件架构 设计模式与系统架构
- 基于Qt的软件框架设计--续
- Windows Embedded 系统应用软件框架设计
- Netra基于Rdk平台的软件框架设计
- 框架体系对小软件作坊的 重要性 第一章
- Netra(DM8168)基于Rdk平台的软件框架设计
- 软件设计:大数据量下的评价健康体系的重要性
- 软件框架设计中的新猜想,你有答案吗?(挑战精神)---已有答案
- 网络协议及网络软件框架设计网络协议
- 基于.Net(C#开发)平台的三层框架架构软件的设计与实现
- Netra(DM8168)基于Rdk平台的软件框架设计