shuyang-基于Flex的在线画册编辑系统-毕业论文.doc_第1页
shuyang-基于Flex的在线画册编辑系统-毕业论文.doc_第2页
shuyang-基于Flex的在线画册编辑系统-毕业论文.doc_第3页
shuyang-基于Flex的在线画册编辑系统-毕业论文.doc_第4页
shuyang-基于Flex的在线画册编辑系统-毕业论文.doc_第5页
免费预览已结束,剩余41页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

毕 业 设 计基于Flex的在线画册编辑系统摘 要Flash/Flex是目前RIA应用的主力军,对于开发交互性复杂的Web程序相当的便利,比传统的HTML开发方式能实现的接口更加健壮,反应更加灵敏,具有更另人感兴趣的可视化特性,本系统使用Flex开发,展现了Flex在多媒体处理方面的优秀之处,图形数据在客户端直接生成,大大节省了服务器资源。Flex程序通过Web服务与后台进行交互,用SQL Server作为数据库。提供了供用户自主上传图片,实时对图片进行处理,使用户简单的就可以自己手动自作属于自己的个人画册。另外还提供了数据库接口,可以方便的集成到其它网站或者软件产品中。关键词:富媒体 Flex 在线应用 43目 录1 前言11.1 研究目的和意义11.2 课题研究的背景12 相关理论知识22.1 Flex介绍22.2 Web服务介绍42.3 .Net Framework介绍62.4 SQL Server介绍122.6 A MVC框架介绍133 概要设计153.1 系统模块图153.2 前后台数据交互模块153.2.1 编辑器与后台数据交互用例图163.3 图片处理模块163.4 图片上传模块173.5 在线编辑器模块184 详细设计194.1 图片处理194.2 加载用户已上传的缩略图234.3 编辑数据的保存254.4 图片编辑功能274.4.1 图片自适应算法274.5 数据库设计295 用户手册以及测试结果305.1 系统运行准备305.2 使用编辑器建立画册315.3 编辑预览385.4 正式发布396 总结406.1 系统存在的问题406.2 开发过程出现的问题406.3 心得体会40参考文献42致谢44仲恺农业技术学院毕业论文(设计)成绩评定表451 前言1.1 研究目的和意义随着互联网的产生,Web已经走上的历史的舞台,浏览器/服务器体系的应用程序(即B/S结构)成为企业和软件研发人员争先追捧的技术新贵。在这种体系结构下,客户端不再需要进行特别的软件部署,只要安装浏览器,管理员就可以在服务器端通过互联网将文档和资讯发布给全世界的用户。正所谓“有得必有失”,快捷而广泛部署的代价就是客户端的功能受限,随着软件应用环境日益的复杂化,这个缺陷也变得越来越严重。如今的Web应用技术不再能够胜任更为高级的应用环境,尤其是某些领域的应用系统(如快速实时交互、复杂数据处理、用户体验深刻的系统)。当前框架的运行机制是这样的:服务器端需要客户端发送进一步的请求才能进行下一步的处理,客户端需要服务器端作出跟进的响应后才能进行下一步的操作。而复杂的应用系统往往需要客户端频泛地提交、存取网页来与服务器端协同工作,以完成一项事务的处理,这就导致Web应用程序的运行速度非常缓慢,从而使用户难以接受。所以,构建一个交互性强,可处理复杂数据,用户体验好的互联网应用程序非常有必要。1.2 课题研究的背景现有的的Web程序具有一下不足:操作复杂性:由于受传统Web应用程序的局限性,当进行一个多步骤或多选项的事务时,用户要么会看到一份很长的笨拙的页面,要么就会遇到反复翻转若干网页或者令人沮丧地执行操作步骤的情况。数据复杂性:为了高效率地表达复杂的数据,是现有Web应用程序所面临的巨大挑战。理想的图形工具应该能够既操作简便,又能生动明了地展示各种错综复杂的数据信息。交互复杂性:互动性需求的应用程序使得交互的问题变得日益突出,用户的耐心变得越来越少,他们的要求是要向桌面应用程序的速度靠齐。一味地提升服务器和网络的速度既不现实又不经济,一种可行的技术方案就是采用高度互动性和局部智能型的客户端应用程序,这样就可以在无需刷新全页或增加带宽需求的情况之下,迅速响应用户的输入并作出相应的处理。传统Web应用程序之所以不能够表达高度的复杂性,其主要原因是HTML(Hyper Text Markup Language,超文本标记语言)网页技术的先天不足,当应用进行到一定深度时,这种缺陷便逐渐显露出来1。一直以来,非智能的客户端提交请求并得到服务器的响应,这种以网页为载体的网络逐步形成了如今的互联网。在这种模式下,作为默认用户界面的网页,它的上下文自然地同时又是人为地进行流程分割,以便映射将业务处理分解为步骤的机制。尽管网页已经逐渐地加入越来越多的动态特点以进行改良,然而,在展示能力及与用户互动方面仍然后劲乏力。为了解决这些不足。丰富互联网程序RIA(Rich Internet Application,富互联网应用)2就出现了。RIA程序具有如下特点:1. 适用跨平台的互联网操作环境(包括硬件平台和软件系统)2. 网络连接的带宽问题对应用没有障碍(涉及有线和无线网络环境)3. 引人入胜的、高度互动的用户界面4. 对多媒体的无缝支持5. 客户端拥有进行数据处理的能力6. 容许用户以在线和离线两种方式进行工作7. 完美实现N层结构的设计理念,将数据层与操作层完全分离8. 容许现有的Web应用系统以循序渐进的方式进行革新以充分利用现有网络环境2 相关理论知识2.1 Flex介绍Adobe Flex 是为满足希望开发 RIA的企业级程序员的需求而推出的表示服务器和应用程序框架。RIA 将桌面软件的响应速度和丰富功能与 Web 应用程序的广度结合在一起,以提供效果更好的最终用户体验。Flex 表示服务器提供基于标准的、声明性的编程方法和流程,并提供运行时服务,用于开发和部署丰富客户端应用程序的表示层3。Flex 开发者使用直观的基于XML(Extensible Markup Language,可扩展标记语言)的语言来定义丰富的用户界面;该语言由 Flex 服务器翻译成智能的客户端应用程序,在普遍存在的 Flash 运行时环境中运行。Flex应用程序与传统的HTML应用程序的主要区别在于 Flex 应用程序处理最适合在客户端运行,如字段校验、数据格式、分类、过滤、工具提示、合成视频、行为及效果等4。Flex 可使开发人员更好地交付应用程序,这种应用程序使用户可以迅速反应、在不同状态与显示间流畅过渡,并提供毫无中断的连续的工作流。Flex开发模型与JSP、ASP/ASP.NET 或其他类似的脚本语言的基本的模型是一样的5:建立一个包含应用程序源代码的文本文件,然后将此文件部署到服务器上;服务器在收到第一个请求时,将此源码编译成为应用程序,后续的请求将通过缓存处理。与发送一系列的包含数据与UI(User Interface,用户界面)的HTML页面不同,Flex presentation server 发送包含可在普遍的 Flash Player 虚拟机上运行的丰富客户端用户界面。需要时,Flex 应用程序将与服务器交换,数据以响应客户端上终端用户的操作。除了在现有的表示层上进行添加外,Flex 并不需要对当前的业务层与整合层进行任何改变。Flex presentation server 在应用服务器内运行,并为 Flex 应用程序提供整合与管理能力。Flex 整合的能力可以轻松地通过 Web 服务、Java 对象访问或 XML 使用现有的代码及信息。Flex 还可以与一些现有的表示技术与框架结构如 JSP 及 Struts 等进行集成。Flex 应用程序框架由 MXML(Flex的标记语言)、ActionScript及 Flex 类库构成。开发人员利用 MXML 及 ActionScript 编写 Flex 应用程序。利用 MXML 定义应用程序用户界面元素,利用 ActionScript 定义客户逻辑与程序控制。Flex 类库中包括 Flex 组件、管理器及行为等。利用基于 Flex 组件的开发模型,开发人员可在程序中加入预建的组件、创建新组件或是将预建的组件加入复合组件中。随着无数种类的应用程序可以通过 Flex 创建的 Rich Internet Application 前端加以增强,产品的设计也开始以改善具有特定功能的应用程序为目标了。Flex 最适用的应用程序包括解决多步处理的应用程序或需要客户端验证、直接控制或是可视数据的应用程序。MXML:Flex标记语言MXML 和 HTML 一样是标记语言,它描述了反映内容与功能的用户界面。与 HTML 不同的是,MXML 可对表示层逻辑与用户界面和服务器端数据绑定提供声明抽象。MXML 可将表示与业务逻辑的问题彻底分开,以实现最大程度地提高开发人员的生产率及应用程序的重复使用率。 MXML 的开发基础是在迭代过程上,这与其他类型的 Web 应用程序文件如 HTML、JSP、ASP 及 ColdFusion 标记语言 (CFML) 是相同的。开发 MXML 应用程序就象打开一个文件编辑器一样简单,只要输入一些标签、保存文件,再用Flex编译器编译成Flash的swf文件,然后在 Web 浏览器上打开编译好后的swf文件 URL 即可。MXML 文件同时也是普通的 XML 文件,所以可以选择多种开发环境。可以在简单文件编辑器、专用 XML 编辑器或是支持文件编辑的集成开发环境 (IDE) 中进行开发。由于 MXML 符合 W3C XML 方案的定义,您也可以使用结构化编辑,如代码着色和代码提示(取决于编辑器的功能)。MXML和HTML间最大区别:前者定义的应用是编译的SWF文件,执行于Flash Player客户端中。后者是基于页面技术的应用。因此前者能提供更丰富的、动态的用户界面。MXML不支持Flash的某些特性,例如:时间轴。但是可以利用Flash设计组件并应用在Flex中。MXML应用可以是一个MXML文件,也可以是多个MXML组成,MXML支持MXML文件形式的自定义组件、ActionScript文件形式的自定义组件以及在Flash中建立的自定义组件。2.2 Web服务介绍Web 服务是一种可以用来解决跨网络应用集成问题的开发模式,这种模式为实现“软件作为服务”提供了技术保障6。而“软件作为服务”实质上是一种提供软件服务的机制,这种机制可以在网络上暴露可编程接口,并通过这些接口来共享站点开放出来的功能。从技术角度来讲,Web 服务实现了最广泛的应用软件集成,弥补了传统软件开发模型的限制。Web 服务产生之前,在网络上提供对象服务通常要采用DCOM(Distributed COM)或CORBA。这两种技术各有特点,也各自有相当广泛的应用。前者运行在Windows操作系统上,后者主要运行在UNIX系统上,都有着相当悠久的历史。从概念层次上讲,二者具有相近的结构,都可以让客户软件实例化分布在网络上远端的对象,并最终访问对象服务。但是,在具体实现机制上,这两种方案有许多不同。比如在通信协议方面,DCOM采用的是RPC协议而CORBA采用的是IIOP协议。另外,对于客户端程序而言,访问提供服务对象的方法也是大相径庭,前者通过客户端代理(proxy),经过RPC通道后访问服务端的存根(stub)后才可以最终访问到对象;而后者必须先通过客户端的存根,然后经过IIOP访问服务端的骨架(skeleton)才能最终访问到对象。两种模式分别如图9-1和9-2所示。图1 DCOM方案正是因为两种分布式对象方案各自为政,所以它们只能被用来开发紧耦合类型的Web分布式应用系统。所谓紧耦合,就是指客户端必须按照特定的规范去访问服务端提供的服务,而这种规范只在一个有限的范围内通用。图2 CORBA方案为了可以在整个因特网中实现对服务的自由访问,有必要提供一种崭新的模式或信息交换手段来达到这个目的。于是,微软提出了Web 服务。Web 服务的主要特点之一是,客户端访问Web 服务只需要通过因特网标准协议,如HTTP或XML,以及SOAP,不需要专门的协议,如RPC或IIOP。因为HTTP协议和XML都是与平台无关的标准协议,因此,可以被任何主流操作系统正确理解和解释。另外,更为关键的特性是,Web 服务可以被XML语言进行详尽的描述。这就是说,提供Web服务的站点可以提供一个(或多个)该站点可以对外提供服务的描述文件,这个文件的内容可以被访问者理解。更进一步说,就是客户端可以从网络上直接得到代码!也许举个例子能更清楚地说明问题。假设开发人员需要搭建一个商务网站,这个网站需要一个验证客户合法身份的功能。为了实现这个功能,下面分别描述了可以采用的办法。 由开发人员自己编写安全验证所需的全部代码。这样做显然不现实,一个安全验证程序涉及到诸多专业知识,并需要相当长的时间才能够完成。 购买这段程序(通常是一个ActiveX组件)。在收到组件之后,首先将组件注册在自己的机器上,然后根据组件类型库产生接口文件。在实际编程中就可以使用这个接口文件来访问组件服务。很明显,这种方式在目前使用得最为广泛。 有了Web 服务,情况就不同了,只需要在自己的程序中通过访问某个服务的URL地址,得到一份XML描述,并使用这个描述文件产生一个接口文件。然后,在实际编程中,只需要通过这个接口文件来访问服务就可以了。一定要注意,这个服务可不是运行在我们机器上的,是运行在因特网上URL地址所指向的地方。如果这个网站需要更多的功能,而这些功能在一些网站上已经被开发出来,并以各种方式(免费或收费)公开出来供所有需要它们的开发人员来使用,那么,尽量使用它们好了。当然,如果开发人员所在的公司,也想成为Web 服务提供者的话,同样可以轻松地将他们编写的Web 服务在网络上公布出来,供大家使用。与紧耦合服务概念相对,由于Web 服务具备通信协议标准性和服务自描述性7,所以,使用Web 服务可以开发出松耦合的分布式应用程序来。这也是Web 服务要实现的最根本的设计目标。Web 服务的体系如图9-3所示。图3 Web Service体系2.3 .Net Framework介绍.NET Framework 是支持生成和运行下一代应用程序和 XML Web Services 的内部 Windows 组件。.NET Framework 旨在实现下列目标: 提供一个一致的面向对象的编程环境,而无论对象代码是在本地存储和执行,还是在本地执行但在 Internet 上分布,或者是在远程执行的。 提供一个将软件部署和版本控制冲突最小化的代码执行环境。 提供一个可提高代码(包括由未知的或不完全受信任的第三方创建的代码)执行安全性的代码执行环境。 提供一个可消除脚本环境或解释环境的性能问题的代码执行环境。 使开发人员的经验在面对类型大不相同的应用程序(如基于 Windows 的应用程序和基于 Web 的应用程序)时保持一致。 按照工业标准生成所有通信,以确保基于 .NET Framework 的代码可与任何其他代码集成。.NET Framework 具有两个主要组件:公共语言运行库和 .NET Framework 类库。公共语言运行库是 .NET Framework 的基础。您可以将运行库看作一个在执行时管理代码的代理,它提供内存管理、线程管理和远程处理等核心服务,并且还强制实施严格的类型安全以及可提高安全性和可靠性的其他形式的代码准确性。事实上,代码管理的概念是运行库的基本原则。以运行库为目标的代码称为托管代码,而不以运行库为目标的代码称为非托管代码。.NET Framework 的另一个主要组件是类库,它是一个综合性的面向对象的可重用类型集合,您可以使用它开发多种应用程序,这些应用程序包括传统的命令行或图形用户界面 (GUI) 应用程序,也包括基于 ASP.NET 所提供的最新创新的应用程序(如 Web 窗体和 XML Web Services)。.NET Framework 可由非托管组件承载,这些组件将公共语言运行库加载到它们的进程中并启动托管代码的执行,从而创建一个可以同时利用托管和非托管功能的软件环境8。.NET Framework 不但提供若干个运行库宿主,而且还支持第三方运行库宿主的开发。例如,ASP.NET 承载运行库以为托管代码提供可伸缩的服务器端环境。ASP.NET 直接使用运行库以启用 ASP.NET 应用程序和 XML Web Services(本主题稍后将对这两者进行讨论)。Internet Explorer 是承载运行库(以 MIME 类型扩展的形式)的非托管应用程序的一个示例。使用 Internet Explorer 承载运行库使您能够在 HTML 文档中嵌入托管组件或 Windows 窗体控件。以这种方式承载运行库使得托管移动代码(类似于 Microsoft ActiveX 控件)成为可能,不过它需要进行重大改进(如不完全受信任的执行和独立的文件存储),而这种改进只有托管代码才能提供。下面的插图显示公共语言运行库和类库与应用程序之间以及与整个系统之间的关系。该插图还显示托管代码如何在更大的结构内运行。.NET Framework 环境图4 .NET Framework环境下面的章节将更加详细地描述 .NET Framework 的主要组件和功能。公共语言运行库的功能公共语言运行库管理内存、线程执行、代码执行、代码安全验证、编译以及其他系统服务9。这些功能是在公共语言运行库上运行的托管代码所固有的。至于安全性,取决于包括托管组件的来源(如 Internet、企业网络或本地计算机)在内的一些因素,托管组件被赋予不同程度的信任。这意味着即使用在同一活动应用程序中,托管组件既可能能够执行文件访问操作、注册表访问操作或其他须小心使用的功能,也可能不能够执行这些功能。运行库强制实施代码访问安全。例如,用户可以相信嵌入在网页中的可执行文件能够在屏幕上播放动画或唱歌,但不能访问他们的个人数据、文件系统或网络。这样,运行库的安全性功能就使通过 Internet 部署的合法软件能够具有特别丰富的功能。运行库还通过实现称为通用类型系统 (CTS) 的严格类型验证和代码验证基础结构来加强代码可靠性。CTS 确保所有托管代码都是可以自我描述的。各种 Microsoft 和第三方语言编译器生成符合 CTS 的托管代码。这意味着托管代码可在严格实施类型保真和类型安全的同时使用其他托管类型和实例。此外,运行库的托管环境还消除了许多常见的软件问题。例如,运行库自动处理对象布局并管理对对象的引用,在不再使用它们时将它们释放。这种自动内存管理解决了两个最常见的应用程序错误:内存泄漏和无效内存引用。运行库还提高了开发人员的工作效率。例如,程序员可以用他们选择的开发语言编写应用程序,却仍能充分利用其他开发人员用其他语言编写的运行库、类库和组件。任何选择以运行库为目标的编译器供应商都可以这样做。以 .NET Framework 为目标的语言编译器使得用该语言编写的现有代码可以使用 .NET Framework 的功能,这大大减轻了现有应用程序的迁移过程的工作负担。尽管运行库是为未来的软件设计的,但是它也支持现在和以前的软件。托管和非托管代码之间的互操作性使开发人员能够继续使用所需的 COM 组件和 DLL。运行库旨在增强性能。尽管公共语言运行库提供许多标准运行库服务,但是它从不解释托管代码。一种称为实时 (JIT) 编译的功能使所有托管代码能够以它在其上执行的系统的本机语言运行。同时,内存管理器排除了出现零碎内存的可能性,并增大了内存引用区域以进一步提高性能。最后,运行库可由高性能的服务器端应用程序(如 Microsoft SQL Server 和 Internet 信息服务 (IIS))承载。此基础结构使您在享受支持运行库宿主的行业最佳企业服务器的优越性能的同时,能够使用托管代码编写业务逻辑。.NET Framework 类库.NET Framework 类库是一个与公共语言运行库紧密集成的可重用的类型集合。该类库是面向对象的,并提供您自己的托管代码可从中导出功能的类型。这不但使 .NET Framework 类型易于使用,而且还减少了学习 .NET Framework 的新功能所需要的时间。此外,第三方组件可与 .NET Framework 中的类无缝集成。例如,.NET Framework 集合类实现一组可用于开发您自己的集合类的接口。您的集合类将与 .NET Framework 中的类无缝地混合。正如您对面向对象的类库所希望的那样,.NET Framework 类型使您能够完成一系列常见编程任务(包括诸如字符串管理、数据收集、数据库连接以及文件访问等任务)。除这些常见任务之外,类库还包括支持多种专用开发方案的类型。例如,可使用 .NET Framework 开发下列类型的应用程序和服务: 控制台应用程序。 Windows GUI 应用程序(Windows 窗体)。 ASP.NET 应用程序。 XML Web Services。 Windows 服务。例如,Windows 窗体类是一组综合性的可重用的类型,它们大大简化了 Windows GUI 的开发。如果要编写 ASP.NET Web 窗体应用程序,可使用 Web 窗体类。客户端应用程序开发客户端应用程序在基于 Windows 的编程中最接近于传统风格的应用程序。这些是在桌面上显示窗口或窗体从而使用户能够执行任务的应用程序类型。客户端应用程序包括诸如字处理程序和电子表格等应用程序,还包括自定义的业务应用程序(如数据输入工具、报告工具等等)。客户端应用程序通常使用窗口、菜单、按钮和其他 GUI 元素,并且它们可能访问本地资源(如文件系统)和外围设备(如打印机)。另一种客户端应用程序是作为网页通过 Internet 部署的传统 ActiveX 控件(现在被托管 Windows 窗体控件所替代)。此应用程序非常类似于其他客户端应用程序:它在本机执行,可以访问本地资源,并包含图形元素。过去,开发人员结合使用 C/C+ 与 Microsoft 基础类 (MFC) 或应用程序快速开发 (RAD) 环境(如 Microsoft Visual Basic)来创建此类应用程序。.NET Framework 将这些现有产品的特点合并到了单个且一致的开发环境中,该环境大大简化了客户端应用程序的开发。包含在 .NET Framework 中的 Windows 窗体类旨在用于 GUI 开发。您可以轻松创建具有适应多变的商业需求所需的灵活性的命令窗口、按钮、菜单、工具栏和其他屏幕元素。例如,.NET Framework 提供简单的属性以调整与窗体相关联的可视属性。某些情况下,基础操作系统不支持直接更改这些属性,而在这些情况下,.NET Framework 将自动重新创建窗体。这是 .NET Framework 集成开发人员接口从而使编码更简单更一致的许多方法之一。和 ActiveX 控件不同,Windows 窗体控件具有对用户计算机的不完全受信任的访问权限。这意味着二进制代码或在本机执行的代码可访问用户系统上的某些资源,例如 GUI 元素和访问受限制的文件,但这些代码不能访问或危害其他资源。由于具有代码访问安全性,许多曾经需要安装在用户系统上的应用程序现在可以通过 Web 部署。您的应用程序可以在像网页那样部署时实现本地应用程序的功能。服务器应用程序开发在托管领域中,服务器端应用程序是通过运行库宿主实现的。非托管应用程序承载公共语言运行库,后者使您的自定义托管代码可以控制服务器的行为。此模型在获得主服务器的性能和可伸缩性的同时提供给您公共语言运行库和类库的所有功能。下面的插图显示在不同服务器环境中运行托管代码的基本网络架构。在应用程序逻辑通过托管代码执行时,服务器(如 IIS 和 SQL Server)可执行标准操作。服务器端托管代码图5 服务器托管代码ASP.NET 是使开发人员能够使用 .NET Framework 开发基于 Web 的应用程序的宿主环境。但是,ASP.NET 不止是一个运行库宿主;它是使用托管代码开发网站和通过 Internet 分布的对象的完整结构。Web 窗体和 XML Web Services 都将 IIS 和 ASP.NET 用作应用程序的发布机制,并且两者在 .NET Framework 中都具有支持类集合。XML Web Services 作为基于 Web 的技术的重要发展,是类似于常见网站的分布式服务器端应用程序组件。但是,与基于 Web 的应用程序不同,XML Web Services 组件不具有 UI 并且不以浏览器(如 Internet Explorer 和 Netscape Navigator)为目标。XML Web Services 由旨在供其他应用程序使用的可重用的软件组件组成,所谓的其他应用程序包括:传统的客户端应用程序,基于 Web 的应用程序,甚至是其他 XML Web Services。因此,XML Web Services 技术正迅速地将应用程序开发和部署推向高度分布式 Internet 环境。如果您使用过 ASP 技术的早期版本,很快就会注意到 ASP.NET 和 Web 窗体提供的改进。例如,您可以用支持 .NET Framework 的任何语言开发 Web 窗体页。此外,您的代码不再需要与 HTTP 文本共享同一个文件(尽管如果您愿意,代码还可以继续这样做)。Web 窗体页用本机语言执行,这是因为与所有其他托管应用程序一样,它们充分利用运行库。与此相对照,非托管 ASP 页始终被写成脚本并解释。ASP.NET 页比非托管 ASP 页更快、更实用并且更易于开发,这是因为它们像所有托管应用程序一样与运行库进行交互。.NET Framework 还提供类和工具的集合来帮助开发和使用 XML Web Services 应用程序。XML Web Services 是基于 SOAP(一种远程过程调用协议)、XML(一种可扩展的数据格式)和 WSDL(Web 服务描述语言)这些标准生成的。基于这些标准生成 .NET Framework 的目的是为了提高与非 Microsoft 解决方案的互操作性。例如,.NET Framework SDK 所包含的 Web 服务描述语言工具可以查询在 Web 上发布的 XML Web Services,分析它的 WSDL 描述,并产生 C# 或 Visual Basic 源代码,您的应用程序可以使用这些代码而成为 XML Web Services 的客户端。这些源代码可以创建从类库中的类派生的类,这些类使用 SOAP 和 XML 分析处理所有基础通信。虽然您可以使用类库来直接使用 XML Web Services,Web 服务描述语言工具和包含在 SDK 中的其他工具可以使您更加方便地用 .NET Framework 进行开发。如果您开发和发布自己的 XML Web Services,.NET Framework 为您提供了一组符合所有基础通信标准(如 SOAP、WSDL 和 XML)的类。使用这些类使您能够将注意力集中在服务的逻辑上,而无需关注分布式软件开发所需要的通信基础结构。最后,与托管环境中的 Web 窗体页相似,您的 XML Web Services 将使用 IIS 的可伸缩通信以本机语言的速度运行。2.4 SQL Server介绍SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能 (BI) 工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。SQL Server 2005 数据引擎是本企业数据管理解决方案的核心。此外 SQL Server 2005 结合了分析、报表、集成和通知功能。这使您的企业可以构建和部署经济有效的 BI 解决方案,帮助您的团队通过记分卡、Dashboard、Web services 和移动设备将数据应用推向业务的各个领域。与 Microsoft Visual Studio、Microsoft Office System 以及新的开发工具包(包括 Business Intelligence Development Studio)的紧密集成使 SQL Server 2005 与众不同。无论您是开发人员、数据库管理员、信息工作者还是决策者,SQL Server 2005 都可以为您提供创新的解决方案,帮助您从数据中更多地获益。Microsoft 仔细倾听了您的反馈,并对行业进行了认真研究,全世界的 Microsoft 研究团队共同努力,经过创造性思索才最终向您奉献出这一引入了上百种新增功能或改进功能的 SQL Server 2005。这些功能将有助于您在以下三个主要方面提高业务:1企业数据管理SQL Server 2005 针对行业和分析应用程序提供了一种更安全可靠和更高效的数据平台。SQL Server 的最新版本不仅是迄今为止 SQL Server 的最大发行版本,而且是最为可靠安全的版本。 2开发人员生产效率 SQL Server 2005 提供了一种端对端的开发环境,其中涵盖了多种新技术,可帮助开发人员大幅度提高生产效率。 3商业智能SQL Server 2005 的综合分析、集成和数据迁移功能使各个企业无论采用何种基础平台都可以扩展其现有应用程序的价值。构建于 SQL Server 2005 的 BI 解决方案使所有员工可以及时获得关键信息,从而在更短的时间内制定更好的决策。2.5 A MVC框架介绍模型-视图-控制器(Model-View-Controller, MVC)架构模式将应用程序分为了三个主要的组件10:模型,视图和控制器。ASP.NET MVC框架为ASP.NET Web表单模式提供了另一种开发模式基于MVC的Web应用程序。ASP.NET MVC框架是一个轻量的、高度可测试的表现层框架(与基于表单的Web应用程序相同),它继承在了现有的ASP.NET功能之中,例如模板页和基于Membership的验证。MVC是一个许多开发者都熟悉的、标准的设计模式。一些类型的Web应用程序将从MVC框架中受益。其他一些应用程序将会继续使用基于Web表单和Postback的传统ASP.NET应用程序模式。还有一些Web应用程序将会将这两种方法结合;这两种方式互不排斥。MVC框架包含下面的组件:图6 MVC架构模型:模型对象是应用程序中实现了数据领域(data domain)逻辑的部分。通常,模型对象从数据库中获取模型状态,并且将模型状态保存至数据库。举个例子,一个Product对象可能从数据库中获取信息,对它进行操作,然后将更新后的信息写回SQL Server中的Products表。在小型的应用程序中,模型通常是一个概念上的划分而非一个实际的划分。举个例子,如果应用程序只是读取Dataset然后发送给视图,应用程序没有一个实际的模型层和相关的类。在这种情况下,Dataset就承担了模型对象的角色。视图:视图是应用程序中显示用户界面(UI)的组件。典型地,这个UI基于模型数据创建。举个例子,Products表的编辑视图基于Products对象的状态显示了文本框、下拉列表,以及复选框。控制器:控制器是处理用户交互的组件,它与模型协作,并且最终选择一个要呈现的视图来显示用户界面。在MVC应用程序中,视图仅仅显示信息;控制器处理并且响应用户输入和交互。举个例子,控制器处理查询字符串值,并且将这些值传递给模型,模型再使用这些参数查询数据库。MVC模型帮助创建这样的应用程序,它能够将应用程序的各个方面区分开(输入逻辑、业务逻辑,以及UI逻辑),同时提供这些元素之间的松耦合。这个模式指定了每一种逻辑应该位于应用程序的哪个位置。UI逻辑属于视图。输入逻辑属于控制器。业务逻辑属于模型。这种分隔有助于你在创建应用程序时管理复杂性,因为它能够让你在一次将精力集中于实现的某一方面。举个例子,你可以集中在视图,而不依赖于业务逻辑。除了管理复杂性以外,测试应用程序时MVC模式比基于Web表单的ASP.NET应用程序要简单得多。举个例子,在一个基于Web表单的ASP.NET应用程序中,一个类既用于显示输出,也用于响应用户输入。为基于Web表单的ASP.NET应用程序编写自动测试程序是很复杂的,因为要测试每个页面,你必须初始化页面类,它的所有子控件,以及应用程序中其他有所依赖的类。因为为了运行页面初始化了这么多的类,所以编写专用于应用程序单独部分的测试就变得很困难了。测试基于Web表单的ASP.NET应用程序因此比测试MVC应用程序更加难以实施。除此以外,基于Web表单的ASP.NET应用程序需要一个Web服务器。MVC框架将组件进行了解耦,并且大量使用了接口,使得测试独立于框架其他部分的组件成为可能。MVC应用程序三个主要组件之间的松耦合也提升了并行开发的程度。举个例子,一个开发者可以开发视图,第二个开发者可以开发控制器逻辑,而第三个开发者可以将精力集中于模型中的业务逻辑。3 概要设计3.1 系统模块图本系统主要由四个模块组成,分别是前后台数据交互模块,图片处理模块模块,图片上传模块,在线编辑器模块。各个模块之间的依赖关系如下图:图7 系统模块及其依赖关系3.2 前后台数据交互模块前台Flex在线画册编辑器使用Web服务与后台进行数据交互,大大降低了与后台交互的复杂性,前台Flex程序直接调用Web服务提供的方法,然后返回XML数据串,XML数据再在Flex程序中进行解析。3.2.1 编辑器与后台数据交互用例图图8 前后台数据交互模块用例图3.3 图片处理模块由于用户上传的文件格式和大小不一,如果不加以处理,会导致前台的Flex画册编辑器调用图片产生不可预知的错误。为了避免这种错误,用户上传图片后,直接对图片进行各种处理,统一处理成三种规格的图片:用于打印的图片文件、用于编辑器调用的图片、缩略图。图片处理的流程如下:图9 对图片数据处理3.4 图片上传模块由于服务器的存储空间有限,故每个用户最多只能上传50张图片,每张图片的大小不超过8mb。上传的时候还必须实现判断文件的类型,只允许上传jpeg和png格式的图片。图10 图片上传流程图3.5 在线编辑器模块该模块为本系统最复杂的模块,通过浏览器加载编辑器的SWF文件,通过web服务与后台交换数据,实时对图片进行处理,提供所见即所得的编辑环境。 该模块的用例图如下:图11 在线编辑模块用例图4 详细设计4.1 图片处理每次调用图片都调用用户上传的原始文件,那样显然是不可取的。有时候只需要显示缩略图,那么从服务器请求原始的大图片很显然地造成资源的浪费。为了避免资源浪费,同时加快请求速度,把用户上传的原始文件处理成不同规格的图片。压缩成不同分辨率的图片文件,分别为图片最短边为2400px,最短边为600px,最短边为50px的三种图片。2400px的作为打印介质,600px的作为编辑器调用的图片,50px作为缩略图。这样,但需要显示何种图片时,就调用对应规格的图片,节省了服务器资源,同时加快请求的速度。图片的处理流程如下:图12 图片处理流程生成打印图的相关代码片段:/ / 生成打印图 / / 源图 / 保存路径 / public bool CreatePrintImage(Bitmap bitSource,string strSavePath) Bitmap inputImage = new Bitmap(bitSource); int intWidth = inputImage.Width; int intHeight = inputImage.Height; if (inputImage.Width = inputImage.Height & inputImage.Height =2400) intHeight = 2400; intWidth = Convert.ToInt32(float)inputImage.Width / (float)inputImage.Height / 2400); else if (inputImage.Width = 2400) intWidth = 2400; intHeight = Convert.ToInt32(float)inputImage.Height / (float)inputImage.Width / 2400); if (inputImage.Width = inputImage.Height & inputImage.Height 2400) intHeight = 2400; intWidth = Convert.ToInt32(float)inputImage.Width * (float)2400 / inputImage.Height); else if (inputImage.Width = inputImage.Height & inputImage.Width 2400) intWidth = 2400; intHeight = Convert.ToInt32(float)inputImage.Height * (float)2400 / inputImage.Width); Encoder myEncoder = Encoder.Quality; ImageCodecInfo imageCodeInfo = GetCodecInfo(image/jpeg); EncoderParameter myEncoderParameter; EncoderParameters myEncoderParameters; myEncoderParameters = new EncoderParameters(1); myEncoderParameter = new EncoderParameter(myEncoder, 90L); myEncoderParameters.Param0 = myEncoderParameter; Bitmap outputImage = new Bitmap(intWidth, intHeight); Graphics g = Graphics.FromImage(outputImage);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论