65.9K
CodeProject 正在变化。 阅读更多。
Home

集成智能客户端应用程序与现有 Web 应用程序

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.75/5 (15投票s)

2005年9月20日

8分钟阅读

viewsIcon

89926

downloadIcon

653

关于将智能客户端应用程序与现有 Web 应用程序集成的文章。

目录

引言

什么是智能客户端?

“智能客户端是易于部署和管理客户端应用程序,它们通过利用本地资源并智能地连接到分布式数据源,提供适应性强、响应迅速且交互体验丰富的应用程序”。(MSDN

为什么要使用智能客户端?

  • 使用点对点技术。
  • 访问本地 API。
  • 高效安全地利用可用资源的全部功能。
  • 像 Web 应用程序一样使用 Web 服务。
  • 它们支持离线工作——智能客户端即使在未连接到 Internet 时也可以处理数据(这与浏览器端应用程序不同,后者在设备未连接到 Internet 时无法工作)。
  • 智能客户端应用程序能够通过网络从中央服务器实时部署和更新。
  • 智能客户端应用程序几乎可以在任何具有 Internet 连接的设备上运行,包括台式机、工作站、笔记本电脑、平板电脑、PDA 和手机。

何时何地实现智能客户端

智能客户端架构并非适用于所有场景。在电子商务等用户平台未知或多样的情况下,基于浏览器的模型仍然是最实用的方法。然而,在企业计算环境中,当客户端已知运行 Windows 操作系统时,智能客户端模型是首选架构,它结合了富客户端应用程序的强大功能和灵活性,以及基于浏览器应用程序的稳定性和易部署性。

智能客户端的不同类型

智能客户端在设计和实现方面差异很大,无论是在应用程序需求方面,还是在使用场景和环境的数量方面。因此,智能客户端可以采用多种不同的形式和风格。这些形式可以根据智能客户端应用程序的目标平台分为三大类

  • Windows 智能客户端应用程序
  • Office 智能客户端应用程序
  • 移动智能客户端应用程序

在本文中,我们将只关注 Windows 智能客户端应用程序。

本文目的

本文演示了

  • 将智能客户端应用程序与现有的基于 Web 的应用程序集成的步骤。
  • 如何通过 URL 向智能客户端应用程序传递参数。
  • 如何自动检测并安装客户端计算机上的 .NET Framework。
  • 智能客户端应用程序的“客户端”的服务器端安装。

智能客户端架构

平台

与以前一样,智能客户端应用程序可以通过 CD、DVD、软盘或通过应用程序部署基础结构(如 Microsoft Systems Management Server)进行交付。 .NET Framework 引入了另一种选择:零接触部署,通过超文本传输协议 (HTTP) 从远程 Web 服务器部署应用程序。

智能客户端在 2002 年随 .NET Framework 1.1 和 Visual Studio 2003 版本一起推出。使用 Visual Studio 2005 和 .NET Framework 2.0 构建和部署智能客户端应用程序向前迈进了一大步。

在本文中,提供的步骤和屏幕截图是使用 .NET Framework 2 (Beta) 和 Visual Studio 2005 Beta 版本开发的智能客户端应用程序。

解决方案

示例智能客户端应用程序

开发了一个简单的 Windows 应用程序项目用于智能客户端演示。在此应用程序中,我们将看到

  1. 如何通过 URL 启动 EXE 应用程序。
  2. 如何访问 URL 和参数。

在示例演示中,我们将通过 URL(Web 应用程序)传递名为 color_name 的参数。然后在客户端应用程序(即 Windows EXE)中,我们将访问此值并显示具有指定颜色值的项(此处为使用的矩形)。

以下是开发此智能客户端应用程序涉及的步骤

设置项目属性以访问 URL

  • 单击项目属性。
  • 转到“选项”选项卡“发布”。
  • 窗体右侧有四个按钮。
    1. 应用程序文件
    2. 必备组件
    3. 更新
    4. 选项

    单击“选项”按钮,这将打开另一个窗口

  • 选择“允许将 URL 参数传递到应用程序”选项,然后单击“确定”。

如何在 Windows 应用程序中访问 URL 和参数

以下代码片段用于在窗体中访问 URL

using System.Deployment.Application;

ApplicationDeployment ad = ApplicationDeployment.CurrentDeployment;
String str = ad.ActivationUri.ToString();

拆分 URL 并检索查询字符串中传递的值。

用于自动检测和安装先决条件的设置

所有智能客户端应用程序都需要 .NET Framework 作为先决条件。可以在首次调用智能客户端应用程序时自动下载此项。以下是设置自动下载功能的各种方法

  • 单击项目属性和发布选项卡。

  • 单击“先决条件”按钮。

  • 确保选中“创建安装先决条件组件的安装程序”复选框。
  • 以下是先决条件的安装位置选项
    • 从组件供应商网站下载先决条件:此选项要求用户连接到 Internet。 .NET Framework 将从 Microsoft 网站下载。
    • 从应用程序的同一位置下载先决条件:如果选择此选项,则在应用程序开发计算机上搜索 .NET Framework 安装程序。(这是为示例应用程序设置的选项。)
    • 从以下位置下载先决条件:对于此选项,您需要提前知道部署计算机的 IP 地址。您可以指定 Setup.exe 所在的虚拟路径。

发布应用程序

  • 构建应用程序。
  • 选择项目属性。
  • 转到发布选项卡。
  • 单击“立即发布”按钮。

将发布目录设为虚拟目录

成功发布应用程序后,.NET 将在应用程序文件夹下创建一个发布目录。将此目录设为虚拟目录。

示例 Web 应用程序

这些步骤将向您解释如何从 URL 启动应用程序。如前所述,我们正在通过 URL 传递一个参数,需要在 Windows 应用程序中访问该参数。我们创建了一些虚拟测试页面,用于传递参数和启动应用程序。

测试网页

  • 测试页面包含两个 HTML 控件,一个包含颜色列表的组合框,以及一个提交按钮。
  • 用户可以从组合框中选择需要在应用程序中显示或作为查询字符串传递的颜色。
  • 单击提交按钮后,页面将调用项目发布文件夹中的 SmartDemo.application,并传递组合框中选择的值。
  • 此网页自动检测客户端计算机上是否存在 .NET Framework。
  • 如果不存在 .NET Framework,则 JavaScript 会将用户重定向到(在属性中指定的)提供安装 .NET Framework 链接的页面(Install.htm)。
  • 如果存在 Framework,则应用程序将自动打开。

以下是用于检测客户端计算机上 .NET Framework 是否存在的 JavaScript。(这与 publish.htm 检测 .NET Framework 的方法相同。)

<SCRIPT Language="JavaScript">
<!--

//Adding Dotnet Script START ******************
runtimeVersion = "2.0.0";
directLink = "Bomedit.application";

//function window::onload()
function checkComponent()
{
  if (HasRuntimeVersion(runtimeVersion))
  {
      InstallButton.href="http://<DevelopmentMachineName>" + 
        "/<VirtualDirectory>/<ApplicatonName>.application";
  }
  else{
      //If framework is not installed give the link to install the same;
      window.open("http://<DeploymentMachineName>/VirtualDirectory /Test.htm");
  }
}

function HasRuntimeVersion(v)
{
  var va = GetVersion(v);
  var i;
  var a = navigator.userAgent.match(/\.NET CLR [0-9.]+/g);

  if (a != null)
    for (i = 0; i < a.length; ++i)
      if (CompareVersions(va, GetVersion(a[i])) <= 0)
          return true;
  return false;
}

function GetVersion(v)
{
  var a = v.match(/([0-9]+)\.([0-9]+)\.([0-9]+)/i);
  return a.slice(1);
}

function CompareVersions(v1, v2)
{
  for (i = 0; i < v1.length; ++i)
  {
    var n1 = new Number(v1[i]);
    var n2 = new Number(v2[i]);

    if (n1 < n2)
      return -1;
    if (n1 > n2)
      return 1;
  }
  return 0;
}

//Adding Dotnet Script End ******************
-->
</SCRIPT>

为智能客户端应用程序构建安装项目

  • 创建 Web 安装项目
  • 将发布文件夹的内容添加到 Web 应用程序文件夹。
  • 生成安装项目。
  • 在部署计算机上运行安装项目
  • 编辑 test.html 页面,并将部署文件夹中 Smart Demo 应用程序的路径作为 Smart Client 应用程序的链接。

开发过程中遇到的错误

以下是我们开发过程中遇到的一些错误

未设置应用程序标识

如果您尝试通过 IDE 运行项目并使用 ApplicationDeployment.CurrentDeployment.ActivationUri 访问 URL,则会出现此错误。此属性只能在部署应用程序后使用。

文件未找到异常

<Filename>. Deploy cannot be found.

这是一个部署后错误。如果在部署文件夹中缺少任何依赖文件的 xyz.deploy 文件,则会发生此错误。检查您的安装项目。包含错误中提到的 xyz.deploy 文件,然后重新部署项目。

摘要

  • 智能客户端应用程序易于与现有 Web 应用程序集成(与 Web 应用程序的体系结构无关,无论是 .NET/J2EE)。
  • Visual Studio 2005 提供了现成的功能,可以访问应用程序运行的 URL。
  • 它不需要 IIS 中的任何特殊设置(如果您的应用程序是在 Visual Studio 2003 中开发的,则需要这些设置)。
  • 智能客户端应用程序可以配置为自动检测客户端计算机上 .NET Framework 的存在。如果未安装 Framework,则可以自动下载并在客户端计算机上运行。

参考文献

其他有用链接

© . All rights reserved.