zoukankan      html  css  js  c++  java
  • 系统架构师基础到企业应用架构单机软件架构

    开篇

           系统架构的文章系列,也是搁浅的太久了,最近也是整理了下思路,将目前未完成的内容,写完吧,也不能拖太久,就不太好了。所以就趁周末写一下,今天我

    们要说的是单机应用,单击应用软件可以很复杂,也可以很简单。有些单机软件可以没有数据库,也可以有数据库,比如我们平时的一些工具类的软件,写字板,V

    S开发工具等,当然,目前很多的单机软件都有联网的功能,单机软件,估计大家有时候回想,单机软件不需要什么特殊的架构设计吧,其实不然,因为有的时候我

    们的单机工具,可能是提供给不同的用户群体等,或者是面向不同的人员使用时,适应不同的场景和需求的变化时,就会要求我们的单机软件也需要从架构的角度去

    考虑。因为如果想要可持续发展,那么一个软件或者工具不管是单机软件还是联机软件都需要考虑。

    大纲

           1、开篇

           2、大纲

           3、单机软件的定义

           4、单机软件架构

           5、关于开发出来的单机软件说明

    单机软件的定义

            虽然目前互联网很盛行,但是还是有很多的软件我们目前在使用,当然也有很多的软件,他们能够连上互联网,这样的软件不能算作是单机软件。单机软件的广

    泛可理解的定义:可以在不通过互联网或者联机的情况下即可运行的软件或系统,称之为单机软件或单机系统。

            比如说我本机的很多应用就是单机版的。

            image

            这些本身就能完成自主的功能,不需要联网,也不需要与其他的计算机交互即可完成功能,相当于功能是自治的,这样的软件我们就认为是单机软件。

            我之前也是做过不少的小工具,比如我们做一个winfrom的小工具,完成文本字符串的替换,或者自己开发的易用的小工具,都可以看作是一个建议的单机软件。

    VS在某种情况下,我们也称之为功能强大的单机软件。下面我们将会结合我们这次的主角来说明架构设计的必要性。我们这里以AgileEAS.NET平台中的界面设计器

    来说明。界面设计器本身就是一个非常独立的可以运行的工具,根据AgileEAS.NET平台的数据模型设计器产生的模型文件来生成界面模型。

    单机软件的架构设计

            单机软件一般都是比较简单的,那么从架构设计的角度来说,一般就是在逻辑架构上的要求比较高,物理架构的架构要求几乎为0,当然可能因为未来适应市场

    的变化,可能需要单机软件实现局域网或者互联网的信息共享或者互联网应用集成,这时候就需要考虑更高层次的架构,当然我们设计时也需要考虑这方面的因素,

    但是我们本篇就从简单的架构说开了去,来说明如何适应这样的变化。

            1、我们刚开的系统架构的设计可能是这样的。系统架构都是需求驱使的,因为一开始需求很简单。例如一开始客户要求我开发一个简单的界面设计器,没有什

    么要求,就要求我能够实现简单的拖拽功能。

            我根据要求分析出如下的结构:

            image

            通过分层来实现,将通用的拖拽的基础组件等放在基础组件层,同时将开发设计拖拽页面相关的的配置页面放在设计视图层中。

            2、后来,又来了一个需求,说是要能通过向导来生成页面的设计视图,那么此时我想了下,有将系统架构修改成如下:

            这时候需要添加一个新的层,该层负责添加所有的向导页面,然后设计器视图层根据配置来加载界面的组件元素。这时候系统架构如下:

            image

            3、再后来,随着需求的变化,有要求可以生成代码,输出winfrom页面代码,要求拖拽页面看到的什么样的界面,要求输出的winfrom界面的代码与设计器看到的

    可视化界面相同,这时候我的架构设计如下。

            image

            4、通过上面的架构设计,我发现,后续的需求又来了,不过这次我通过设计,已经可以对付这次的需求了,这次的需求变化是,要求支持多种页面表现风格。

            比如,在设计器视图,设计一次,即可生成winfrom的同样的页面,web的页面也布局类似,同事可以支持silverlight和WPF。

            image这样的话,不需要进行大的架构重构,只需要修改CodeDOM层中,将原来的设计器视

    图调用的代码生成,换成接口调用的方式来解耦,后续如果需要新增,只需要实现接口即可。

            5、这时候又来了新的需求了,想要让工具与原来的其他工具之间集成,例如将AgileEAS.NET平台中的数据模型设计器产生的sdm文件进行集成,支持打开和保存

    功能。将设计后的界面模型文件存储到sdm文件中,这是如何处理。

            image

            6、最终差不多算是告一段落了,后续可能还会有新的需求,可能会要求我把单机工具修改为联网软件,或者是设计的界面保存到数据库中,实现应用部署的动

    态变更单等,都是非常可能的需求,这时候,可能我的架构有需要发生变化了。

            image

           7、未来要求在互联网进行动态的更新该软件,支持软件的智能升级。

           image

     

    单机软件架构说明

                即便是今天,复杂的单机系统也有很多,它们大多都是专业领域的产品,如CAD/CAM领域的CATIA、ProEngineer,Autodesk的AutoCAD,还有我们熟悉的Photo

    shop、CoralDraw,等等(这些系统的高级版本可能提供了一些网络化的功能,但改变不了其单机系统的实质)。

    所以这里笔者要说的是,软件架构复杂并不代表软件系统复杂,其实,软件架构设计较为重要的领域只有一个,那就是信息系统领域,即以数据处理(数据存储,传

    输,安全,查询,展示等)为核心的软件系统。其他行业的软件应用对该概念其实并不是那么强调。

                  微软的.NET的架构图

                  图1 .NET Framework体系结构图[点击放大]

  • 相关阅读:
    LeetCode:43. Multiply Strings (Medium)
    LeetCode: 50. Pow(x, n)
    Web服务器、Web容器、Application服务器、反向代理服务器的区别与联系
    LeetCode:49. Group Anagrams(Medium)
    Java:String、StringBuffer、StringBuilder
    Java:泛型
    spring项目中web-inf下不能引用页面资源
    css Hack
    a标签的嵌套
    css中的绝对定位与相对定位
  • 原文地址:https://www.cnblogs.com/ywsoftware/p/2887085.html
Copyright © 2011-2022 走看看