随笔分类 - 架构设计
摘要:SOA中的MEP和JavaEE中的JMS类似,当然了就应该是类似的,因为都是关于消息方面的。一个是对系统架构当中消息的解决思路,一个是针对Java平台中的消息的具体解决办法(严格说不是具体的,只是提供了接口而已)或者说和上面分析BPM与Jpbm一样,前者是后者的特例,所以后者有的特征前者大部分都有。就像JMS规范中描述的那样消息无非也就是请求与应答,这里有两种基本的模式其实很简单啦。第一种就是请求/应答,第二种是请求不应答(单程)。如果两次单程消息的传递可以类似的成为一次请求/应答模式。但是他们还是有区别的,单程的消息传递是没有阻塞的,发送了就不需要发送者再去关系消息,而请求/应答是阻塞的,只
阅读全文
摘要:在接触SOA之前对“服务”这个词没有太多的感触,无非就是为别人做事情么。当然在SOA中这个词也脱离不了这层基本的涵义,但是具体到实际的架构中对这个词的理解就更加深刻了。本文就以“服务”为中心说说笔者对这个词的理解,尤其是它在SOA这个环境下的理解。由浅入深咱们先从现实说起,通常我们日常所说的“服务”这个词既可以是动词,也可以是名词例如:“为人民服务”“服务行业”。在国内对“服务”这个词理解有些误差,这和我们的民族文化有很大的关系。在很久之前作为官员常常说“做人民的公仆,为人民服务”使得人们感觉当官的没有架子,一心一意为人民办事(可事实上官员就是官员,有权利及时有权利,高高在上就是高高在上,人民
阅读全文
摘要:什么是BPM很多情况下企业当中所提供的服务不是由一个分布式业务流程就可以完成的,整个服务的提供需要多个分布式流程有机的组合,于是BPM就应运而生了。要将现有的服务通过配置、编排(关于配置与编排的区别后面将说明)以满足具体的业务流程的目的就不得不借助于工作流的相关内容。毕竟各个服务之间的配合是为了提供一项合理的业务流程,这样的话就必须要设计流程,说白了就是各个服务谁先谁后的问题。从字面上理解BPM所要做的就是对整个业务流程进行管理。这其中包括很多方面,比如分析业务、实现业务功能、检测业务流程、建立相应的操作流程的工具等等。在真正开始动手之前通常要做的将业务分解成已有的底层服务可以处理的小模块。实
阅读全文
摘要:企业服务总线(Enterprise Service Bus)是SOA的基础设施,之所以这么说是因为要达到SOA的目标(增强灵活性)就必须有调用服务的方法,ESB的存在有效的保证了消费者能够调用供应者提供的服务。网上有很多对ESB不同的理解,其实这取决于实现ESB方式。对于ESB来说具体的实现方式不是固定的,但是核心思想(主要的作用)是一致的。下面将从如下几个方面阐述笔者对ESB的理解数据格式转换ESB的存在就是为了解决SOA当中互操作的问题,由于SOA是支持异质的所以对于ESB来说主要的作用就是处理不同平台不同语言之间的相互调用。那么首先要做的就是数据格式的转换。在异质的环境中如果只解决一对一
阅读全文
摘要:什么是SOA?常常听到人们拿OOP和SOA一起来说事,诸如SOA是否可以代替面向对象(OOP)或者两者比哪个更加有优势?直接回答有难度举个例子可能显得答案更容易理解。小孩子问你该认真写作业呢?还是高考的时候报理科呢?摸不到头脑吧,根本就毫无意义的风牛马不相及的问题。(确切的说OOP和SOA还是有一些关联的,就像好好学习可以在高考的时候报理科是一样的。)面向服务的体系结构(Service Oriented Architecture)指的是一个系统的架构,他的研究领域是大型分布式系统的“架构”范式。而OOP指的是程序具体开发过程中的“编程”范式。再通俗一点说就是在一个具体的软件内我们谈论OOP,但
阅读全文
摘要:首先恭喜守宏同学找到了自己心仪的工作,入职的事情终于尘埃落定,也算是一个新的开始吧。和守宏聊天的时候也说了很多有关工作的事情,畅想了以后美好的未来,也想到了今后的种种困难。不说别的就是单单在北京住房这一项就够任何一个职场上的人忙上好几年的。英国天气无常,所以英国人寒暄的时候常常谈论天气;北京人居无定所,所以在北京上班的朋友们大可以在寒暄的时候谈论租房;)。“哎,你在哪租的房子?”“我在西二旗那边,挺便宜的……”“嗨,我之前在那边住过……”很多在北京工作的朋友第一要考虑的就是住宿的问题。没办法“衣食住行”里面其他的都还好说,唯独“住”这件事在帝还是一个比较特殊的问题。也问过大多数在北京的朋友,他
阅读全文
摘要:Struts11、初始化:struts框架的总控制器ActionServlet是一个Servlet,它在web、xml中配置成自动启动的Servlet,在启动时总控制器会读取配置文件(struts-config、xml)的配置信息,为struts中不同的模块初始化相应的对象。2、发送请求:用户提交表单或通过URL向WEB服务器提交请求,请求的数据用HTTP协议传给web服务器。3、form填充:struts的总控制器ActionServlet在用户提交请求时将数据放到对应的form对象中的成员变量中。4、派发请求:控制器根据配置信息对象ActionConfig将请求派发到具体的Action,对
阅读全文
摘要:在Web应用中可以使用过滤器对所有的访问和请求进行统一的处理、IP访问限制以及用户发送请求的字符编码转换等,在进行具体的业务逻辑处理之前,首先要经过过滤器的同意处理,然后才开始进入真正的逻辑处理阶段。过滤器的基本原理过滤器的功能就是在服务器和酷虎中间增加了一个中间层,可以对两者之间的交互进行统一的处理,每一个从客户端提交的请求都需要通过过滤器的处理然后再进行其他操作。在实际开发过程中,过滤器可以用来对用户进行统一的身份判断、IP访问限制、用户发送请求的字符编码转换、对请求和响应进行加密和解密、记录用户登录日志等。当然过滤的用途不仅仅这些,我们可以根据过滤器的实现原理,思考过滤器的更多用途。IP
阅读全文
摘要:每当别人问我关于三层的知识的时候我总是推荐自己的《三层架构之抽象工厂加反射》这篇博客。这篇博客是自己当时学习三层的时候写的一个简单的登录例子。这个例子通过登录这个用例简单的介绍了三层,然后过度的三层+简单工厂再过渡到三层+抽象工厂。不管说从方法命名或者代码风格上来说自己都不敢说是最好的,但是体现三层我感觉还是绰绰有余的。然而最近在给别人讲述三层时候被他人指出这篇博客的代码有些许错误,虽然别人指出的方式有些令自己不快,甚至气愤!但是毕竟还有人关注自己,还有人看自己的博客,还有人给自己指出不足,从这个方面来看这还应该算是好事。有错误就改!有错误才能进步嘛。也许这就是米老师总是说的教学相长吧,这次终
阅读全文
摘要:此次DRP项目主要对企业的物流和资金流进行全面的管理和控制,从而缩短企业的供应链,为企业节省成本,为管理层提供全面的信息流。本系统主要包括如下模块,代理商及其库存管理、分销费管理、结账管理、付款结算管理、统计报表管理、基础数据管理和系统管理。整个系统采用分层的思想,通过调用访问数据库类(Dbutil)访问数据库。考虑到如果多次实例化用户管理类(UserManager)可能导致对表的操作混乱,而且还浪费资源。而且用户管理类(UserManager)有一个就足够了。映射到三层架构中就是DLL层的类统统可以采用单例模式,为了保证系统的正确运行同时尽可能的减少资源的开销。于是在这部分用到了单例模式。单
阅读全文
摘要:三层架构就是MVC!起初老师总说三层MVC,MVC三层架构……所以开始的时候脑子就一个概念:三层就是MVC,MVC就是三层架构。而且想想也合理啊,都是“三”。MVC是三个字母,三层架构也是“三”,理所应当的就对应上了。然后就这么一直“错”了很长时间。三层架构绝不是MVC!!后来学习了J2EE之后发现老师说的好像不对,MVC和三层架构不是一个东西。三层架构是界面层(UI)业务逻辑层(BLL)和数据访问层(DAL)构成的,而MVC是模型层(M)界面层(View)和控制层(Controller)构成的,而且他们之间也不对应。如果硬要给他们对应的话,那么三层架构中的UI对应MVC中的view(jsp)
阅读全文
摘要:LN项目截止到昨天为止算是彻底的完工了,功能实现方面没有问题,但是这个一星期出来的“早产儿”还是有很多其他问题,比如代码的重复量过高、各个类之间耦合太大。整个系统中虽然用到了分层的思想,但是基本上BLL层的代码是一致的,也就是说如果需求改动(比如增加审核的部门,或者原先的部门审核顺序进行调整)则需要改动整个的BLL层。现在整个系统的架构如下图所示:整体上的架构没什么问题,经典的MVC。其实这次做的系统有点四不像,宏观的看是MVC但是具体到Model层我们又走了.Net中的三层架构的老路子,这就导致了每个servlet对应各自的bll,于是就造成了bll层的重复代码太多。Duplicate Co
阅读全文
摘要:在做系统的时候有意识的用到了抽象工厂这个设计模式,主要解决的是数据库更换的问题。下面就以简单的登录来逐步的分析一下这个模式。经典的三层架构数据库如下1.一般的数据库连接方式界面层 1: Public Class Login 2: Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click 3: Dim LUser As New Entity.User 4: Dim BChe...
阅读全文
摘要:注意:文中代码有误,为保留历史痕迹在本文不做修改,正确代码详见《纠错》在做系统的时候有意识的用到了抽象工厂这个设计模式,主要解决的是数据库更换的问题。下面就以简单的登录来逐步的分析一下这个模式。经典的三层架构数据库如下1.一般的数据库连接方式界面层 1: Public Class Login 2: Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click 3: Dim LUser As New...
阅读全文
摘要:l简介n用例图比较官方定义是这么说的:用例图就是由主角、用例以及它们之间的关系构成的图。该图说明了用例模型中的关系。n可以从两个方面来理解用例图的重要性:u对客户来说用例图是他们业务领域的逻辑化表达;u对建设单位来说,用例图是系统蓝图和开发的依据。也就是说只有画好了用例图才能更好的了解系统的功能性需求,才能比较准确的做出客户希望的系统。l遇到的问题相信画过用例图的朋友一定有这么一个体会,要么满篇一个小人几个圆圈几根连线——空荡荡;要么N多小人M多圆圈满篇连线——蜘蛛网。这些都是我们所不希望的,这样的用例图可以说没有存在的意义。因为失败的用例图不能准确的表达这个系统具备什么功能,如下面得“用电业
阅读全文
摘要:设计模式的代码敲了一遍了,原本想着再深入的学习一下的,但是又要忙着专业课的考试,不得不把设计模式先放一放。前一阶段的学习只能叫浅学习,忙完期末考试后准备进行设计模式的深学习(《关于编程的浅学习与深学习》)。说说现在对设计模式的理解,欢迎拍砖。什么是设计模式?就现在个人所理解的设计模式而言,它(设计模式)就是能帮助我们充分利用面向对象的思想写出更高效的代码的固定套路。做一个比喻的话设计模式就是象棋中固定的残局。而那些工厂方法模式、外观模式、观察者模式等等就类似于双炮将,马后炮,铁门栓之类的招式。都是前人经过多年的摸索,总结、提炼出来的规律,一般情况下只要照着做(下棋当中也是一个道理)就会有比较好
阅读全文
摘要:UML图画告一段落了,没有画的图也全部都补上了。补图同时也是补“纠结”——学习中不可缺少的部分!画图那纠结的日子貌似是过去了,但是我们有收获,这种纠结非常有意义!况且第一遍的纠结是为了第二遍、第三遍的舒坦做铺垫的。只有通过这个纠结的过程,才能更好的、深刻的理解学习的内容。而那种轻而易举就得到的速成知识,自己往往印象不深刻,很容易就会随着时间的流逝而流失。扫扫UML的尾巴,颗粒归仓,说说感受。补图有感:自信在补图的过程中对UML的理解再一次加深,同时对ROSE的熟练程度也得到了提升。但是这不是最重要的,最重要的是自我心理上的一种安慰,一种满足。当下次再去画图或者看图的时候心理上会告诉自己当时我是
阅读全文
摘要:目录部署图概要...1部署图中的事物及解释...2部署图中的关系及解释...2我的部署图...3关于部署图与构件图...3相关例子...4实例层部署图...4描述层部署图...5部署图用于静态建模,是表示运行时过程节点结构、构件实例及其对象结构的图。如果含有依赖关系的构件实例放置在不同节点上,部署视图可以展示出执行过程中的瓶颈。部署图的两种表现形式:实例层部署图和描述层部署图(会在后面的实例中给出)。部署图与构件图相同的构成元素(未懂):构件、接口、构件实例、构件向外提供服务、构件要求外部提供的服务。部署图与构件图的关系:部署图表现构件实例;构件图表现构件类型的定义。部署图偏向于描述构件在节点
阅读全文
摘要:构件图 目录构件图概要...1构件图中的事物及解释...1构件图中的关系及解释...1我的构件图...1构件图用于静态建模,是表示构件类型的组织以及各种构件之间依赖关系的图。构件图通过对构件间依赖关系的描述来估计对系统构件的修改给系统可能带来的影响。可替换的物理部分包括软件代码、脚本或命令行文件,也可以表示运行时的对象,文档,数据库等。节点(node)是运行时的物理对象,代表一个计算机资源。
阅读全文
摘要:目录活动图概要... 1活动图事物... 2活动图关系... 2我的活动图... 3描述系统的动态行为。包含活动状态(ActionState),活动状态是指业务用例的一个执行步骤或一个操作,不是普通对象的状态。活动图适合描述在没有外部事件触发的情况下的系统内部的逻辑执行过程;否则,状态图更容易描述。类似于传统意义上的流程图。活动图主要用于:业务建模时:用于详述业务用例,描述一项业务的执行过程;设计时:描述操作的流程。一般活动图带泳道的活动图
阅读全文