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

用于 Pocket PC/智能手机上 Microsoft Visual SourceSafe 的瘦客户端

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.21/5 (12投票s)

2004年5月26日

CPOL

9分钟阅读

viewsIcon

63068

downloadIcon

301

适用于 Pocket PC/智能手机上 Microsoft Visual SourceSafe 的瘦客户端,目标是 .NET Compact Framework。

引言

VSSThinClientSmart 是一个用于 Microsoft® Visual SourceSafe 的瘦客户端。该应用程序针对 .NET Compact Framework 和 .NET Framework,提供了一个用户友好的 GUI,可以通过网络从 Pocket PC/智能手机访问 Visual SourceSafe 数据库。该应用程序利用了 .NET 框架的大部分主要功能。

本产品是移动竞赛的参赛作品。

截图

VSSThinClientSmart Login!

VSSThinClientSmart in Action!

动机

显然,主要动力是 CodeProject 和 HP!:) 但是,当我开始思考要为这次比赛开发什么时,我一直在想,如果我有机会,我会期望我的 Pocket PC 上有什么。我正在一家软件开发跨国公司工作,我遇到过很多情况,需要在会议/聊天时查看/验证代码。虽然会议室里有电脑,但我们无法直接向普通电脑提供对我们代码库的网络访问。即使我有 Pocket PC 的选项,我也没有办法访问我们的代码库。所以,我想如果我能开发一个应用程序来帮助世界各地的人们会更好……它就在这里!!!!一个适用于 Pocket PC 和智能手机的 VSS 瘦客户端。

总体设计

让我解释一下我的应用程序的设计,以便您能更好地理解和欣赏这些功能。VSSThinClientSmart 不是一个单独的应用程序,它有一个 Web 服务 - VSSClientWebSerivce(基于 .NET)和一个客户端应用程序 - VSSThinClientSmart(基于 .NET Compact)。您可能已经猜到,Web 服务是在主机工作站上运行的,它将代表客户端应用程序对 VSS 做出响应。客户端应用程序和 Web 服务通过 SOAP 进行通信并完成工作。这就是为什么我将该应用程序称为瘦客户端,而不是仅仅一个客户端。

这张图片将为您提供清晰的设计视图。

Overall Design Architecture of VSSThinClientSmart

特点

尽管 Web 服务构成了整个应用程序的一部分,但我首先谈谈客户端应用程序。有关 Web 服务的更多信息将在开发部分介绍。VSSThinClientSmart 提供了几乎所有在移动环境中对 SourceSafe 预期的常见操作。以下是其功能:

安全登录

在对 VSS 数据库进行任何操作之前,您需要登录 VSS 数据库。VSSThinClientSmart 提供了一个登录屏幕,如“快照”部分所示。用户应输入以下信息:

  • 用户名 - VSS 数据库中的用户名
  • 密码 - 用户的密码
  • 数据库 - 这是最重要的,因为 srcsafe.ini 文件的路径必须与主机计算机(而不是 Pocket PC)可见的路径一致。如果您的 VSS 数据库在不同于主机计算机的服务器机器上,Pocket PC 完全不需要访问服务器机器。只要您的主机计算机同时连接到服务器和您的 Pocket PC 即可。这确保了更高的安全性,不是吗?

WebService 在成功登录后将提供一个唯一的会话 ID,该 ID 将由客户端应用程序在内部维护。此会话 ID 将用于客户端应用程序在之后的每次操作中进行身份验证。

浏览整个数据库

成功登录后,用户将获得一个 UI,用于浏览整个数据库以及执行所有提供的数据库操作的菜单。VSSThinClientSmart 为您提供了一个主屏幕,如“快照”部分所示。顶部的树状视图显示按层次结构排列的可用项目列表。在树状视图中选择一个特定项目后,所选项目下的文件列表将显示在树状视图下方的列表框中。

注意:VSSThinClientSmart 默认不会展开所有项目。因此,您只能在项目视图中单击特定项目时才能看到子项目。这样做是为了优化对 Web 服务的请求数量。

文件

VSSThinClientSmart 为您提供了许多可对文件执行的操作。每项操作都必须在从 Files 列表中选择特定文件后才能执行;否则,将报告相应的错误。

文件操作

  • 获取最新版本
  • 删除
  • 永久销毁
  • 查看文件属性

所有这些操作都可以在客户端应用程序的“文件”菜单中找到。

File Menu showing various operations on File

Get Latest Version - Example

获取最新版本

获取最新版本有助于获取所选文件的最新版本。成功检索后,将打开一个“保存文件”对话框,以选择一个特定位置来存储文件。之后,应用程序还会询问用户是否要打开该文件。上图显示了根据用户选择在 Internet Explorer 中打开的 .jpg 文件。

删除/永久销毁

删除文件,有助于删除所选文件。单击删除后,系统会询问用户是否要永久删除文件。如果用户选择,文件将被暂时删除,并且稍后可以恢复(尽管无法通过 VSSThinClientSmart 恢复)。如果用户选择,文件将被永久销毁,并且无法再恢复(不仅无法通过 VSSThinClientSmart 恢复)。

查看文件属性

点击属性可帮助用户查看所选文件的各种属性,例如文件名、大小、签出状态等。

项目

VSSThinClientSmart 为您提供了许多可以在项目上执行的操作。每个操作都必须在从项目树中选择特定项目后才能执行;否则,将报告相应的错误。

项目操作

  • 删除
  • 永久销毁
  • Label

所有这些操作都可以在客户端应用程序的项目菜单中找到。

Project Menu showing various operations on Project

Label Project - Example

删除/永久销毁

删除文件和删除项目的信息几乎相同。删除一个项目,有助于删除所选项目。单击删除后,系统会询问用户是否要永久删除项目。如果用户选择,项目将被暂时删除,并且稍后可以恢复。如果用户选择,项目将被永久销毁,并且无法再恢复。

Label

点击标签有助于标记所选项目。系统将要求用户输入标签名称和标签注释。就这样。如果标记操作成功,VSSThinClientSmart 将报告成功并切换回主屏幕。

自定义视图(基于文件/项目状态)

用户可以通过从视图菜单中选择一个或多个选项来自定义视图。这些选项是勾选选项,因此可以使用相同的菜单启用或禁用。以下是用户可用的自定义模式:

  • 仅显示已删除文件
  • 仅显示已签出文件

所有这些操作都可以在客户端应用程序的视图菜单中找到。

View Menu showing various view options

仅显示已删除文件

点击仅显示已删除文件使文件视图仅显示已删除(即临时删除)的文件。

仅显示已签出文件

单击仅显示已签出文件,使文件视图仅显示已签出(由当前用户或任何其他用户)的文件。这仅适用于文件。

注意:如果菜单项已启用,则会在其前面显示一个勾号。

开发

我使用 Microsoft® Visual Studio .NET 2003 和 Pocket PC 2002 模拟器开发了此应用程序。虽然我无法为您详细介绍整个代码库,但我将介绍我的 Web 服务支持的方法。

VSSClientWebService 支持以下方法

  • OpenDatabase

    用于登录 VSS 数据库并创建会话。

  • GetItemsInFolder

    用于获取给定项目下的子项目和文件列表。

  • CloseDatabase

    关闭数据库并销毁会话。

  • 删除

    用于临时或永久删除文件或项目。

  • GetFileInfo

    用于获取指定文件的属性。

  • LabelProject

    用于标记项目。

  • GetFile

    用于获取给定文件的最新版本。

开发平台

  • Web 服务:.NET Framework 1.1
  • 客户端应用程序:.Net Compact Framework 1.0 SP2
  • 模拟器:Pocket PC 2002 模拟器

工作原理

我开发的 Web 服务充当客户端的代理 VSS 自动化组件。所有来自 Pocket PC/智能手机的请求都发送到 Web 服务,Web 服务通过 .NET Interop Services 实例化 VSS 自动化组件,并代表客户端完成工作并返回结果。这已在总体设计架构中清楚地描述。一旦用户成功登录数据库,就会为该用户创建一个唯一的会话,并一直保存在服务器(Web 服务)中,直到用户关闭数据库。

大多数 Web 方法返回一个结构,以向客户端应用程序提供必要信息。例如,以下是 OpenDatabase Web 方法返回的 ResponseXML

 <OpenDatabaseResult>
   <bSucceeded>boolean</bSucceeded>
   <SessionId>string</SessionId>
   <ErrorMsg>string</ErrorMsg>
 </OpenDatabaseResult>

如果 OpenDatabase WebMethod 失败,则错误信息将以字符串形式在 <ErrorMsg> 标签中返回。

同样,以下是 GetFileInfo WebMethod 的响应

 <GetFileInfoResult>
   <isValid>boolean</isValid>
   <FileName>string</FileName>
   <SizeInBytes>long</SizeInBytes>
   <isDeleted>boolean</isDeleted>
   <isCheckedOut>boolean</isCheckedOut>
 </GetFileInfoResult>

由于 .NET 的出现,这些 XML 可以直接序列化/反序列化为对象,就是这么简单!!

使用的 .NET 功能

  • WebService
  • 序列化/反序列化
  • 互操作服务 (RCW)

    这就是 .NET Web 服务访问 VSS 自动化 COM 组件的方式。

  • 委托(Delegates)

    所有功能都由客户端应用程序中的 MainForm 执行。当用户点击“标签”来标记一个项目时,标签字符串和注释字符串会在不同的 Windows 窗体中获取。MainForm 为标签输入窗体提供了一个处理程序,作为回调的委托,当用户完成输入时。因此,当用户提供输入字符串并点击标签输入窗体中的“标签”按钮时,用户输入会通过委托(LabelProjectHandler)传递给 MainForm,以继续执行。

下一步

尽管此应用程序实现了在移动设备上对 VSS 的大多数常用操作,但还有一些操作,例如签出/签入,可以进一步丰富该应用程序。下一个版本将包含所有这些功能。

参考文献

© . All rights reserved.