`

NET 应用架构指导 V2 学习笔记(十) 表现层的主要技术及设计步骤

阅读更多

  主要的技术及常用的模式。

  移动应用

  •   在设计移动应用的时候可以参考下面的原则:
      如果你想要构建一个基于windows的完全在线、偶尔在线、离线的应用,可以考虑使用windows compact framework。
  •   如果你想构建一个支持各种移动设备,或者是需要WAP协议,compact HTML的联网应用,可以考虑使用ASP.NET 。

  富客户端应用

  在设计富客户端应用的时候可以参看下面的原则:

  •   如果你想要构建富媒体和图像化的应用,可以考虑使用WPF。
  •   如果你想要构建一个需要从web服务器下载,然后运行在windows客户端的应用,考虑使用XAML Browser应用(XBAP)。
  •   如果你要构建的应用是以文件为基础,或者是使用报表,可以考虑设计一个Windows office business application(OBA)。
  •   如果你想使用大量的第三方控件,和快速开发工具,考虑使用windows forms。如果你决定使用windows forms,考虑使用模式和实践小组的Smart Client Software Factory。
  •   如果你想构建一个WPF应用,可以参考下面的原则
    •   对于Composite应用,可以考虑模式和实践小组的Composite Client Application Guideline。
    •   考虑使用表现层模型(Model-View-ViewMoel)模式,MVVM是MVC的变种,为现代的UI开发专门设计的模式,View是设计者的职责,而不是一个类开发者的职责。你可以通过在用户控件上实现DataTemplates来给与设计者更多的控制。考虑在View和Prosenter或者是ViewModel进行通信的时候,使用WFP的Command。

  富internet应用

  构建富internet应用可以参考下面的原则:

  •   如果你构建一个以浏览器为基础,支持跨平台的联网应用,支持富媒体,有丰富表现能力的应用,考虑使用silverlight。
  •   如果你决定使用silverlight构建应用,参考下面的原则:
    •   考虑使用前面WPF中讲述的MVVM模式。
    •   参考模式与实践小组的Composite Client Application Guideline。

  Web应用

  构建web应用可以参考下面的原则:

  如果你要构建一个通过浏览器或者是特殊的应用代理才可以访问的应用,考虑使用ASP.NET。

  如果你决定使用ASP.NET构建应用,可以参考下面的原则:

  •   考虑使用master pages简化开发,提供一致的UI表现。
  •   增加交互性和后端线程处理,减少页面的重新加载,考虑使用在ASP.NET页面中使用ajax。
  •   如果你想要增加富媒体和交互性,考虑在asp.net中使用silverlight控件。
  •   如果你想要在应用中提升可测试性,或者在用户界面和业务逻辑之间实现一个更加清晰的分离,考虑使用asp.net mvc框架。这个框架支持MVC为基础的web应用开发。

  性能考虑

  如果要提高表现层的性能,可以参考下面的原则:

  •   小心地设计表现层,以便在提供所需功能的基础上,同时是一个交付丰富的、快速响应的用户体验。例如:确保你的表现层可以灵敏的验证用户的输入内容,而不需要跨层才可以验证。这就需要在表现层实现业务逻辑层的验证规则,也可以通过使用元数据或者是共享组件。
  •   表现层和业务逻辑层或者是服务层的交互应该是异步的。这可以避免可能存在的高延迟或者是网络连接的间歇性,可能会影响应用的可用性和响应性。
  •   考虑在表现层缓存要显示给用户的数据。例如:你可以在股票软件中缓存历史信息用来显示。
  •   在通常情况下,避免维护session数据,避免为每个用户缓存数据,除非用户数量有限,或者是数据的量较小。但是,如果用户只是存活一会儿,为每个用户短暂的缓存数据可能会是一个适当的技巧。
  •   对于查询数据,总是使用分页。不要在查询中返回不限量的数据,使用适当的分页数据来显示。只在绝对需要的时候,使用客户端分页。
  •   在ASP.NET中,小心使用试图状态ViewState,因为会在每一数据访问中增加数据量,会降低应用的性能。

  表现层的设计步骤

  下面的步骤是设计表现层的建议。这个方法确保你考虑到了在开发和架构的时候遇到的,全部的相关因素。

  1 确定你的客户端类型。选择一个可以满足需求的,保持现有组织的基础架构和部署环境限制的客户端类型。例如,如果你的用户都装备有移动设备,都会连接网络,这时候移动客户端可能是最好的选择。

  2 选择表现层技术。确定你的UI和表现层的功能,选择满足需求的UI技术,适合你选择的客户端类型。这时候,如果选择的技术不合适,你可能需要重新考虑你选择的客户端类型。

  3 设计用户界面。如果你想要你的UI模块化,需要从表现层分离关注。考虑分离的表现模式,例如Presentation Model、MVC、MVP。

  4 决定你的数据验证策略。使用数据验证保护你的系统,避免不受信任的输入。同时,为异常管理和日志选择合适的策略。

  5 决定你的业务逻辑策略。将业务逻辑层从你的表现层代码中解耦。将会提高应用的可维护性,使得在修改业务逻辑的时候不影响表现层。你选择的技术依赖于应用的复杂性,可以参考下面的方法:

    •   UI验证。简单应用的验证就是对于输入的验证,你可能需要在UI组件中实现业务逻辑。但是,要小心不要将业务逻辑代码混在UI的数据验证中。
    •   业务处理组件。如果业务较复杂,例如要支持事务,在UI的验证之外需要扩展业务逻辑,考虑将业务逻辑放在独立的组件。
    •   领域模型。对于复杂的企业级应用,业务逻辑会被多个应用共享,考虑将业务逻辑分离到独立的逻辑层。这样允许你将业务逻辑部署在独立的物理层,提高伸缩性,而且支持其他应用的重用。
    •   规则引擎。在应用中一定要支持复杂的验证,处理规则编排,领域逻辑,考虑将业务逻辑放在规则引擎中,例如微软的BizTalk Server。

  6 确定和其它层的通信策略。如果你的应用包括多个层,例如数据访问层和业务逻辑层,确定一个表现层和其它层通信的策略。如果你由一个独立的业务层,你的表现层将和业务层进行通信。如果没有,你的表现层将和数据访问层直接通信,在访问其他层的时候参考下面的标准:

    •   直接的方法调用。如果通信的逻辑层部署在同一个物理层,你可以使用直接的方法调用。
    •   web service。如果你想要共享数据访问或者是业务逻辑操作,如果逻辑层和数据访问层部署在不同的物理层,或者解耦他们是重要的,采用web service进行通信。考虑WCF,如果通信发生在内容,使用TCP协议;如果你的业务逻辑和数据访问被internet消费,使用HTTP协议。如果运行需要长时间,考虑使用异步的消息查询。

  相关的设计模式

  下面列出表现层关键的模式,用目录来划分开。

  

目录 相关模式
缓存
  • 缓存依赖
  • 页面缓存 

Composition and layout

  • composite view
  • presentation View
  • template view
  • transform view
  • two-step view

 

异常管理
  • Exceptin Shielding
navigation
  • application controller
  • front controller
  • page controller
  • command
user experiences
  • asynchronous callback
  • chain of responsibility
未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 

分享到:
评论

相关推荐

    AADL 学习笔记_V2_aadl_

    AADL(Architecture Analysis & Design Language)是一种用于系统架构分析和设计的语言,主要应用于软件密集型系统的建模。这个“AADL学习笔记_V2_aadl_”文件集合显然是针对AADL标准的第二版(V2)进行的学习和参考...

    51单片机RFID射频IC卡板子资料V2

    4. **文档资料**:这部分可能包括技术规格、设计笔记、用户指南等,有助于深入理解系统的运行机制和使用方法。 5. **上位机应用程序**:上位机软件通常用于管理RFID系统,显示读取的数据,或者执行更复杂的任务,如...

    redis学习笔记

    ### Redis 学习笔记知识点梳理 #### 一、Redis 关机命令及检查启动状态方法 在使用 Redis 过程中,我们可能会遇到需要重启或关闭 Redis 的情况。以下是几种常用的 Redis 关机命令: 1. **halt**: 立刻关机。 2. *...

    Targeted Reference Design for 3GPP LTE Downlink Transmitter

    文件“xapp1115.pdf”和“xapp1115_v2_0.zip”可能是Xilinx应用笔记或设计示例,其中“xapp”通常代表Xilinx Application Note,即由Xilinx公司提供的技术文档,详细解释了如何使用他们的产品来解决特定问题或实现...

    stm32f4编程资料

    这个“stm32f4编程资料”压缩包显然包含了与STM32F4开发相关的多个资源,包括固件库使用、学习笔记和简介等内容,为开发者提供了深入理解并应用STM32F4处理器的基础。 1. **STM32F4固件库使用**:STM32F4固件库是由...

    Linux平台开发资源.rar_Linux平台开发资源链接汇总_V2J_linux 平台

    1. "我的arm_linux移植笔记.doc":这是一个文档,很可能记录了作者在将Linux系统移植到ARM架构硬件上的经验、步骤、遇到的问题以及解决方案。这对于从事嵌入式Linux开发的人来说是非常宝贵的参考资料,因为ARM处理器...

    Hawkboard Using Code Composer Studio V4 & XDS100V2 Emulator

    本应用笔记旨在指导初学者如何在Hawkboard平台上利用Code Composer Studio V4(CCS)及XDS100V2仿真器构建并运行一个简单的基于裸机的程序。此项目特别适用于那些希望了解如何在ARM架构处理器上编写基本代码的人群。...

    MTK.rar_mtk

    2. **MT6235_Design_Notice_V2-1.pdf**:MT6235是一款MTK的基带处理器,该设计通知可能包含了关于硬件设计、性能优化、功耗控制以及兼容性方面的指导,对进行MT6235相关产品开发的工程师来说非常关键。 3. **...

    stm8a-discovery_lin_fw

    STM8A-DISCOVERY开发板是STMicroelectronics推出的一款用于STM8A系列微控制器的评估工具,它提供了全面的硬件和软件资源,帮助开发者快速熟悉并应用STM8A芯片。"stm8a-discovery_lin_fw"这个压缩包包含了与STM8A-...

    STM32参考资料.rar

    "STM32参考资料.rar"这个压缩包文件很可能是包含了关于STM32系列微控制器的各种学习资料,包括数据手册、用户指南、开发工具教程、示例代码和应用笔记等。 1. **STM32概述**:STM32家族拥有多个产品线,如STM32F0、...

Global site tag (gtag.js) - Google Analytics