zoukankan      html  css  js  c++  java
  • 软件框架设计设计重要性

    上周参与了公司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>>这本书,里面有好多思想,值得我们去借鉴。

    做软件要思考,我想一个人也是随着不断的做项目,积累了相当的经验,可以少走弯路,我们尽量不要自己去造轮子。
  • 相关阅读:
    阿里云 k8s 部署 Spring Cloud Alibaba 微服务实践 (四) 自动化部署
    阿里云 k8s 部署 Spring Cloud Alibaba 微服务实践 (三) 服务观测
    阿里云 k8s 部署 Spring Cloud Alibaba 微服务实践 (二) 部署微服务程序
    阿里云 k8s 部署 Spring Cloud Alibaba 微服务实践 (一) 部署 Nacos
    C++知识点
    libmkl 学习笔记
    基于tesseract-OCR进行中文识别
    poco编译与运行
    Linux下的I/O复用与epoll详解(转载)
    高并发网络编程之epoll详解(转载)
  • 原文地址:https://www.cnblogs.com/huang/p/CSLA.html
Copyright © 2011-2022 走看看