英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料
基于MVC体系结构的数据库和Web应用程序
摘要
MVC架构在企业软件开发中得到了广泛的认可,它将系统划分为三个不同层次,分别负责接口控制逻辑和数据访问,这样可以根据每层中当前类的独立性来对系统进行维护和扩展。为了说明在MVC下构建的成功的应用程序,本文介绍并使用UML分析,设计和实现数据库和Web应用程序的不同阶段。作为应用程序的核心组件,它有一个由15个关系组成的数据库和一个由17个网页支持的用户界面。
关键词:MVC体系结构,数据库系统,分析和系统设计。
- 介绍
在软件开发中,建模和标准化的符号允许以一种精确的方式表达复杂的思想,促进项目参与者之间的交流,这些参与者通常具有不同的技术和文化水平。
一个符号应该有一个明确的定义,应该由参与者来控制,以便便于交流。已经定好的标准可以克服不好的解释和歧义[1]。
系统分析与设计模型的图,使用特定建模工具。UML主要是一种图形语言来表示面向对象信息系统开发所需的概念。
模型有助于理解和表示已解决的问题,以及问题的解决方案。存在不同的方法来建立问题模型并表达系统需求和限制。如果问题模型与解决方案模型相距甚远,那么将问题表示从用户可以理解的形式转移到设计师和开发人员可以理解的形式上。这会导致误解和难以验证有关已确定问题的解决方案[6]。
另一方面,软件工程师将潜在的解决方案应用于开发问题,监控其成败,并在下一次生成更有效的解决方案。
不同的开发人员可能会花费大量的开发时间和精力来解决这些问题,这些问题每次发生时都要遵循第一原则,并且每个产生的解决方案可能并不是最合适的解决方案。模式提供了获取有关软件开发中成功解决方案知识的手段。
其中一种模式是模型视图控制器(MVC)架构,该架构最初是为使用编程语言Smalltalk实现的应用程序中的用户界面而引入的。在这种方法中,系统分为三个部分:表达领域知识的模型,呈现用户界面的视图以及管理视图更新的控制。
MVC已经证明了它的优点,它可以交互式应用,允许多个相同信息的表示,促进代码复用性,并帮助开发人员专注于单个应用程序方面。[2]
根据他们的角色,信息系统应该根据不同的用户需求定制。这意味着,如果几个用户需要访问资产信息,那么库存管理人员很可能需要查看设备的数量、分发情况以及谁保存这些信息。然而,负责预算的人员需要知道,在购买新资产方面迄今为止花了多少钱。这种情况转换为对用户将显示的相同信息的不同视图。如果更新视图,则应在其余视图中反映此更新的结果。考虑基于子系统的体系结构,例如设备子系统、位置子系统、预算子系统,可能会很昂贵,因为几个元素可以重复,使软件更复杂,容易出错。系统维护也变得复杂,因此系统功能的任何变化都必须在子系统接口中进行更改。因此需要解决的问题是:
- 相同的信息应该以不同的格式显示在不同的视图中。
- 视图中的变化应该反映在其余的视图中。
- 用户界面的变化应该很容易实现。
- 系统的中心功能应该独立于接口,以允许多个接口共存。[1]
MVC体系结构解决了将系统功能与系统界面分开的问题,并且它包含一种将更改传播到其余系统视图的机制。 那么他们与其他架构关系的优势是:
- 不耦合
- 高内聚
- 视图提供了更大的灵活性和灵活性:可以创建多个模型视图,动态添加,修改和消除新视图,可以嵌套视图,还可以更改视图响应用户的方式而不更改其视觉 表示,同步视图,根据其容量为不同设备提供视图,为Web和其他Windows应用程序提供视图
- 更多的清晰设计
- 它有利于维护
- 更大的可扩展性[5,10]
Ivar Jacobson[7] 介绍的健壮性分析可以很容易地转移到MVC架构。
在这种方法中,用例的文本用于标识参与者对象,并根据它们在用例中所扮演的角色进行分类。这个分类在MVC的组件内部以自然的方式定位对象。Ivar的对象分类:
- 实体对象:与持久数据相关的使用寿命较长的对象,它们可以是数据库表,文件,缓存或会话数据(MVC模型)
- 边界对象:用它们的环境与系统通信的对象,它们可以是屏幕,窗口,菜单或任何图形界面元素(MVC视图)
- 控制对象:执行用例操作的对象用于过滤要提交给用户的数据(MVC控件):
这种分析规定了以下规则:
1、参与者只能与边界物体交谈。
2、边界对象只能与控制器和参与者通话。
3、实体对象只能与控制器对话。
4、控制器可以与边界对象和实体对象,以及其他控制器,但不涉及参与者。[11]
在这项工作中,我们展示了案例研究数据库和Web应用程序(SAF)来控制教育机构拥有的资产信息。 它的建模是使用UML(统一建模语言)进行的,它使用了健壮性和MVC体系结构的分析。
在本文中,我们介绍MVC体系结构。 第三部分描述了SAF规范方面。 第4,5,6章分别描述了SAF的视图,控制和模型组件。 这项工作的结论和观点在最后一节。
2. MVC
模型视图控制器(MVC)范型最初是为使用Smalltalk实现的应用程序中的用户界面而设计的,但从那时起,它已经成为用户界面的设计范例,而不必关心实现语言以及控制组件频繁更改的Web应用程序。
图 1 MVC 结构
MVC体系结构如图1所示,它将交互系统分为三个部分,每个部分专门负责一项任务。 该模型包含应用程序数据并管理核心功能。 视图管理模型的视觉显示和对用户的反馈。 控制器解释来自用户的鼠标和键盘输入,命令模型和视图适当地改变。[3]
该模式可能是被动的,这意味着它不知道视图或控制器的存在。例如,如果模型是一个只能由用户更改的文本。然而,在大多数情况下,模型必须链接到视图,以通知内部程序对其状态所做的更改。 视图和控制器始终处于连接状态。 控制器与视图进行通信以确定用户正在操作哪些对象,并调用模型方法对这些对象进行更改。 该模型执行更改并通知更新视图。
应用程序视图一般包含几个嵌套的MVC视图。这些视图的控制器应该合作,以确保适当的控制是解释用户入口。为此,它们形成一个层次树,其中消息通过树的分支从控制器传递到控制器。只有具有焦点的控制器才能采取行动。
每个视图都与一个唯一的控制器相关联,反之亦然,但是该模型可以同时拥有多个视图控制器对。每次模型更改时,必须通知每个依赖视图,以便它们相应地更改。拥有多个同步视图的可能性是MVC架构的一个重要优点。[4]
3. SAF
我们介绍案例研究SAF应用程序来管理资产信息,以说明MVC体系结构的使用。
UML被用作建模语言,因为它已经成为一个行业标准,我们用它来实现系统的模型。
图 2 SAF的主要用例
试图减少问题模型和解决方案模型之间的漏洞用例用于引出SAF要求。 图2显示了主要用例:1.验证访问请求用户和
密码进入系统; 2.管理资产信息管理资产信息; 3.管理系统目录管理与资产有关的信息:账户,负责资产的人员,地点,资产类别,资产类型,资产模型,组织和 4.生成报告按分类,地点,资产类型,资产负责人,序列号,库存标签和帐户以及列表属性组合显示报告。
一旦详细定义了用例,我们将使用Ivar Jacobson引入的健壮性分析。
图 3 删除帐户用例的概念健壮性图
健壮性分析规则应用于SAF分析和设计。 图3显示了通过关系lt;lt;用户gt;gt;管理系统目录相关的删除帐户用例的简图。 该视图由名为Cuentas的HTML页面表示。 当用户选择HTML页面上的数据网格(grdCuentas)的删除选项以消除元素时,将消息发送给PrvControl,PrvControl将消息prvBorrar发送到MdPrincipal。 最后一个将消息执行发送到控件SqlClient,该控件是.NET框架数据提供者[13],通过SAF_SP_CUENTA存储过程擦除所选元素。
从健壮性图类开始,构建序列,协作和状态图。 SAF在ASP.NET [8]中实现,与MVC范式相结合,以文件* .aspx自然的方式分离界面(视图),文件* .aspx.yy中的页面(控制)后面的代码,其中yy依赖 在编程语言上,在我们的例子中是Visual Basic .NET。 SQL Server 2000被用作关系数据库[13,14]和Crystal Report来生成报告。 该系统的主要功能是:
- 验证访问权限; 2.管理目录:资产类型,账户,分类,地点,组织,度量单位,委托人,资产负责人,收购类型,商标,模型,保护状态和用户。 3.管理资产4.生成报告,以及5.维护历史资产。
图4 SAF分配图
图4显示了SAF发布:一个ASP页面服务器,一个数据库服务器和客户端,它们将能够使用浏览器根据他们的授权级别来使用应用程序。
4.视图
图 5 SAF接口
系统界面由17个网页组成,用于目录管理。 它们可以使资产信息同质化。 图5显示了管理帐户目录的页面。 在数据网格的每一行中,如果选择X,则可以看到已注册的帐户,该行的元素将被删除。 如果选择E,关键账户和描述账户将被放置在相应的文本框中,您可以修改它们。 如果新按钮被按下,则激活关键账户和描述账户的文本框以用新账户的信息编辑。 当接受按钮被按下时,这些信息被保存到数据库中。
5. 控制
控件由* .aspx.vb文件构成,每个网页开发一个网页,其中平均有12个方法包含事件处理逻辑和与模型通信并将数据返回到页面控制的附加控件。 显示PrvControl类代码的示例部分。 此代码允许删除目录帐户。 可以观察到模型的ejectua方法的调用
SAF_SP_CUENTA存储过程作为参数。
Private Sub prvBorrar()
If Me.grdCuentas.SelectedIndex lt;gt; -1 Then
Me.txtClave.Text=Me.grdCuentas.SelectedItem.Cells(1).Text
Me.txtCuenta.Text=Me.grdCuentas.SelectedItem.Cells(2).Text
IfEjecuta('SAF_SP_CUENTA3,'amp;Me.grdCuentas.SelectedItem.Cells(0).Text amp; ',' amp; Me.txtClave.Text amp; ', #39;' amp;UCase(Me.txtCuenta.Text) amp; '#39;')
Then
prvEstadoInicial()
Else
Me.lblResultados.Text = 'Ha ocurrido un error alintentarhellip; “
End If
End If
End Sub
5.模型
在这个模型中,我们发现了三个主要方法:ejecuta,consulta和insertaConClave,以及17个存储过程。 接下来显示ejecuta方法代码。 Ejecuta方法由控件使用prvBorrar方法调用。 可以观察到,在此层之前,应用程序使用特定的类与选定的数据库进行通信。
Public Function Ejecuta(ByVal vsInstruccion As String) As Boolean
If gnNivelUsuario gt; 0 Then
Try
goConeccion=NewSqlClient.SqlConnection('DATA SOURCE=localhost;initial
catalog=saf;uid=saf;pwd=userSAF;')
goConeccion.Open()
goComando = New
SqlClient.SqlCommand(vsInstruccion,goConeccion) goComando.ExecuteNonQuery()
Ejecuta = True
Catch e As System.Exception
Return False
Finally
goComando = Nothing
goConeccion.Close()
End Try #39;de Try
Else
Return False
End If
End Function
正如前面在SQL Server 2000中提到的,创建了存储过程以添加,更新,删除和搜索数据库表。 存储SQL过程SAF_SP_CUENTA在SAFCCUENTA表上运行。 可
全文共17883字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[15818],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。