软件设计模式浏览器(共8篇)
软件设计模式浏览器 篇1
摘要:针对软件设计模式的应用中的一个瓶颈,提出软件设计模式浏览器研制。使用软件设计模式的思想,从功能模型、对象模型等方面提出软件设计模式浏览器的UML模型。采用层次结构对软件设计模式的信息进行组织。为软件设计模式的学习、选择、应用提供了一个有效的工具。
关键词:软件设计模式浏览器,UML,用例模型,对象模型
自出现软件以来,软件质量就是一个永恒的话题。在软件开发方法的探索中,提出了很多种设计思想。面向对象软件方法的兴起,在很大程度上为提高软件质量和开发效率奠定了很好的基础。目前软件业广泛采用设计模式进行软件设计,因为它们与构建应用程序直接相关,为代码复用开辟了新的道路。Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides在参考文献1中第一次将设计模式提升到理论高度,对应用中的各种模式进行总结、筛选,并规范化,提出了23种基本设计模式,这些模式分析了在设计和构造应用程序时遇到的常见问题和解决方案。之后,在可复用面向对象软件的发展过程中,新的大量的设计模式不断出现。参考文献2把模式分成体系模式、设计模式和代码模式三个层次,并提出了一些新的模式。
参考文献3特别强调了Design Patterns are Bad for Software Design,主要原因在于熟悉传统的结构化方法的设计人员过渡到面向对象方法存在很多困难,要应用软件设计模式更没有经验可言。同时,软件设计模式会随着学科经验的积累而不断更新,在对软件设计模式不熟悉的情况下套用软件设计模式会对设计的效率和重构潜力产生很坏的影响。
从国内外的研究来看,软件设计模式应该是变化的、不断成熟的理论,新的更好的软件设计模式会不断的产生,老的软件设计模式可能会过时。要从众多的软件设计模式中选择适合自己系统的模式显然是使用模式的瓶颈,特别是对软件设计模式并不熟练的人员。虽然使用软件设计模式不是目的,但它确实可以在很大程度上提高程序的重构能力。要应用设计模式,首先应该需要熟悉并深入理解这些模式,其次,需要一种有效的软件设计模式选择方法和工具。
有很多人在研究软件设计模式以及具体设计模式的应用,对软件设计模式的学习和选择来源于书籍,或者一些不可补充的电子参考,比如参考文献4,这对于不断发展的软件设计模式理论显然是不够的,迫切需要较为直观的软件设计模式学习和浏览的工具。这里希望找到一个有效并尽量完善的软件设计模式浏览器(SDPE,Software Design Pattern Explorer)模型,为软件开发者提供一个了解、比较、学习、选择软件设计模式的工具。
UML(Unified Modeling Language,统一建模语言)是一种面向对象建模语言,它采用可视化的方法对软件进行描述、可视化处理、构造和建立软件产品的相关文档,具有创建系统静态结构和动态行为等多种结构模型的能力,具有可扩展性和通用性,适合于多种多变结构系统的建模,便于迭代。是面向对象分析和设计的基本工具。
Rational Rose是Rational公司基于UML规范的可视化建模工具。Rose与Rational其他一系列的软件工程方面产品的集成度比较高,并且使用方便,提供从模型到代码的自动化,Rational Rose遂成为UML建模的首选。
本文采用UML规范,用Rational Rose 2003实现SDPE的功能建模和对象建模。
1 模式信息的组织
目前的软件设计模式主要有三个来源,一个是GOF提出的23种设计模式;一个是POSA中提出的模式;然后是一些没有系统化提出但是应用比较广泛的模式。从GOF和POSA对软件设计模式的描述来看,对众多的模式均采用多级分类进行组织。参考文献1中,根据目标准则,GOF把模式分成行为型、结构型、创建型三大类;根据范围准则,则分为类模式和对象模式,按照这两种依据的组合,可以分成六个小类。参考文献2中,把模式分成服务访问和配置模式、事件处理模式、同步模式、并发模式四大类。综合这些分类方法,选择采用三级树型结构进行组织,如图1。第一级为根,称为SoftwareDesignPattern。第二级为模式的来源,有GOF、POSA、Others等类别。第三级是具体的模式。模式的描述另外说明。这个结构应该是活动的,软件可以根据模式携带的信息主动构建这个结构,从而实现模式的动态更新。同一个模式对应多种语言的示例代码,独立于模式信息存储。
2 SDPE的功能模型
在SDPE中,用户使用最多的是模式浏览功能,由于对模式最直接的认识来源于模式的结构图,据此设计模式浏览的主体功能为结构图,同时可以选择显示模式的其它文字信息,通过示例代码分析模式的实现方法。用户初步选定某个模式之后,如果需要深入了解,可以导出该模式的模型、代码,并进行编辑。浏览的基础是对模式信息的存储,因此需要模式的管理功能。
根据以上分析,SDPE应该实现设计模式的管理功能,模式浏览打印功能,模型导出编辑功能,模式示例代码分析功能。从用户的角度看到希望得到的功能是SDPE的功能需求,表现为用例图。SDPE中的事务有:
1)用户要浏览软件设计模式信息,设计支持顺序浏览和选择浏览,并简洁信息和完整信息两个方案;
2)用户需要编辑模式信息,涉及加入新模式,修改现有模式,以及删除已有模式;
3)用户要深入了解或者引用某个模式的模型,这里涉及为模式的相关信息导出,可以导出文字信息,图形信息和Rose模型;
4)用户要使用某个模式,需要进行代码方面的研究,设计为模式代码编辑和导出。
SDPE是开放式软件,任何用户都可以直接操作SDPE实现所有的功能,归为同一类参与者;由SDPE导出的文件需要使用一些专门的软件打开,在这里归为被动参与者。由SDPE导出的模型使用Rational Rose编辑,Rational Rose属于被动参与者,同样RTF文件的浏览软件(如Microsoft Word)也是被动参与者。根据以上分析,SDPE的用例模型表示为图2。
模式浏览提供类似于Windows资源管理器的浏览界面,在界面控制上有所区别;模式管理用例由加入模式、修改模式、删除模式、代码编辑三个用例实现;模式引用由导出MDL模型、导出模式信息、代码编辑三个用例实现。模式浏览用例由完整浏览和简洁浏览两个用例实现。
3 SDPE的对象模型
对象模型描述系统类的数据元素和界面元素。在SDPE中,最核心的数据是模式信息,每个模式的信息均需要永久存储于磁盘,需要定义永久类Pattern和永久类Code。
根据GoF对模式的描述,每个模式本身需要用名称(Name)、意图(Intent)、别名(AlsoKnownAs)、动机(Motivation)、适用性(Applicability)、参与者(Participants)、协作(Collaborations)、效果(Consequence)、实现(Implementation)、已知应用(KnownUses)、相关模式(RelatedPatterns)、结构图(Structure)等十三个属性进行刻画,Pattern类的相关模式属性(Related Patterns)与Pattern类自身关联。为便于对模式信息进行分类组织,增加模式组、模式类型两个属性。
在SDPE运行期间,所有模式信息作为一个集合进行访问,每次访问一个模式的信息,可以定义为集合与记录的关系,由此定义一个模式管理器类PatternManager。其属性在Pattern类的基础上加入当前模式位置信息CPos。按同样的方式定义代码类Code和代码管理器类CodeManager。
PatternManager类的结构与永久类基本相同。Pattern类支持的操作定义为方法,从提高软件重构能力出发,为永久类Pattern定义方法SDPExport()实现结构图导出,定义ModelExport()方法实现Rose模型的导出,定义Pattern类的打印方法Print()实现模式信息的打印输出,定义Pattern类的多态显示方法Display()实现在人机界面的信息显示。
作为对系统功能的描述,根据上文的分析定义行为类Ex-plorerForm、MaintainForm和CodeEditForm。ExplorerForm类实现浏览,MaintainForm类实现模式管理。CodeEditForm类实现代码编辑。
根据以上分析,SDPE的对象模型定义如图3(由于Pattern类属性较多,没有一一画出)。从图3来看,PatternManager类和Pattern类之间是一对多的依赖关系。Pattern类通过RelatedPatterns/Name与自身关联,为一对多的反射关联关系。
4 SDPE中的模式思想
在设计中使用软件设计模式可以在很大程度上提高程序的重构能力,这里提出SDPE设计中的模式思想。
工厂模式,在实现软件设计模式浏览时,由模式信息的数据集合产生具体模式的信息,并且在任何时刻都只有一个模式存在。工厂模式一般采用单实例模式实现,单实例(Singleton)模式属于对象创建型模式,它保证一个类只有一个实例,图3中的Pattern由PatternManager实例化,Code由CodeManager实例化,每次只产生一个实例。
外观模式,使用ADO.NET对象连接数据库时用到了外观模式,只需要提供数据库文件路径就可以填充返回数据集合。并且,单实例通常也采用外观模式实现。
以上列举了几个软件设计模式应用的例子,模式之间不是完全独立的,在一个应用中,可能会同时用到多种设计模式。同样,同一个模式也会有多种形式,不应该拘泥于模式的某种结构。
5 结论
本文使用通用的UML面向对象建模语言对软件设计模式浏览器进行用例模型分析和对象模型分析,并采用集成化的OOCASE工具Rational Rose实现这些模型,探讨了SDPE中的软件设计模式思想。为软件设计模式的研究提供了一个实用的工具软件模型,具有现实意义。
参考文献
[1]Gamma E,Helm R,Johnson R,et al.设计模式:可复用面向对象的软件基础(双语版)[M].李英军,马晓星,蔡敏,等,译.北京:机械工业出版社,2007.
[2]Buschmann F,Meunier R.Pattern-Oriented Software Architecture,Volume1:A System of Patterns[M].Addison Wesley,1996.
[3]Sommerlad,Peter.Design Patterns are Bad for Software Design[J].Software IEEE,2007,24(4):68-71.
[4]国刚,周峰,孙更新.UML与Rational Rose2003软件工程统一建模原理与实践教程[M].北京:电子工业出版社,2007.
[5]刁成嘉.UML系统建模与分析设计[M].北京:机械工业出版社,2007.
[6]绍维忠,杨芙清.面向对象的系统分析[M].北京:清华大学出版社,南宁:广西科学技术出版社,2006.
[7]RedSword软件工作室.设计模式迷你手册[EB/OL].http://redsword.cn.st.
软件设计模式浏览器 篇2
Maxthon、Firefox、TencentTraveler、Opera等浏览器都各有特色,功能也强大,如果你的胃口更大,需要免费而更加“小”“巧”的浏览器,推荐使用以下两款基于IE内核的浏览器。
何谓“小”——浏览器软件大小只有几百KB!
何谓“巧”——功能强大,使用方便,运行速度快!
1、GreenBrowser
GreenBrowser 是一个容易入手且高效的网页浏览工具,同时功能也比较强大,并非常小巧。
功能特色:广告过滤, 鼠标手势, 鼠标拖拽, 自动填表, 自动滚屏, 自动刷新, 自动保存, 自动隐藏, 网速监测, 搜索栏, 扩展工具栏, 收集器, 页面管理器, 下载管理器, 群组, 插件, 皮肤, 代理, 启动模式, 网址缩写, 一键通, 链接分析, 状态栏显示设置, 分类保存, 清除历史信息, 页面下载控制, 页面缩放, 页面背景色设置
部分特色功能详解:
①可定制搜索工具条
GreenBrowser内置了多项专业分类搜索引擎,用户拖动网页内的文字就可以用缺省搜索引擎进行搜索,用户还可以在设置中选中多个搜索引擎,一次打开几个搜索引擎进行搜索,甚至用户可以将自己常用的搜索引擎添加到搜索工具条上,用户在输入框内输入关键字后单击搜索工具条上的这个图标就可以直接使用该引擎进行搜索。另外用户也可以将网页上的文字直接拖放到该自定义搜索引擎按钮上进行搜索,这个功能对于经常要切换使用多个搜索引擎的用户来说很方便,免去了查找和切换搜索引擎的麻烦,极大地提高了搜索的效率。
②下载完成自动执行命令
在添加链接到收藏夹时,你可以选择页面下载完成后自动执行某个命令或者插件,比如自动填表,页面放大,滚动屏幕,切换编码等。如果将自动执行的命令设置为自动填表,结合填表功能的自动提交功能,我们就可以让GreenBrowser为你一气呵成完成打开网页,填表,登陆一系列动作。
③可自定义的下载控制
用户可以设置收藏夹和群组中的页面下载控制选项。有些页面的ActiveX或者Script等会给浏览造成麻烦,用户就可以在添加到收藏夹或群组时为其设置特殊的下载控制选项。
④贴心的隐私保护功能
当你在浏览某些页面时,显示在主窗口标题栏上的标题可能会泄漏你的一些隐私,在GreenBrowser中你可以在选项中选择禁止在窗口标题栏显示网页标题。
软件设计模式浏览器 篇3
1 建筑物建模及转换问题
虚拟校园场景浏览效果图的第一步自然是建模。建模在制作方法上可以采用两种方法:第一种是直接用OUTCAD软件建模,这种方法对于学习建筑、机械的学生来讲比较熟练,它的主要优点是建筑建模精确细腻。第二种是利用3DS MAX软件里自带的建模控件直接进行建模。
第一种办法做出的建模,可以通过3DS MAX软件导入OUTCAD的建模图。用这种方法在导入之前,必须对OUTCAD建模图形进行一些必要的整理,删除一些对整个场景没有帮助的建模图形,精简OUTCAD建模图形中的细节,以便加快3DS MAX软件导入速度,并且将建模图形各平面或立面图设置为一种颜色或一个图层,以写块的方法保存,以避免无关图形被导入至3DS MAX软件中。在导入至3DS MAX时,同一种颜色或同一个图层的图形将成为一个对象封装所有。导入的OUTCAD建模图形可以不需要做任何的编辑,作为底图用于场景建模。
一般情况下,我们可以采用第二种直接在3DS MAX软件里建模,因为建筑效果图一般不需要精确的数据,另外随着3DS MAX软件版本的提高,建模的功能已大大提高。
2 植物、树林等植被制作简化问题
树林、绿化带制作是场景必不可少的道具。经验告诉我们若采用建立立体树的方法或调用软件自带的树木,最后渲染场景中的树林将占用大量的空间内存,很浪费空间和渲染时间。最好的办法是对场景中的树林可通过相同的单体树进行大量复制获得。树林、绿化带植被的制作分两种情况:第一种是近景植被制作,近景植被要求能看到细节,因此,利用3DS MAX的AEC Extended中的Foliage创建精细树木、花草调用软件自带的树木模型等。第二种是远景植被制作,远景植被可以用一棵树制作后进行大量复制产生各种需要的树林。一棵树制作建立两个以上的平面,围绕在主杆轴相互交叉平面,形成一棵视觉上的立体树,再赋予带透明通道的树木或花草贴图。制作一棵视觉上的立体树主要步骤如下:
首先,用photoshop将拍摄的一棵树(图1)图片素材抠出,而且制作出一份黑白图片(图2黑色部分就是透明区)
然后,在3DS max中画制作出一棵树的主杆轴,围绕在主杆轴复制平面旋转出相同大小的相互交叉平面,即做成一颗树(图3)。并对每个平面贴图:参数见(图4)。漫反射中调用(图1)图片,不透明度中调用(图2)图片。将制作好的这棵树复制摆设在不同的区域形成树林。
3 利用实景拍摄的位图,对建筑物虚拟逼真贴图问题
首先,对校园进行实地拍摄,用数码相机拍摄真实景观的建筑物、灯柱、树木、道路、栏杆等纹理贴图,可以采用JPG格式存储。拍摄的各种图片产生的比例失调,可以用PHOTOSHIOP软件进行处理,例如,用自由变换中旋转、拉伸、缩放控制图片的方向,裁剪图片四周的其他废物杂景,得到需要的纹理图。
其次,对完成的建筑物每一面进行的逼真分配材质和贴图,先在材质编辑器进行简单的UVW坐标调整,贴图不理想可以在修改器列表中再次进行UVW坐标调整。注意在建模过程中所创建的建筑物使用的材质都是“多维/子对象”材质,需要对每个选中的面进行分别贴图。
逼真的三维场景模型是构建高逼真虚拟室外场景浏览的关键,在模型的精细程度与绘制的速度方面取一个折衷,既要保证一定的绘制质量,以满足良好的视觉效果,又不造成用户浏览的不适感。地形这一特殊的复杂模型一般采用多分辨率建模技术绘制。在3DS MAX材质制作中,拍摄实景位图照片是较为常用的一种二维贴图素材。在三维场景制作中大部分模型的表面贴图都需要与现实中的实体相吻合,用数码相机拍摄或其他途径获取的位图贴图素材作为校园立体图对象的贴图是一种最逼真实景的方法。本例中一些建筑体的墙面、树木、木纹等的材质制作都是用这种方法拍摄实景位图照片的。制作某学院图书馆的主楼的主要制作步骤如下:
1)数码相机实景拍摄教学楼图片
2)PHOTOSHIOP软件进行处理,修正教学楼图片
3)3DS MAX软件导入OUTCAD的教学楼建模(图5)
4)对教学楼建模选择逼真的实景拍摄图片进行“多维/子对象”材质贴图(图6)
4 大场景天空及远景构建贴图问题
制作模拟校园室外浏览的场景时,常常遇到背景天空贴图问题,大场景天空及远景构建贴图是场景中的重要内容。具体做法是:
利用半球(天空盒)来表现广阔的天空的半圆环,就是我们在建筑的上方建立一个半球的球状天空盒,将球天的自发光调为100,并且反转法线,设置该球天属性对摄像机不可见,并且取消接收阴影和投射阴影以免挡住光线,在球天的内部贴上周围场景的图片,旋转天空盒角度,给玻璃的Reflect贴一个光线跟踪,使玻璃能够较真实地反射周围的场景。为了让VR场景更加生动,可利用POST控件工具添加一个太阳光班,调整太阳光班的角度与高度,使太阳光斑的光线方向和场景投影方向保持一致。
利用四边形的面片(半圆环)组成一个封闭的围墙,构建在校园区域远景的半圆环,就是把拍摄的校园区域远景照片对围墙进行适当的纹理贴图映射,从而实现远景模拟。制作某学院图书馆的主楼的主要制作步骤如下:
1)制作半球(天空盒)能够遮罩整个校园区域或摄影机浏览区域(见图7)并对其贴图
2)制作四边形的面片(半圆环)能够封闭整个校园周边区域(见图8)并对其贴图
5 分块分机并行渲染输出问题
完成了三维建模、材质灯光以及摄影机动画浏览设定以后,再进行局部修改和调整,这样就可以某个动画场景进行渲染输出了。渲染输出的时候注意输出的格式(本案例输出为.avi格式)以及是否保留Alpha通道。现在问题是因为场景中内容太多,各种建模;校圆建筑、假山、水塘、花草等实体在一个时间段,一台PC计算机上进行渲染的等待时间太长。为解决这个问题可采用的办法有:
1)建筑、假山、水塘、花草等实体分块制作
2)摄影机浏览路线优化分段;
3)多分场景
4)利用网络操作系统将场景分机并行流水线渲染处理,再并机
6 结束语
学员们一致认为本文讨论的几个问题是虚拟校园场景浏览制作过程中最常见问题,掌握并能很好运用所学知道,解决以上问题是不难的。让学员自己亲自动手拍摄各种校园逼真现实图片、数字图像、声音、话外音等素材,制作构造模拟各种校圆建筑、假山、水塘、花草等实体,合理布置各场景灯光、摄影机,并在后期合成各场景浏览。在制作过程中使学员能够看到听到声形并茂,引人入胜,与实际相符合的学校场景,即锻炼了学员运用所学课程中的知识制作出可以播放的校园室外场景浏览电影,又极大提高了学员的学习热情。
摘要:该文探讨了3DS MAX软件制作虚拟室外场景浏览的几个重要技术方面的问题,如:建筑物建模转换、树木简化虚拟逼真现实贴图、建筑物虚拟逼真贴图、大场景天空及远景构建贴图、渲染输出效率问题。给出了利用AUTOCAD、3DSMAX、PHOTOSHOP开发工具在制作虚拟校园场景浏览过程中,如何解决这些问题的的方法和技巧。
关键词:植被制作,交叉平面,逼真贴图,球状天空盒,半圆环,分机并行渲染
参考文献
[1]严定宪,文肯.影视动画设计教程[M].北京:电子工业出版社,2005.
[2]宋毅.3ds Max2009建模实例精解[M].北京:兵器工业出版社,2009.
软件设计模式浏览器 篇4
严格地说,间谍软件spyware和广告程序adware还是有点区别的。广告程序通常指内建在共享软件内的,打开该共享软件的同时到网上下载广告并显示的那种程序。这是共享软件作者获得收入的一种方法,在安装时也会提示,一般通过注册该共享软件可以解除它。而间谍软件可能也以广告程序的面目出现,但它却会偷偷搜集您的信息并发送给特定的目标。
有的时候,间谍软件和广告程序的区别也很模糊,比如有的广告程序在弹出广告窗口的同时也会通过读取它建立在您电脑中的cookies来获得用户的浏览习惯等信息,说它是间谍软件也不过分。当然,也有的间谍软件并不弹出广告,只是悄悄地开后门发送它搜集的信息,甚至有的已经和木马的行为差不多了。在那些将此类程序加入病毒库的杀毒软件中,同一样本,一个杀毒软件报告为广告软件,而另一个杀毒软件报告为木马,这也并不罕见。
恶意程序远不止此,浏览器劫持也是常见的恶意行为。主页、搜索页被改,不请自来的受信任站点,收藏夹里自动反复添加恶意网站,这些的恼人程度甚至不次于真正的病毒。此外,还有恶意拨号器、玩笑程序、 工具……
广告/间谍软件、浏览器劫持、恶意拨号器等等的出现和泛滥莫不与利益驱动有关。间谍软件制作者可以通过将收集到的信息出卖给其它组织来获利,浏览器劫持可以增加特定网页的访问量(意味着广告收入的增加),恶意拨号器则会主动帮拨号用户花掉大量的电话费(这笔钱怎么分就是人家的事啦)……
这些东西是怎么感染电脑的呢?广告/间谍软件可能通过某个“免费”软件安装到您的电脑中,可能是您浏览某个网页时不小心点了某个弹出窗口的“确定”,甚至可能是被直接偷偷安装到电脑上的。恶意拨号器通常是在骗取了您的信任后才被安装到电脑上的。浏览器劫持的过程一般较隐蔽,常常在上网浏览过程中,到过某个网站后,浏览器就开始出现异常了。这也不是截然分开的,有的广告/间谍软件也可能有浏览器劫持的动作。
那么,如何防范呢?一个好的浏览习惯是必要的,
不要轻易相信网站的劝说,在点击任何“确定”按钮前都要三思。遇到可疑的询问是否下载某某软件的弹出界面,最好直接终止浏览器进程(同时按下ctrl+alt+delete,在打开的窗口中选中您所使用的浏览器进程,然后按下“结束任务”或者“结束进程”,最后关闭该窗口。)使用windows update(打开ie――工具――windows update)给系统打上所有关键补丁、安全补丁也是必要的步骤,建议您打上这些补丁。遗憾的是,有的杀毒软件对这类问题反应不够敏感,而普通防火墙对于已得到您允许的软件(那些间谍软件的宿主程序)访问网络也是大开绿灯的。不过,这类程序绝大部分都是以ie为目标的,如果您愿意更换一款非ie内核的浏览器,那么风险会小得多。另外,也有一些防间谍/广告程序的专门工具,比如spybot - search and destroy、ad-aware,当然,还有分析利器hijackthis。
常见的“浏览器绑架”症状可能有以下一些(仅是举例,绝非全部症状):
*被重定向到恶意网页
*当输入错误的网址时被重定向
*输入字符时ie速度严重减慢
*重启动后ie主页/搜索页被更改
*不请自来的受信任站点
*收藏夹里自动反复添加恶意网站
*在使用google和yahoo等著名搜索引擎搜索时出现某些弹出窗口
*ie 选项卡中出现不能更改或被隐藏的项目
*不能打开 ie 选项卡
……
如果您的浏览器出现这类症状,就提示您可能遭遇了浏览器劫持。当然,您还可以通过一些对付广告/间谍软件、浏览器劫持的专门工具来检测和修复这些问题。清除广告/间谍软件前请注意,如果它们是随同某个免费软件安装的,清除了它们之后,该免费软件很可能无法继续正常使用。
一种安全浏览器设计实现 篇5
关键词:浏览器安全,操作权限,浏览历史
浏览器是指可以显示网页服务器或者文件系统的HTML文件内容, 并让用户与这些文件交互的一种软件。它用来显示在万维网或局部局域网络等内的文字、影像及其他资讯。这些文字或影像, 可以是连接其他网址的超链接, 用户可迅速及轻易地浏览各种资讯。随着网络的不断发展, 网页浏览器作为上网的所必需的软件之一, 已经得到了广泛地应用。网页浏览器的开发与应用更是成为了计算机领域近年来的一大热点。更为重要的是, 浏览器的安全性也随应用的广泛而越发重要起来, 采用合理的设计思想和方法对减弱浏览器的缺陷和插件的影响尤为重要。
报告数据显示, 中国是遭受利用浏览器安全漏洞实施攻击行为的最大受害者, 之所以最易受攻击, 一个原因是中国作为一个巨大的热门市场, 吸引了太多恶意软件编写者的目光, 但主要原因在于中国的软件开发者在编写软件时安全意识还不够强, 忽略了对计算机数据的保护的重要性, 因此, 在浏览器设计的时候就存在不少缺陷, 更加忽视了脆弱插件等对安全带来的危害。所以, 从根源上减弱甚至杜绝攻击的意义显得尤为重要。本文围绕着浏览器的编程与开发, 讲述了在开发过程中的一些技术和自己的心得, 着重讲解了所实现的一个浏览器程序, 以及在安全性方面所做的工作。
1 主要功能模块
浏览器界面主要功能模块包括标题栏、菜单栏、工具栏、主显示面板、侧边栏、状态栏[1]。浏览器访问Google如图1:
标题栏是浏览器的名字, 显示的事浏览器的名称和版本号, 以及浏览器当前浏览的页面URL。菜单栏是浏览器大部分操作的集合, 包括了6个子菜单:文件、历史、查看、书签、设置、帮助, 前面5个格子对应了相应的功能模块, 帮助则显示的事版本和作者信息。工具栏是程序中显示位图式按钮行的控制条, 位图式按钮用来执行命令, 方便用户一键完成操作, 是最常用的操作的集合。在本程序中, 工具栏包括浏览前一页、浏览后一页、刷新当前页、浏览主页以及URL输入栏。显示框不仅能够将HTML文本正确显示出来, 而且能够支持超链接等。因此采用组件J E d i t o r P a n e, 它可以编辑各种文本如T X T、H T M L和R T F, 还可以实现超链接侦听器, 并且简单地显示其他所有已激活的超链接。实现了Hyperlink Listener接口来处理超连接事件, 还实现Property Change Listener接口处理属性改变事件, 即当text Pane的属性改变时, 停止状态栏的动画。状态栏是显示程序当前正在处理的事件, 在本程序中, 状态会显示用户点击的链接、在显示页面的过程中的进度 (以动画显示) 、以及打开页面是否成功[2]。当用户需要查看历史记录时, 也可以在侧边栏中查看, 但是在未取得权限时能够查看的是加密后的历史记录, 只有取得账户密码才能查看正确的记录, 这对保护用户资料起到很大作用。
2 安全模块
安全模块工作主要包括加解密模块、账户模块以及一键清除功能加解密模块在整个程序中均有涉及, 在程序初始化的时候, 程序就会检查是否有Accont文件存在, 若有则读取文件得到账户名和密码, 并通过Caeser类的方法处理得到加解密的密钥。当页面访问URL成功时, 程序会将此URL地址存储到history列表中, 并将加密后的URL存储到History.bat文件中, 因此, 当用户查看历史记录时, 在侧边栏显示出来的都是加密后的一串字符, 若用户想要查看正确的历史记录, 则必须提供密码, 若与存储的账户密码一致, 则显示解密后的历史记录, 否则提示错误信息。下图是安全模块中的历史记录的解密过程: (图2)
当用户点击设置的账户子菜单时, 弹出账户管理窗口, 提示用户填写账户信息, 若账户名为空, 则提示失败信息并置确定按钮不可用, 否则进入下一步, 若账户密码为空, 则提示失败信息并置确定按钮不可用, 否则进入下一步, 读取确认密码, 若与上次输入的不同, 则提示失败信息重新输入并置确定按钮不可用, 反之则提示更新账户信息成功, 最后将用户的确认后的输入存储到Accont.bat文件中。用户管理的界面如图3:
2.2用户管理界面
浏览器程序中增加一键清除功能, 当用户需要时, 可以点击按钮将浏览过的历史记录以及Cookies清除, 如果用户忘记清除, 在程序退出运行时, 程序也会自动的清除所有痕迹, 真正达到无痕浏览。
3 功能分析
形象地讲, 浏览器是互联网的入口, 而互联网又是PC机最重要的应用。本次设计旨在对浏览器的安全设计做一个新的尝试, 用新的思路实现在一定程度上保护用户的浏览安全。本次设计主要从以下三个方面实现:
首先, 为每个用户提供自己的账户, 现有的浏览器虽有此项功能, 但更多的是用“云”的概念, 为用户保存个人浏览喜好设置, 而本程序却是为用户提供权限, 使其只可查看在自己查看权限内的资料数据;其次, 利用了账户资料来加密历史记录和其它别的数据如书签等, 使其它用户不能轻易查看自己浏览过的页面;最后, 添加了一键清除浏览痕迹的功能, 当用户需要时, 可以点击按钮将浏览过的历史记录以及Cookies清除, 如果用户忘记清除, 在程序退出运行时, 程序也会自动的清除所有痕迹, 真正达到无痕浏览。
4 结语
本文在一定程度上加强了浏览器的安全性, 保护了用户的隐私和数据, 但正如前面所说, 本文只是个思路上的尝试, 因此在实际实现上并未追求当前最先进的技术如加解密算法、文件存储方法等, 然而在设计思路上却能够达到预期目的, 若是将当前最安全的一系列措施嵌入, 相信能够达到很理想的安全效果。
参考文献
[1]周爱民.JAVASCRIPT语言精髓与编程实践.电子工业出版社, 2008年03月
[2]孙卫琴.精通Struts:基于MVC的Java Web设计与开发[M].北京:电子工业出版社, 2007.3.
软件设计模式浏览器 篇6
网络中很多非法网站或计算机病毒修改用户Internet Explorer(IE)浏览器的主页、标题栏等功能、信息,使计算机的正常运行、操作难以保证。这一问题可以通过注册表编辑器解决。但是,有的恶意网页或者病毒可能把用户操作系统中的注册表编辑器也屏蔽掉,使得修改注册表的权利都没有[1]。本文就是针对这一问题,介绍一个利用Delphi开发能够通过注册表保护、修复IE浏览器程序的方法。
2 设计原理
在Delphi 3.0及以上版本中,提供了一个构件Tregistry。在程序中可以利用它来实现对WINODOWS 9X/NT/XP注册表的操作。IE浏览器中的一些功能和信息与Windows操作系统中注册表是一一对应的。通过Tregistry构件访问注册表的首要工作就是对该构件的核心属性、方法进行解析[2]。
2.1 Tregistry构件解析
TRegistry常用的属性和方法有:Root Key、Create Key、Open Key、Close Key、Delete Key、Read XXXX、Write XXXX(XXXX表示数据类型如String、Integer等)。本文所用到的属性和方法有如下三个:
1)Root Key:注册表的根键名(如HKEY_LOCAL_MACHINE等);
2)Open Key(Key Name:string;Can Create:boolean):使当前键为Key Name,Can Create表示当指定的键不存在时是否创建,True表示创建
3)Set Key(Key Name,Key Value:string):使键Key Name的值为Key Value。
2.2 IE相关的注册表信息
获取IE浏览器关键功能和信息与注册表德对应键值是实现该程序的关键所在,其中:
1)IE主页:在注册表的SoftwareMicrosoftInternet ExplorerMain下的start page键值中存储;
2)IE标题栏:在注册表的SoftwareMicrosoftInternet ExplorerMain下的Window Title键值中存储;
3)注册表编辑器:SoftwareMicrosoftWindowsCurrent VersionPolicies管理注册表是否处于活动状态。如果注册表编辑器处于活动状态,那么其键值为true。如果注册表被锁住,其键值为false[3]。
3 详细设计
通过TRegistry构件、注册表和IE浏览器关联键值的分析,即可进行具体的代码设计。图1为该程序的功能流程图。
在Delphi开发环境中新建一个工程,在窗体上添加如下控件:一个Check List Box、一个Edit和两个Button。Check List Box的Items属性中添加五个选项,分别是:允许编辑注册表、恢复IE主页、恢复IE标题、恢复IE设置按钮和显示Internet设置选项。Edit控件用来编辑要设置的IE主页内容。两个Button控件的Caption属性分别命名为:应用和退出。然后,在“应用”按钮中编写代码。核心代码如下:
代码完成后,运行程序,程序运行如图2所示。
4 总结
本文介绍了用Delphi编写的IE保护器程序的方法,通过它可以对IE进行轻松的管理与维护。在此工作基础上可以进一步完善,如增加托盘功能,或者通过Timer控件对注册表进行实时监控,以及添加程序的自启动功能等。
摘要:分析了Delphi中Tregistry构建与Windows操作系统注册表的关联,归纳了开发网络浏览器进行保护程序的全部过程和方法,提供Delphi中Tregistry构建应用于Windows操作系统网络安全的基本思路。
关键词:网络浏览器,安全防护,Delphi,注册表
参考文献
[1]张福峰,李文广.Delphi下网页广告拦截技术的实现[J].沧州师范专科学校学报,2007,23(1):58-59.
[2]韦志鹏,王勇,李静.Delphi中面向对象程序设计思想[J].电脑知识与技术:学术交流,2007(1):267-271.
软件设计模式浏览器 篇7
文中基于BREW平台设计了一款网络浏览器。通过网络连接后,后台的服务器将打开一个端口进行监听,接收来自前台手机客户端的网络请求,浏览器取来所需页面,解释它所包含的文本和格式化命令并在屏幕上显示该页面,使得手机用户在Internet上的漫游更加容易。
1 网络浏览器设计中的关键技术
1.1 BREW中的事件处理机制
每个高通BREW应用程序的核心就是它的事件循环,它接受用户的事件和系统事件,并且把这些事件调度到应用程序的用户接口,该接口控制和处理应用程序所需要做的一切事情[1]。与许多BREW应用程序类似,本应用程序也是通过主函数ISHELL_HandleEvent来触发应用程序的事件发生,只有当该函数返回TRUE时,应用程序的功能才能得以实现。包括的事件主要有:
EVT_APP_START(应用程序启动):用于启动应用程序,建立网络连接,打开浏览器的导航管理器;
EVT_APP_STOP(应用程序结束):中止小应用程序,关闭网络连接;
EVT_KEYS(设备按件处理):按键事件,由手机按键触发事件。如在本应用中,使用手机的左右键来节音量;
EVT_COMMANDS(用户定义的菜单处理):小程序自定义控件事件,如菜单按键。在本应用中,用来触发定义的软件菜单;
EVT_APP_SUSPEND(应用程序挂起)、EVT_APP_RESUME(应用程序恢复):中断,恢复事件。在手持设备上装载BREW的应用程序通常都会遇到应用程序被中断,特别是手机这种主要用于通讯的工具。
1.2 网络连接
在浏览器设计中,需要将BREW自身所具有的接口与Web服务器之间建立好联系。在BREW中提供了一个综合面向Http的接口IWEB,可以实现对代理服务器的支持[2]。IWeb接口是用来监督代理、持续连接和其它与Web有关行为的重要接口。一般通过网络从服务器上读取信息,都依赖IWeb接口实现。
客户端在手机上运行,要通过网络接受输入并做出响应。除此之外,还要把所输入的数据通过网络发送到服务器端。服务器端接收一个或多个客户端输入的数据,并做出响应,向客户端返回处理之后的数据,如图1所示。该网页浏览器使用Http协议,为了更好的做到与基于Web服务的交互,高通的BREW平台从1.1版本开始就已经提供了一个模块,实现Http客户端的功能。其中包括发送数据(Http Post方法)和接收数据(Http Get方法),以及检查和数据传输业务相关的信息头。
2 网络浏览器应用程序的实现
2.1 网络浏览器的UI设计
开发手机浏览器的最终目标是让终端用户可以通过手机方便的浏览网页,获取网络信息。浏览器本身的用户界面接口就是屏幕,它允许用户选择书签、输入网页地址或者修改设置,而这些都是以超文本形式出现在主IHtmlViewer中。浏览器的用户界面由下列4个对象组成:
(1) IHtmlViewer接口是主要浏览面板[3]。所有要在浏览器中显示的文档都在这里显示出来。浏览器当前显示的是BREW手机的Html显示器能够处理的对象;
(2) 软键菜单带有工具信息,给出了如后退、帮助、书签等按钮通路;
(3) 第二级IHtmlViewer被用来打开对话框,它不属于上述IHtmlViewer;
(4) 状态条图像用来显示搜索过程。
2.2 应用Ajax技术设计控件
Ajax的全称是“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,它是Web应用的一种新方法。它可以动态更新Web页面,其主要功能就是把传统的交互方式由同步交互变为异步交互,使其具有异步请求与局部刷新的特性。
通常一个页面是由多个用户控件、自定义控件和静态控件组成。在浏览器控件的设计中加入Ajax技术,使得用户从请求/等待这个循环中解脱出来,可以在用户单击按钮时,使用JavaScript立即更新UI(BREW中提供的Java虚拟机可以使JavaScrip的加载更加方便),并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新UI,而不是刷新整个页面。在设计用户控件的时候加入Ajax技术,就可以在表现层页面中直接调用,这样对服务器的请求就是异步发送的,浏览器可以继续响应用户输入,同时在后台等待服务器的响应。这样不但可以大大增加系统的内聚性,也可增加其重用性。这样对于其他系统开发人员来说,就可以方便的使用设计好的控件,对于使用者来说可以有更好的使用体验。
2.3 Html文档的读取和存储
Html浏览器本身不能以任何方式访问网络。如果用户跟从链接或提交表单,会产生发往主机应用程序的通知。使用AEECLSID_HTML ClassID创建Html浏览器。它在一定程度上增加了开发者开发应用程序接口的灵活度,并且简化了应用程序的开发。
2.3.1 加载文档
IHtmlViewer接口允许应用程序控制IHtml浏览器对象,浏览器是通过主机应用程序调用的对象。它可以处理Html文档,并允许用户对文档执行操作:滚动、创建链接以及在表单字段中输入数据。下面介绍在本应用程序开发中如何使用IHtmlViewer接口所包含的函数。
这个项目的最终目的是要将Html文档显示到浏览器中去。要打开Html文档,首先要将IHtmlViewer接口实例化。创建方法如下面代码所示:
if(SUCCESS==nErr)
{nErr=ISHELL_CreateInstance(piShell,AEECLSID_HTML,(void**)&piHtml)}
要若将Html加载至文档,首先应找到该文档所在位置,然后再判断文档内容有没有错误并且是否为Html格式。如果没有错误并且是Html格式,就将ISource的内容载入文档,并把数据按照Html格式解析,删除所有先前的内容。同时在后台继续进行异步加载,加载完资源后,将显示文档内容。调用程序时通过调用IHtmlViewer_IsBusy()检查浏览器是否正忙于加载,并且可以通过设置回调和监视HVN_DONE加载信息获得加载完成的通知。
2.3.2 分配空间
文档载入的同时,也要考虑到为该文档分配空间。这时就要通过函数IHtmlViewer_SetData()为浏览器提供Html缓冲。所有缓冲区同步解析浏览器,并删除先前所有内容。注意,返回时保持缓冲区中无指针。
读取Html文档的示例代码如下:
me->piHtml=piHtml;
IHtmlViewer_AddRef(piHtml);
/*此处注意,在文档内容超出分配给控件的矩形时,要想让浏览器自动显示滚动条,则需要在属性中设置HVP_SCROLLBAR,如果文档内容未超出矩形,则不显示滚动条,但会一直保留显示滚动条的空间。*/
IHtmlViewer_SetProperties(piHtml,
(IHtmlViewer_GetProperties(piHtml)|HVP_SCROLLBAR|HVP_LOADALLIMAGE|HVP_INVALIDATION));
//回调事件的拥有者
IHtmlViewer_SetNotifyFn(piHtml,Brewser_HViewNotify,me);
/*然后再通过IWeb接口将文档信息传到IHtmlViewer接口*/
IHtmlViewer_SetIWeb(piHtml,piWeb);
2.3.3 如何添加背景图片
BREW1.1支持的Html主要功能包括:超文本链接、简单的Html表单、文本输入提交按钮、复选框和单选按钮、对齐方式、字体和文本颜色等。但BREW1.1还有个缺点,就是不支持背景色和背景图片,这使得浏览网页变得单调。为了解决这个问题,用到了IHtmlViewer这个控件中的两个技术[4]:
(1) 接口函数替换技术;
(2) 直接修改显示缓冲区技术。
接口函数替换类似于一种钩子方法(Hook),通过这种方法用一个自定义函数(IDISPLAYER_MyUpdateEx)替换IDisplay接口的IDISPLAY_UpdateEx函数。所有显示输出操作最后都需要调用IDISPLAY_UpdateEx函数刷新屏幕,IHtmlViewer也不例外。使用这个函数替换后,IHtmlViewer在刷新屏幕的时候就会首先调用IDISPLAYER_MyUpdateEx,在这个函数中修改显示缓冲区,添加背景图片,然后再调用真正的IDISPLAY_UpdateEx函数刷新屏幕,这样,IHtmlViewer控件就有背景图片了。
3 结束语
随着3G网络时代的到来,手机中的网络应用将发挥越来越重要的作用。文中主要介绍了基于BREW平台设计的一款网络浏览器,在此应用程序的设计和开发中,涉及了大量的技术知识,文中重点介绍了关键技术:事件处理机制、网络连接、Ajax技术设计控件和Html文档的加载和显示等。
摘要:介绍了一款基于BREW平台设计的网络浏览器。在连接网络后,此浏览器可以显示Html格式的Web页面,便于手机用户浏览网页。重点论述了在浏览器设计中的几个关键技术,即事件处理机制、应用Ajax技术设计控件、Html文档背景的加载等。
关键词:BREW平台,网络浏览器,Ajax技术,Html文档
参考文献
[1]卜佳俊,张海翔,陈天洲.深入BREW手机开发[M].北京:清华大学出版社,2004.
[2]孙睿.BREW及其应用开发[J].计算机应用研究,2004(1):34-37.
[3]许江伟,陈平.BREW平台上的手机软件开发[J].计算机应用研究,2003,23(10):24-28.
软件设计模式浏览器 篇8
OLE控件(Object Link and Embed对象链接与嵌入),是在Windows环境下应用程序之间交换数据的一种技术。ActiveX控件是OLE技术的扩展和增强[1]。Visual FoxPro(简称VFP)为开发数据库应用系统提供了一套完整的工具,但对于一些复杂的功能VFP还需借助外部库来实现,ActiveX控件就是VFP访问的外部库的最常见的一种类型。ActiveX控件是封装了属性、事件和方法的对象,当一个ActiveX控件添加到VFP以后,就可以象使用VFP其它基类一样使用。本文介绍Gd Viewer Pro ActiveX控件在VFP设计图像浏览器中的具体应用。
2 GdViewer Pro ActiveX控件及其部分属性和方法程序
GdViewer Pro ActiveX控件是一种PDF浏览、图形处理组件,支持许多图像格式,如:gif,jpeg,jbig,png,bmp,tiff等等;可在任何支持ActiveX控件的32位和64位Windows开发环境中使用,如Visual C++,Visual Basic,Visual Foxpro,Delphi,PowerBuilder等;它能实现图形的查看、缩放、打印和旋转、显示多页TIFF文件和PDF文件、播放动态GIF图像、从URL加载图像等功能。
本文中所选用的GdViewer Pro ActiveX控件的属性和方法程序有:
DisplayFromFile:打开并显示图形文件
Rotate90:图像顺时针旋转90°
Rotate270:图像顺时针旋转270°
Zoom:确定图像显示的比例
3 在表单中添加GdViewer Pro ActiveX控件
GdViewer Pro ActiveX控件在电脑中安装好后,就可在VFP中使用。首先将其添加到“表单控件工具栏”中,添加的方法如下:在VFP环境下,执行“工具”菜单下的“选项”命令,在打开的对话框中,打开“控件”选项卡,单击“ActiveX控件”单选按钮,然后在出现的“选定”列表框中,选中“GdViewer Pro4.GdViewer”,并在前面的复选框里打钩,单击“设置为默认值”按钮,这样就可将GdViewer Pro ActiveX控件添加到“表单控件工具栏”中[2]。
在表单中添加GdViewer Pro ActiveX控件的方法是:单击“表单控件工具栏”中“查看类”按钮,在打开的快捷菜单中选中“ActiveX控件”,执行完后就可以在“表单控件工具栏”中看到GdViewer Pro控件,单击该控件,在表单中适当位置按下鼠标左键并拖动,待达到所需大小释放鼠标,即可将GdViewer Pro控件添加到表单中。
添加到表单中的GdViewer Pro控件就是一个封装了属性、事件和方法程序的对象,其属性的设置和事件代码的编写与VFP中其它常用控件一样。
4 图像浏览器设计
4.1 图像浏览器界面设计
创建一个表单Form1,如图1所示,包括一个GdViewer Pro控件Olecontrol1、一个列表框List1(用于显示“图形图像文件列表”),三个按钮(一个为列表框图形文件添加按钮AddCommand、一个是列表框图形文件删除按钮DelCommand、另一个是选中文件图像显示按钮DispCommand),一个标签Label1(用于显示“图形图像列表”说明信息)和一个按钮组Commandgroup1(包括七个按钮,其中前六个按钮分别用来控制图像文件的上移、下移,图像的放大、缩小、右旋、左旋,和一个退出按钮)。
4.2 图像浏览器各控件属性设置
图像浏览器各控件的属性设置见表1。
创建表单之前,先建表PictureTable.dbf。PictureTable的结构见表2。
4.3 图像浏览器控件事件代码设计
1)Form1的Init事件代码:
2)Form1的Unload事件代码:
3)AddCommand的Click事件代码[3]:
4)DelCommand的Click事件代码:
5)DispCommand的Click事件代码:
6)CommandGroup1的Click事件代码:
5 结束语
将ActiveX控件应用于VFP数据库应用系统的开发,可以大大减少事件代码的编写工作,缩短开发周期,获得良好的用户界面。如今,ActiveX控件资源极为丰富,种类繁多,若能熟练掌握各种ActiveX控件技术,就可以开发出各种各样、功能强大的数据库应用系统,提高应用程序的灵活性和适用范围。
参考文献
[1]刘玉龙.ActiveX控件在VFP多媒体程序设计中的应用[J].徐州师范大学学报:自然科学,2000,18(3):30-32.
[2]史济民.Visual FoxPro及其应用系统开发[M].北京:清华大学出版社,2008.