帮酷LOGO
0 0 评论
文章标签:visual-web  Gateway  vis  GATE  WEB  
Sample Image - visualwebgui_gateway1.gif

介绍

可视WebGui主要利用WinForms对象模型为开发人员开发开发富互联网应用程序( 如 Outlook web access )的新开发体验。 这个对象模型涵盖了你所需要的90%,以便创建 Outlook web访问应用程序。 那么我们如何桥接WinForms对象模型和web开发? 通过网关的概念。

背景

每个WebGui组件都可以使用 IGatewayControl 接口将自身声明为WebGui网关,这允许控件声明由控件通过声明操作来处理的虚拟 url。 IGatewayControl 包含一个获取操作 NAME的方法,应该返回一个网关处理程序。 网关处理程序以与HTTP处理程序完全相同的方式处理请求,这实际上意味着你也可以使用HTTP处理程序。 这意味着你可以实际提供由WinForms对象模型承载的嵌入式ASPX页面,并且可以与该模型进行交互,使WebGui和遗留应用程序之间的互操作。

你可以使用网关的其他地方:

  • 向iframe提供基于HTML的内容
  • 提供当前视图的可以打印版本
  • 小程序,Flash,activeX等交互
  • 使用 ASP.NET ready控件,如Janus网格
  • 正在下载文件

Visual WebGui完全可以自由使用,并为non-commercial目的部署,也可以作为 SourceForge.net. 中的开放源码项目,在WebGui站点中有多个免费许可证,你可以按顺序应用它,以便在生产站点中自由使用它。

本文创建了一个可以通过选择文件来预览的文件列表。

使用代码

为了开始开发视觉WebGui,你需要下载sdk的视觉 WebGui 下载页面。 安装将在你的GAC中安装一对程序集,向你的开发环境添加可视WebGui功能。 安装 Visual WebGui SDK将向你的Visual Studio (。WebGui应用程序和WebGui控制库) 添加两个新项目。 WebGui应用程序项目将创建一个类的ASP.NET 新项目命名 Form1.cs 而不是 WebForm1.aspx 文件通常由 ASP.NET 创建项目模板。 从 Gizmox.WebGUI.Forms.Form 类继承,Form1.cs 自动导致这个文件具有类似于设计时行为的WinForms。 当进入 Form1.cs 类的设计图面时,将在工具箱窗格中提供其他WebGUI工具箱。 这些组件可以被拖到设计图面上,并完全用作WinForms设计表面上的WinForms组件。 In properties pane of any given component, you can change component attributes o layout properties to as Dock and Anchoring which are WinForms way of layouting components and are fully supported by Visual WebGui。

在运行应用程序之前,你需要注册表单视觉 WebGui web.config 配置部分虚拟页面, Visual Studio 起始页设置为这个虚拟页面。 视觉WebGui使用" .wgx"iis脚本扩展,需要添加映射到iis" .aspx"脚本映射相同的定义扩展但没有检查文件复选框存在视觉WebGui使用虚拟页映射到 Gizmox.WebGUI.Forms.Form 继承类。 设置这些配置之后,你就可以像调试WinForms应用程序一样开始调试你的应用程序。

步骤 1 - 创建一个新的WebGui应用程序项目

打开新建项目对话框并选择WebGui应用程序项目。 在项目 NAME 文本框中,输入 WebGUIGateway 并按确定。 Visual WebGui将创建一个新的WebGui应用程序项目,这两个项目都是 ASP.NET 和 WinForms,因为 ASP.NET 和表单类类似于WinForm表单。 双击 WebGui form1.cs 页面将打开与WinForm设计图面完全相同的设计图面。 Visual Studio 工具箱有一个名为WebGui和there的面板,你可以找到与WinForms组件相同的可视WebGui组件。 可以像在WinForms应用程序中那样在设计表面上拖放组件,可视化WebGui设计器将在 InitializeComponent 方法中生成代码。

步骤 2 - 创建主窗体

从WebGUI工具箱窗格中,将 listview 组件拖到设计图面上并在 properties pane中,使它的停靠在顶部。 拖动拆分器并将它的固定在顶部。 将拆分器停靠到顶部将导致它更改 listview 高度。 拖动htmlbox并将它的改为填充。 为文件 NAME 和文件扩展名添加列表视图两列。 现在你已经准备好了本教程的UI部分。

步骤 3 - 填充 Listview

转到窗体属性并更改为事件视图。 双击加载事件处理程序,设计器将为你创建一个空事件处理程序。 向处理程序添加代码 below,该处理程序将用给定路径中的文件列表填充 listview。 在计算机上使用GIF图像更新路径到有效路径。 注意,代码生成列表项,并在标记属性中设置文件的完整路径。

privatevoid Form1_Load(object sender, System.EventArgs e)
{
 DirectoryInfo objDir = new DirectoryInfo(@"C:Inetpubwwwrootimages");
 foreach(FileInfo objFile in objDir.GetFiles("*.gif"))
 {
 ListViewItem item = listView1.Items.Add(objFile.Name);
 item.SubItems.Add(objFile.Extension);
 item.Tag = objFile.FullName;
 }
}

步骤 4 - 创建网关处理程序

网关处理程序实际上是从 IGatewayHandler 继承的类,它有一个名为 ProcessGatewayRequest的方法。 ProcessGatewayRequest 方法处理请求,就像 IHTTPHanlder 继承类一样。 在 ProcessGatewayRequest 方法中,你可以实际将所需的任何内容写入响应中,在这种情况下,处理程序将它所获得的路径写入构造函数并将该文件写入响应。 在项目中创建此类。

using System;using System.Web;using Gizmox.WebGUI.Common.Interfaces;namespace WebGUIGatway
{
 publicclass FileHandler : IGatewayHandler
 {
 privatestring _path;
 public FileHandler(string path)
 {
 _path = path;
 }
 #region IGatewayHandler Memberspublicvoid ProcessGatewayRequest
 (IContext objContext, IRegisteredComponent objComponent)
 {
 HttpContext.Current.Response.WriteFile(_path);
 }
 #endregion }
}

步骤 5 - 创建网关

为了使用网关,你需要在命名空间 Gizmox.WebGUI.Common.Interfaces 下的IGatewayControl 接口上拥有一个控制 inherit。 单个控件可以公开多个网关。 控制网关由操作代码标识。 操作代码作为一个页面 NAME,允许 NAME 引用网关。 为了引用网关,你需要创建一个 GatewayReference 对象。 可以使用组件和操作代码构建 GatewayReference,该组件将提供唯一的网关引用。 让我们继续,通过实现 IGatewayControl 接口使我们的表单成为网关。 IGatewayControl 有一个名为 GetGatewayHandler的方法,它具有操作参数。 使用动作参数,我们可以为不同的操作返回不同的网关处理程序。 让我们使用前面创建的网关处理程序,在名为" OpenFile"的操作上。 注意,在路径构造函数中,我们使用当前选中的项标记属性来获取所选文件的路径。

public IGatewayHandler GetGatewayHandler(IContext objContext, string strAction)
{
 IGatewayHandler handler = null;
 switch(strAction)
 {
 case"OpenFile":
 if(listView1.SelectedItem!=null)
 {
 handler = new FileHandler((string)listView1.SelectedItem.Tag);
 }
 break;
 }
 return handler;
}

步骤 6 - 使用网关

返回到设计器并选择 listview 控件。 从列表视图的属性中,转到事件部分并双击 SelectedIndexChanged 事件。 让我们在 SelectedIndexChanged 事件处理程序中创建一个 GatewayReference 对象,该对象可以在 Gizmox.WebGUI.Common.Gateways 命名空间中找到。 将 GatewayReference的构造函数传递给窗体控件,并指定网关的操作代码。 在调用 GatewayReference 类的ToString 方法时,我们将获得指定网关的relative 路径。 使用 relative 路径设置htmlbox以显示当前网关。 调用 HtmlBox 上的Update 方法将导致它重新加载控件。

privatevoid listView1_SelectedIndexChanged(object sender, System.EventArgs e)
{
 GatewayReference reference = new GatewayReference(this,"OpenFile");
 htmlBox1.Url = reference.ToString();
 htmlBox1.Update();
}

结束语

从这个例子可以看出,网关扩展了 WinForms 对象并桥接了环境差异。 使用网关可以方便地在传统的web开发概念中使用,并且可以用于提供遗留资源和可视化WebGui之间的互操作性。 例如第三方控制是为 ASP.NET 设计的,可以通过使用网关来轻松地使用,但对于另一个教程来说,这是一个。

历史记录



文章标签:WEB  vis  GATE  Gateway  visual-web  

Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语