NET 应用架构指导 V2 学习笔记(十八) 表现层组件设计指导
2010-06-05 21:09 Virus-BeautyCode 阅读(2124) 评论(1) 编辑 收藏 举报本章讲述的是你在设计用户界面组件和表现层逻辑组件的时候应该有的步骤。首先需要理解用户界面的需求,选择适当的技术。然后决定如何将表现逻辑和数据绑定要UI控件上。确保你理解了用户界面中的异常错误处理和合法性验证。下面就是设计的步骤。
1 理解用户界面的需求
理解用户界面的需求是决定UI类型、技术、和控件类型的关键。你的用户界面应该被应用的功能和用户体验所驱动。
从认识应用的用户开始,理解用户希望使用系统完成的目标和工作任务。特别关注序列化任务和操作。决定用户是希望一个一步一步的结构化用户体验,还是可以同时进行多个任务的非结构化用户体验。作为过程的一部分,用户需要的信息和格式。另外,考虑用户体验的等级。这些因素都可以帮助你进行一个以用户为中心的设计。对你的技术选择影响很大的一个因素是用户界面的功能。确定用户界面是否一定要暴露丰富的功能和用户接口,是否一定要有快速的响应,是否需要图形化或者是动画支持。同时要考虑例如时间、货币等数据类型是否需要本地化。另外,要确定是否需要个性化的功能,例如用户可以在运行的时候选择布局和风格。
确保用户界面直观且容易使用,考虑如和布局和组织界面。用户如何导航。可以帮助你选择适当的控件和用户界面技术。理解一定要支持的物理的显示需求,屏幕大小,重定位。考虑访问需要,大字体和按钮。决定如何将相关的信息分组。决定用户快速查找信息的方式,搜索功能,清晰的提示,站点地图,其他适当的功能。
2 决定你需要的用户界面类型
在用户界面需求的基础上,你可以做决定需要什么杨的用户界面类型。在众多的用户界面类型中,每一种都有它自己的优点和缺点。经常会发现,你的用户界面需求可以用多种用户界面类型实现。也没有一种用户界面类型可以完全覆盖你的需求。
移动应用可以作为瘦客户端或者是胖客户端来开发。富客户端的移动应用可以支持离线或者是偶尔在线的联网方案。web或者是瘦客户端只能支持在线的方案。设备资源也是设计移动应用的时候需要考虑的限制条件。
富客户端应用通常是拥有一个图形化的用户界面,独立的,或者是联网的应用,可以部署在桌面或者是笔记本上。他们适合离线或者是偶尔在线的应用方案。富客户端提供动态的、高响应的用户体验,利用了本地的系统资源,也可以整合机器上的其他应用。
RIA应用通常就是一个web应用加上一个运行在浏览中的丰富的图像界面。RIA是典型的在线应用。它可以使用客户端计算机的处理能力。
3 选择适当的用户界面技术
在你确定了用户界面类型之后,就需要选择一个实现技术。
移动客户端可以选择下面的技术。
- Microsoft .NET Compact Framework。是.NET的子集,专门为移动设备设计。
- ASP.NET for Mobile。是ASP.NET的子集,专门为移动设备设计,不需要IIS。
- Silverlight for Mobile。Silverlight的子集,要求移动设备安装Silverlight插件。
富客户端可以选择下面的技术。
- WPF。
- Windows Forms
- Windows Forms with WPF User Controls
- WPF with Windows Forms User Controls
- XAML Browser Application using WPF
富Internet应用可以选择的技术。
- Silverlight
- Silverlight with AJAX
Web应用可以选择的技术。
- ASP.NET Web Forms
- ASP.NET Web Forms with AJAX
- ASP.NET Web Forms with Silverlight Controls
- ASP.NET MVC
- ASP.NET Dynamic Data
控制台程序可以使用的用户界面技术。
- Console
- Power Shell Commandlets
4 设计表现层组件
包括下面的三种组件:
- 用户界面组件
- 表现层逻辑组件
- 表现层模型组件
这些组件在表现层支持不同的关注。使用依赖注入的抽象模式,使得你的表现层逻辑更容易测试。
用户界面组件
用户界面组件是显示数据和接收用户输入的元素。他们通常被看做是Views。可以参考下面的设计原则:
- 考虑将页面和窗体分离到用户控件中,最小化复杂性,支持控件重用。选择适当的用户界面组件,利用控件的数据绑定功能。
- 避免通过继承来重用代码。考虑使用组合而不是继承来创建可重用的表现组件。
- 避免建立自定义的控件,除非有特殊的显示需要。如果需要的话,可以考虑购买toolkit。如果一定要开发自己的控件,考虑扩展现有控件,而不是完全新开发。使用扩展现有控件的行为,而不是继承它。
表现层逻辑组件
表现层模型组件
未完待续。。。。。。。。。。。。。。。。。。。。。。。。。。