日期:2012-08-17  浏览次数:20431 次


对于你们开发小组开发的软件,你可能想给用户提供最佳的用户界面,这就意味着你需要不只一个界面。用户希望可以在任何时候、任何地点、在各种设备上访问信息。这就形成了人们对灵活界面的需求,而且使应用程序的基本原理和用户界面的设计和创建显得更为重要了。在本篇文章中,我们将讲述一些用来定义、设计、构建和测试支持.NET多个用户界面的应用程序的最好的方法。我们的探讨只局限于现有的以及很快会实现的用于.NET平台的开发技术。然而,如果你们的开发团队已经创建了一个Java前端系统,并通过.NET Web services来运行一个服务器端应用程序的话,这些方法也同样适用。
在Rob Ericsson的“为好的UI 选择合适的工具”(http://www.fawcette.com/China/XmlFile.aspx?ID=25)一文中,他讲述了应用程序的一些特点,可以帮你选择是用Windows Forms还是用ASP.NET来实现一个应用程序。这种选择的要点就是要对每种技术进行成本效益分析,将应用程序的可用性作为一个最重要的因素来考虑。然而,这通常并不是一个简单的二选一的问题。有时侯,一个应用程序有很多不同的用户群。所以,用户的需求以及他们对用户界面的需求会有很大的差别就不足为奇了。对于这种类型的应用程序,“一刀切”(one-size-fits-all)式的Windows Forms或ASP.NET实现方式可能就不太适合了。
在这种情况下,你应该考虑创建一个可以提供多个用户界面的应用程序。对于这种具有多个界面的应用程序,我们可以将Microsoft Exchange Server作为例子来讲述:Outlook是Windows客户端,Outlook Web Access (OWA)是基于Web的界面。你临时不在办公室时使用OWA是很理想的,而Outlook Windows客户端是设计用于大量的日常工作的。然而,不同的界面并没有必要用不同的技术来构建。让我们来看一个客户服务中心的应用程序。客户服务电话接线员运用的数据录入界面同用来管理应用程序的界面有很大的不同,虽然它们都是用Windows Forms构建的。实际上,运用相同的界面技术来创建两个不同的界面比将多个界面技术整合到一个应用程序中要简单得多。
认可困难
虽然一些工具供应商认为创建具有多个用户界面的应用程序很简单,但事实并非如此。很多时候,创建一个Web或PDA应用程序所带来的兴奋感都会让开发人员失去理智,从而不去考虑Windows应用程序是否对用户更有效。另外添加一个界面会给你的应用程序带来许多复杂的问题,所以不要轻易作出这样的决定。为了帮助你决定是否给你的应用程序采用多个用户界面,你应该问自己这样几个问题。
第一,用户不在办公室时需要访问你的应用程序吗?对远程用户的支持是提供多个界面的主要原因。在许多情况下,这些用户确实需要一个单独的界面来运用应用程序。用户在一个拥挤的飞机场和在一个安静的办公室所使用的环境是完全不同的。
第二,你的应用程序需要在不同的平台上运行吗?因为.NET目前不提供跨平台的互用性,所以如果你的需求包括在非Windows操作系统上运行应用程序,那么你就应该创建一个ASP.NET应用程序,使用户可以从多个Web浏览器访问它(见工具条“.NET正走向成功”)。如果你运用Microsoft Mobile Internet Toolkit,所支持的Web浏览器可以包括那些在Palm OS PDAs和手机上运行的浏览器。
最后,你有需求截然不同的用户群吗?在着手开发应用程序前,仔细考虑这些问题是很值得的,否则会造成相当大的麻烦并给应用程序带来风险。只有当你确信你的应用程序用户的确需要多个界面时,你才可以投资来构建它们。
选择你的技术
一旦你决定构建一个具有多个界面的应用程序,你就需要确定运用哪种技术。.NET提供了许多用户界面选项,要对创建一个具有多个界面的.NET应用程序作出合理的选择,你就必须充分了解.NET相关的界面技术。
Windows Forms是在.NET中开发富客户端(rich client)应用程序的基础。客户端应用程序比其相应的基于浏览器的应用程序有一些固有的优势。用户可以运用客户端应用程序,而不需要网络连接。虽然在办公环境中网络已经无处不在了(尤其是随着诸如802.11这样的无线网络技术的普及),但在不能利用网络连接的情况下,用户仍需要很多应用程序。例如,他们可能需要在家运用一个应用程序,在这种情况下,只有很少数的用户有宽带连接;或者需要在车间运用应用程序,这时候由于电磁干扰而不能进行网络连接;或者在乘飞机旅行时。除了提供离线功能外,客户端应用程序也可以充分利用Windows的特殊功能,而基于浏览器的应用程序只能运用Windows“最低标准”的功能。
Windows Forms是Microsoft Foundation Classes(MFC)的“指定继承人”,它是Win32 API用户界面库的首选对象封装器(object wrapper),但是MFC和Windows Forms之间有许多不同。严格地说,MFC是个C++类的模式,而任何.NET语言都可以访问Windows Forms的类。另外,类的模式的灵活性和可用性都有了很多改进。由于MFC本质上是Win32上的一个thin wrapper,所以它有很多不一致性,而且很难学习并有效运用。Windows Forms类的模式是经过了改进的,一致的,它的学习曲线类似于Visual Basic的学习曲线,而且有更多的功能。运用Windows Forms,我们可以完成任何通过直接写到Win32类库来完成的任务。如果你需要扩展类来支持你的应用程序的一个特殊的用户界面,你可以通过继承Windows Forms的类来实现。
运用MFC或Visual Basic创建客户端应用程序的一个最大的缺点就是发布应用程序和所有必需的DLLs很困难。客户端应用程序的安装步骤通常很复杂,而且可能很麻烦。Windows Forms的智能客户端使我们可以在开发应用程序时将富客户端的强大性和灵活性与基于浏览器的应用程序容易发布的特点结合起来。
ASP.NET是在.NET中创建基于Web的应用程序的重要技术。近几年来,基于Web的应用程序已经超越了简单的数据库存取前端系统的范围,它包括许多不同的应用。基于Web的应用程序对客户端的限制非常低,这就是它们很受欢迎的一个原因。任何可以通过网络访问Web服务器的机器都可以运用一个将符合标准的HTML发送到浏览器的应用程序。在界面功能上你需要考虑这种功能,使用户可以在任何Web浏览器上访问一个应用程序,但是对于许多应用程序来说,固有的HTML标签提供的基本的用户界面部件就足够创建一个可用的界面了。
除了可以创建基于HTML的应用程序外,ASP.NET也使创建基于SOAP(Simple Object Access Protocol)的Web services变得非常容易了。在一个客户端应用程序中使用一个Web services也很简单。因为通过运用.NET的SOAP可以很容易地创建客户端/服务器应用程序,所以在你的应用程序中提供多个界面就变得更容易了。将Web services同富客户端结合起来就可以让用户享有Web应用程序和富客户端的好处,从而弥补了它们各自的不足。
你在考虑PDA用户界面时会有新的想法。虽然对PDAs的大肆宣传已经减少了,但它们仍代表了用户访问社团信息的一种方式。Gartner Dataquest预言在2002年会生产1550万PDAs。由于PDA的屏幕更小、输入技术有限以及典型的使用环境,所以对PDA界面的需求同对一个Windows或Web应用程序的需求有很大的不同。
因为为PDA设计可用的应用程序与Windows或Web应用程序的开发截然不同,所以.NET提供了工具以简化该步骤。Visual Studio .NET的Smart Device Extensions可以让开发人员运用.NET 工具(他们已经很熟悉了)来创建.NET Compact Framework应用程序。.NET Compact Framework是.NET Framework的一个子集,它在资源受到限制的(resource-constrained)设备上运行,如Pocket PC PDAs、智能电话和其它运行Windows CE .NET的设备。
.NET Compact Framework提供了必要的工具来创建可用的应用程序,包括客户端对Web services的访问、ADO.NET、加密、适当的绘图和窗体功能。除了只在Pocket PC设备上运行的.NET Compact Framework外,.NET也具有Microsoft Mobile Int