CN102292736A - 利用合成容器的协作环境项目可扩展性 - Google Patents
利用合成容器的协作环境项目可扩展性 Download PDFInfo
- Publication number
- CN102292736A CN102292736A CN2009801553682A CN200980155368A CN102292736A CN 102292736 A CN102292736 A CN 102292736A CN 2009801553682 A CN2009801553682 A CN 2009801553682A CN 200980155368 A CN200980155368 A CN 200980155368A CN 102292736 A CN102292736 A CN 102292736A
- Authority
- CN
- China
- Prior art keywords
- project
- expansion
- browser
- workpiece
- collaborative environment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/06—Resources, workflows, human or project management; Enterprise or organisation planning; Enterprise or organisation modelling
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Entrepreneurship & Innovation (AREA)
- Physics & Mathematics (AREA)
- Strategic Management (AREA)
- Human Resources & Organizations (AREA)
- Economics (AREA)
- General Physics & Mathematics (AREA)
- Educational Administration (AREA)
- Game Theory and Decision Science (AREA)
- Development Economics (AREA)
- General Engineering & Computer Science (AREA)
- Marketing (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Stored Programmes (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
通过集成开发环境内的托管可扩展性框架中的合成容器提供了动态协作项目可扩展性。使用扩展工件工厂以获取合成容器内的扩展工件,来扩展基于浏览器的协作环境项目。可以利用自定义动作配置类库项目,可以创建表示自定义动作的基于浏览器的协作环境项目扩展工件,然后可以创建带有供在合成容器内发现的出口属性的项目扩展工件的工厂类。
Description
背景技术
可以给协作环境提供计算机联网技术,该技术协助在地理上分开的人之间的通信。可以通过电子邮件讨论列表、电话会议工具、以及诸如例如可批注的博客以及wiki之类的共享文档来进行协作通信。
协作环境可以是基于浏览器的。即,在协作环境中所提供的一个或多个应用程序可以被人类用户通过他们的web浏览器进行访问。在一些配置中,web浏览器可以由一个或多个插件来增强;web浏览器所访问的功能也可以由对web服务器作出的更改来增强。除向联网的工具提供图形用户界面之外,web浏览器可以访问由协作环境的底层网络基础结构中的一个或多个服务器主存的协作服务。在一些协作环境中,诸如文字处理程序或电子表格之类的应用程序访问协作环境web服务,以访问共享存储中的数据。
发明内容
一些实施例通过合成容器提供动态协作项目可扩展性,从而允许超出插件的能力之外的协作运行时灵活性。例如,可以使用扩展工件(artifact)工厂来扩展基于浏览器的协作环境项目,以在合成容器内获取基于浏览器的协作环境项目扩展工件的一个或多个实例。项目可以是诸如微软SharePoint环境之类的协作环境的扩展;项目系统可扩展性可以使SharePoint开发环境更加灵活。在某些实施例中,利用自定义动作来配置项目,创建表示该自定义动作的基于浏览器的协作环境项目扩展工件,然后创建带有出口属性的项目扩展工件的工厂类,该出口属性使得它在合成容器之外可见。在某些实施例中,开发人员为协作环境中的多个工件类型中的每一个添加扩展。在某些实施例中,定位协作项目工厂,并将其用于标识协作项目扩展工件工厂,然后使用该协作项目扩展工件工厂来在联网的计算系统中的合成容器中创建协作项目扩展工件的实例。
所给出的示例只是说明性的。本发明内容并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于限定所要求保护的主题的范围。相反地,提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本发明由权利要求书限定,在本发明内容与权利要求书有冲突的情况下,应该以权利要求书为准。
附图描述
将参考附图给出更具体的描述。这些附图只示出了选定的方面,且因此不完全确定覆盖或范围。
图1是示出一计算机系统并且还示出已配置存储介质实施例的框图,该计算机系统具有至少一个处理器、至少一个存储器、用于运行一个或多个应用程序的至少一个浏览器、以及可以存在于多个网络节点上的操作环境中的其他项;
图2是示出了与提供合成容器管理的集成开发环境结合在一起的协作项目可扩展性的体系结构的框图;
图3是示出了一个示例体系结构中的项目扩展初始化的数据流程图;以及
图4是示出了一些方法的各步骤和已配置存储介质实施例的流程图。
具体实施方式
概览
协作环境提供促进人之间的交互的工具,而不管他们在地理上是分开的。微软在SharePoint商标下提供了一系列协作环境,包括例如,促进工作组协作和文档创建以及管理、会议和事件调度和通知、项目管理、以及在计算机用户之间传输消息的技术和工具。在一些配置中,微软SharePoint技术允许一个组在不专门要求web开发的情况下配置网站的门户和分层结构,这有助于人们在基于浏览器的环境中对信息进行查找、创建、收集、组织、以及协作。可以根据每个人的希望来对信息的各集合的视图进行过滤、分组、和/或排序。可以构建各种许可以反映例如每个人的组织角色、团队成员资格、或兴趣。
然而,由独立软件提供商所提供的对SharePoint环境(包括开发环境)的扩展在某种程度上是缺乏的,部分地是因为SharePoint解决方案开发人员发现为了开发甚至简单的SharePoint解决方案都需要使用来自不同的源的各种工具。当开发工具缺乏时,用于利用新的或改进的功能来扩展这些工具的基础结构也是不足的。
支持对SharePoint环境的独立添加的基础结构可以采取各种形式。例如,一般而言,在软件运行之前,可以由开发人员利用被定义为软件的一部分的代码扩展该软件应用程序的功能。软件开发常常包括编写源代码,将源代码编译为可执行的机器代码或虚拟机代码,并链接或以其他方式将已编译的结果绑定到以前创建的代码。
一些体系结构允许在最终用户正在运行应用程序时扩展该应用程序的功能。例如,一些应用程序支持插件,插件是可以由应用程序在运行时加载(或代表应用程序加载)的相对较小的应用程序特定的软件段。插件增强应用程序,而并非独立地运行。插件是可选的,因为应用程序即使没有插件也能提供相当大的功能。插件是应用程序特定的,被设计和实现为用于特定应用程序,有时甚至用于该应用程序的特定版本。每一应用程序都提供用于定位和使用它支持的插件的其自己的基础结构。插件也叫做“附件”或“内置附件”。
对于功能扩展的另一种方法需要允许应用程序在运行时发现并利用软件功能的可扩展性框架。在该框架内,基础结构支持在不同的应用程序之间、以及应用程序特定的扩展之间共享功能。这样的应用程序被称为“可扩展的”。可扩展性框架基于签名和/或与扩展和应用程序相关联的其他数据类型信息来为应用程序提供定位和加载可用扩展的机制。例如,可扩展的应用程序环境可包括各个合成容器,这些合成容器在彼此之间导入/导出值。
微软提供一个被称为“MEF”(“托管可扩展性框架”)的可扩展的应用程序环境。MEF提供运行时可扩展性,而不对应用程序施加插件模型。MEF允许宿主应用程序展示其自己的扩展(即,组件、服务、和/或组件提供程序)并使用外部扩展。扩展可以在不同的应用程序之间重用,还可以被实现为应用程序特定的。扩展可以彼此依赖;基于合同、类型和/或其他约束,MEF自动地连接各扩展。MEF为应用程序提供用于定位和加载可用扩展的发现机制。MEF还支持用促进查询和过滤的元数据来对扩展加标签。
MEF允许运行时发现各组件并将各组件绑定在一起。根据此处的某些实施例,为了使组件可被发现,该组件被给予了特殊“出口(Export)”自定义属性。例如,一些组件工厂具有此“出口”属性,并且因此可以被项目发现和使用。项目可以使用工厂来为该项目中的工件实例创建扩展;项目可以具有零个或更多个工件。
在MEF中,使用合成容器来将各组件绑定在一起。应用程序本身可以导出可以由附件组件使用的一些组件、服务、或组件提供程序。应用程序从附件组件导入组件、服务、或组件提供程序。附件又导出组件、服务、以及组件提供程序,并从应用程序导入所需的元素。
如此,合成容器从应用程序和附件接收可用的元数据,并将它们绑定在一起。合成容器可以在需要时创建对象的实例,如此,合成容器不一定在彼此之间提供对象的导入/导出。使用组件解析器,向组件容器提供元数据。在一些配置中,特殊类型的组件解析器可以从另一个组件容器获取或导入组件;这一类型的解析器不一定存在于每个配置中。
MEF的核心构造包括目录和合成容器。目录负责发现扩展(即,组件、服务、和/或组件提供程序),而合成容器协调项创建并满足依赖关系。在MEF中,可组合的部件提供一个或多个出口,并且也可以取决于一个或多个在外部提供的服务或其他入口。可组合的部件也管理实例,该实例可以是给定类型的对象实例。MEF是可扩展的;可以提供额外的可组合的部件实现,只要它们遵循指定的入口/出口合同。合同是出口和入口之间的桥梁。出口合同可包括元数据,该元数据可以被用来对出口的发现进行过滤,例如,通过指示由出口提供的特定能力。
此处所描述的一些实施例提供使用托管可扩展性框架来扩展协作环境项目的机制。一些实施例包括提供核心基础结构的微软Visual Studio项目系统以及用于微软SharePoint项目扩展的可扩展性模型,从而在从项目创建到调试到部署期间允许项目系统操作的集成。此可扩展的体系结构使第三方以及微软能向各扩展提供额外的SharePoint目标功能,而同时维持到现有项目的无缝集成。因此,用户可以从对于SharePoint项目扩展的集成项目开发环境以及SharePoint应用程序的可扩展的项目开发环境中得到好处。用户可以使用Visual Studio环境内的项目类型来创建SharePoint列表定义、站点定义、工作流、web部件(webpart)、映射的文件夹、以及其他工件。另外,托管API以及文档文件格式可以被用来创建对那些项目类型的扩展以及创建新的项目类型。对于SharePoint应用程序,可以遵循软件开发生存周期,包括开发、源控制、测试、部署、以及调试。标准项目以及第三方扩展可以参与SharePoint环境的任何被支持的版本的软件开发生存周期,而不管该SharePoint环境的版本以及处理器架构(32位或64位)。
现在将参考诸如附图中所示出的那些示例性实施例,并使用特定语言来对其进行描述。但是,精通相关技术的人员所能想到的对此处所示出的本发明的特点的更改和进一步的修改,如此处所示出的本发明的原理的其他的应用,都应该被视为在带有权利要求的本发明的范围内。
在本发明中阐明了术语的含义,如此,应该在仔细关注这些阐明的情况下阅读权利要求书。给出了具体示例,但是,相关领域的技术人员将理解,其他示例也可以落在所使用的术语的含义范围内,并且在一个或多个权利要求的范围内。术语不一定具有与它们在一般用途中、在特定行业的用途、或在特定词典或词典集中拥有的相同含义。附图标记可以与各种措词一起使用,以帮助显示术语的广度。从给定文本片段中省略附图标记不一定意味着没有通过文本讨论附图的内容。发明人声明并行使他们对他们自己的词典的权限。这里在详细描述中和/或在申请文件的别处显式地或隐式地定义了术语。
如此处所使用的,“计算机系统”可包括例如一个或多个服务器、主板、处理节点、个人计算机(便携式或非便携式)、个人数字助理、蜂窝或移动电话、和/或提供至少部分地由指令来控制的一个或多个处理器的设备。指令可以采取存储器中的软件和/或专门电路的形式。具体而言,虽然许多实施例在工作站或膝上型计算机上运行,但是其他实施例也可以在其他计算设备上运行,并且任何一个或多个这样的设备都可以是给定实施例的一部分。
“多线程”计算机系统是支持多个执行线程的计算机系统。术语“线程”应被理解为包括能够或经历同步的任何代码,并且可用另一名称来称呼,如“任务”、“进程”或“协同例程”。线程可以并行地、按顺序、或以并行执行(例如,多处理)和顺序执行(例如,时间分片)的组合运行。多线程环境是以各种配置设计的。执行线程可以并行地运行,或者线程可以被组织为并行执行,但是实际轮流按顺序执行。例如,多线程化可以通过在多处理环境中在不同的核上运行不同的线程、通过对单个处理器核上的不同线程进行时间分片、或者通过时间分片和多处理器线程化的某种组合来实现。线程上下文切换可以例如由内核的线程调度器、由用户空间信号、或由用户空间和内核操作的组合来发起。线程可以轮流对共享数据进行操作,或者例如每一线程都可以对其自己的数据进行操作。
“逻辑处理器”或“处理器”是单个独立的硬件线程。例如,每个核运行两个线程的超线程四核芯片具有八个逻辑处理器。处理器可以是通用的,或者针对特定用途,如图形处理、信号处理、浮点算术处理、加密、I/O处理等等,对它们进行定制。
“多处理器计算机”是具有多个逻辑处理器的计算机系统。多处理器环境存在各种配置。在一给定配置中,所有处理器都在功能上是相等的,而在另一配置中,由于具有不同的硬件能力、不同的软件指派,或者两者,某些处理器可能不同于其他处理器。取决于配置,处理器可以在单条总线上彼此紧密耦合,或者它们可以是松散耦合的。在某些配置中,处理器共享中央存储器,在某些配置中,它们每一个都具有它们自己的本地存储器,而在某些配置中,存在共享的和本地存储器两种。
“内核”包括操作系统、系统管理程序、虚拟机、以及类似的硬件接口软件。
“代码”是指处理器指令、数据(包括常量、变量和数据结构)或指令和数据两者。
贯穿本文,对可选择的复数的使用意味着存在一个或多个所指示的特征。例如,“(诸)容器”意味着“一个或多个容器”或等效于“至少一个容器”。
只要参考了数据或指令,就理解这些项目配置了计算机可读存储器,从而将其变换为特定物品,而非简单地存在于纸张上、人的脑海中、或作为例如线路上的瞬时信号。
操作环境
参考图1,用于一个实施例的操作环境100可包括计算机系统102。计算机系统102可以是多处理器计算机系统,或者也可以不是。操作环境可包括给定计算机系统中的一个或多个机器,它们可以群集的、客户机-服务器联网的、和/或对等联网的。
人类用户104可以通过使用显示器、键盘、及其他外围设备106与计算机系统102进行交互。系统管理员、开发人员、工程技术人员、以及最终用户各自都是特定类型的用户104。代表一个或多个人操作的自动化代理也可以是用户104。在某些实施例中,存储设备和/或联网设备可以被认为是外围设备。图1中未示出的其他计算机系统可以与计算机系统102进行交互,或者例如通过网络接口设备使用到网络108的一个或多个连接与另一系统实施例进行交互。
计算机系统102包括至少一个逻辑处理器110。与其他合适系统一样,计算机系统102还包括一个或多个存储器112。存储器112可以是易失性的、非易失性的、固定在适当位置的、可移动的、磁性的、光学的、和/或其他类型的。具体而言,诸如CD、DVD、记忆棒、或其他可移动非易失性存储器介质之类的已配置介质114在被插入或以其他方式安装时可以在功能上变为计算机系统的一部分,从而使其内容可被访问以供处理器110使用。可移动的已配置介质114是存储器112的示例。存储器112的其他示例包括内置RAM、ROM、硬盘、以及其他不能被用户104轻松地移走的存储设备。
介质114用可由处理器110执行的指令116来配置;“可执行”在此以宽泛的意义使用来包括机器代码、可解释代码、以及在例如虚拟机上运行的代码。介质114还被配置有数据118,该数据通过指令116的执行被创建、修改、引用和/或以别的方式使用。指令116和数据118配置它们所驻留于的存储器112/介质114;当该存储器是给定计算机系统的功能部分时,指令116和数据118还配置该计算机系统。在某些实施例中,数据118的一部分代表了诸如产品特征、库存、物理测量值、设置、图像、读数、目标、卷等等之类的现实的世界的项。如本文讨论的,这样的数据也被转换,例如通过绑定、部署、执行、修改、显示、创建、加载、和/或其它操作。
存储器112可以是不同的物理类型。附图中所示的web浏览器120、通过该浏览器访问的应用程序122、其它软件124以及其它项可以部分地或全部地驻留在一个或多个存储器112中,从而配置这些存储器。例如,操作环境也可以包括其他硬件126,例如,总线、电源和加速器。
给定操作环境100可包括向开发人员提供一组协调的软件开发工具的集成开发环境(IDE)128。具体而言,对于一些实施例的一些合适的操作环境包括或帮助创建被配置成支持程序开发的微软Visual Studio开发环境(微软公司的标记)。一些合适的操作环境包括Java环境(SunMicrosystems公司的标记),并且一些操作环境包括利用诸如C++或C#(“C-Sharp”)等语言的环境,但本文的教导适用于各种各样的程序设计语言、程序设计模型、以及程序,以及本质上适用于软件开发领域之外的使用可扩展应用程序环境、使用协作技术、或使用这两者的努力。
在图1中以轮廓形式示出了各项以指出它们不必是所示出的操作环境的一部分,但是可以与操作环境中的项进行交互操作,如此处所讨论的。示例包括诸如MEF之类的可扩展性框架130,或基于合同以及类型签名而在类别实例之间提供动态地确定的匹配的另一种框架;诸如MEF合成容器之类的合成容器132,或可导入的/可导出的动态地匹配的类型类实例的其他容器;诸如SharePoint环境之类的协同环境或另一种基于浏览器的工作组/文档协作技术;诸如Visual StudioIDE项目之类的项目136或其他集成开发环境项目;以及与IDE 128协调来扩展项目136的功能的项目扩展138。
系统
图2示出了适合与一些实施例一起使用的体系结构202。诸如SharePoint环境之类的协作环境134,包括诸如服务器204和模型206之类的特定技术和工具。例如,服务器204可包括SharePoint服务器,如Microsoft Windows Server的Windows SharePoint Services附件,以及Microsoft Office SharePoint Server软件包。模型206可包括,例如,诸如服务器侧对象模型、客户机侧对象模型、以及SharePoint应用程序特定的适配器模型之类的SharePoint对象模型。工具窗口208可包括,例如,软件包探查器以及服务器探查器。设计器210可包括,例如,软件包设计器以及特征设计器。项目136具有相关联的项目项212(项212也被称为“工件”),并可以具有相关联的模板和向导。项目相关联的组件的一些示例包括网站定义项目、列表定义项目、事件工件、web部件工件、应用程序页面工件、工作流项目、以及项目的向导或项目工件。自定义连编(build)进程管理器管理项目的连编以及它们在IDE 128中的自定义扩展。工具窗口208、设计器210、项目136、项目项212、以及自定义生成器(builder)214可以是,例如,由协作环境和IDE一起所提供的工具。
一个或多个可扩展性API 216在协作项目以及它们在IDE内的扩展之间提供协调。API又基于IDE衬底222与项目可扩展性模型218(模型206的示例)和项目基础结构220进行交互,项目可扩展性模型218和项目基础结构220被设计成支持IDE内的协作工具的软件开发。例如,在VisualStudioIDE中,衬底222可包括Visual Studio外壳、Visual Studio软件包、以及顶层DTE(开发工具可扩展性)对象。一些实施例提供SharePoint项目可扩展性模型218和SharePoint项目基础结构220。项目可扩展性模型218可包括,例如,加载项目扩展并使用API 216的共享的合同接口与它们进行通信的项目。项目基础结构220可包括,例如,诸如分层结构、属性浏览器、属性页面、菜单、以及F1“帮助键”处理程序之类的用户界面组件;源代码控制;对于连编、调试、发布、以及部署代码的配置支持;升级支持,以及新项添加支持。
图3示出了项目扩展在示例体系结构内的初始化。项目工厂302创建项目136的实例,它读取数据类型信息并创建项目工件304的实例(也被称为“项目项”)。获取扩展类型信息,制作项目扩展(“P.E.”)实例,使用项目扩展工件工厂306来创建项目扩展工件308。向上传送项目扩展工件308的成功创建的消息,并且相应地将项目工件初始化。
一些实施例被设计成向开发人员提供统一项目和工作流构件块,如可以用构件块来扩展的统一项目系统,以支持SharePoint环境134的不同类型的工件开发。一种实现方法使用Office 2008工作流项目的Visual Studio工具来作为起始点,因为它包含一个构件块的已发布版本的一种实现,即,工作流。一些代码是以C++和C++/CLI编写的,并被转换为C#以允许完全以托管代码进行开发。作为朝向统一项目系统的步骤,托管工作流项目基础结构220被拆分成统一项目系统基础和工作流构件块,它们也有助于标识统一项目和工作流块之间以及项目和任何其他块之间的交互API 216。
此方法的高层体系结构视图包括统一项目基础结构220组件,该组件是不含工作流特定代码的SharePoint项目系统的核心;工作流构件块基础结构220,其具有所有的工作流特定代码;以及合同,它们是在项目和工作流构件块之间共享的接口、枚举器以及结构的集合。在一种方法中,合同是API 216的一部分,该部分免于实现将使版本控制复杂化的代码。在API216内,IProjectService和ILogger接口是通过项目系统来实现的,而IArtifactFactory、IArtifact、IPersistSettings、以及IDeploymentHandle接口是通过诸如工作流构件块之类的构件块来实现的(短语“构件块”在内部与“工件”和“SharePoint项目项”可互换地使用)。可以理解,这些接口的名称可能被改变和/或可以使用不同的名称;这些只是示例。
在此实施例中,通过项目系统来实现的IProjectService接口提供由构件块使用的功能:
在此实施例中,通过项目系统来实现的ILogger接口提供向输出窗口传递消息的能力:
对于构件块(Building Block)接口,在此实施例中,IArtifactFactory接口被项目系统用来创建工件的实例:
在此实施例中,IArtifact接口是通过构件块来实现的主接口:
在此实施例中,IPersistSettings接口可以通过构件块来实现,以便将数据持久保存在项目用户(User)文件中:
在此实施例中,IDeploymentHandler接口是用于与部署子系统进行通信的接口;此接口可以被实现为项目部署子系统的一部分的不同机制所替换:
对于可扩展性框架130,一种实现方法使用Visual StudioIDE 128内的托管可扩展性框架(MEF)来帮助在Visual Studio衬底222之上提供可扩展性。MEF允许代码将不一定彼此有关的组件绑定在一起;如果它们处于同一个CompositionContainer(合成容器)(也叫做ComponentDomain(组件域),例如,同一个合成容器132中),并且如果它们导出和导入同一个合同,则它们可以被绑定在一起。合同由字符串来表示,例如,XName。MEF可扩展性框架130尝试匹配入口和出口,并在它找不到共享的接口类型的情况下生成代理对象。如果找不到共同点,则绑定会失败。
为在统一的项目和工作流块之间实现MEF,即,为通过MEF将项目系统连接到工件,可以使用IComponentDomain服务:
在一种方法中,SharePointProjectFactory(项目工厂302的一个示例)导入IArtifactFactory,而WorkFlowArtifactFactory导出IArtifactFactory。Logger(记录器)导出ILogger,而WorkFlowArtifactFactory导入ILogger。类ComponentDomainService实现IComponentDomain接口,并在项目软件包中被初始化。一个系统包括项目中的两个组件(SharePointProjectFactory和Logger)以及工作流构件块的一个组件(WorkfowArtifactFactory)。这些组件是单个的,并被用来在项目系统和构件块之间建立连接。一旦使用MEF建立了连接,这些组件就可以按类似于在没有MEF的情况下它们进行调用的方式来调用方法和彼此的属性。此方法使用相对简单的编程模型,即,工厂和单个服务使用MEF来建立通信,并且对象的特定实例被创建并随后以在没有MEF的情况下它们将被使用的方式来被使用。
对于项目工件集合实现,在一种方法中,IProjectService具有工件的只读集合;无法从IProjectService外部改变此集合的内容。取决于项目分层结构的内容,改变工件的集合,例如,作为用户与项目系统的交互的结果,可以添加新工件,或者,可以移除一些工件。工件集合提供使用INotifyCollectionChanged和INotifyPropertyChanged接口订阅更改事件的方式:
((INotifyCollectionChanged)_artifacts).CollectionChanged+=this.HandleCollectionChanged;
((INotifyPropertyChanged)_artifacts).PropertyChanged+=this.HandlePropertyChanged;
可以更改此设计以使事件处理程序更可见。
在一种方法中,工件集合的内部实现的设计是由若干约束驱动的。首先,集合内容应该依赖于分层结构内容;集合应该具有对IVsHierarchy变化作出反应的方式。其次,集合应该不可从外部改变。第三,集合应该提供向其订户通知关于更改事件的事件。在微软公共语言运行时(CLR)中的相对封闭的标准类是可以包起ObservableCollection<T>的ReadOnlyObservableCollection<T>。然而,ReadOnlyObservableCollection<T>类不将事件作为公共成员来展示,这使得对于外部API而言它不比只是ReadOnlyCollection<T>更有用。如此,一种设计展示ReadOnlyCollection<IArtifact>,它可以被类型转换成事件接口INotifyCollectionChanged和INotifyPropertyChanged。一个内部实现可以使用ReadOnlyObservableCollection<T>的优点来提供更大的内部功能。
在一种工件集合实现中,内部类ArtifactCollection是从公共CLR类ReadOnlyCollection<IArtifact>继承来的;ArtifactCollection使用内部类ArtifactInfoCollection,该内部类ArtifactInfoCollection是从内部类HierarchyItemCollection<T>继承来的,而内部类HierarchyItemCollection<T>是从公共CLR类ReadOnlyObservableCollection<T>继承来的。HierarchyItemCollection<T>集合是从ReadOnlyObservableCollection<T>继承来的,并使其内容与所提供的IVsHierachy中的项保持同步;它表示所提供的IVsHierarchy中的所有项的经过滤的视图,并使用OnTryCreateHierarchyItem方法来要求继承者为每一个新IVsHierarchy项创建类型T的项。ArtifactInfoCollection是从HierarchyItemCollection<ArtifactInfo>继承来的并且提供OnTryCreateHierarchyItem方法的实现,为包含工件特定的元数据的每一个IVsHierarchy项创建ArtifactInfo类实例,在Visual Studio项目文件中的<None>内容之间查找两个项标记,即,ArtifactFactoryId和ArtifactId,例如:
ArtifactFactoryId包含用于发现工件工厂的标识符。在此方法中,ArtifactId是标识工件的实例的GUID。项目可以具有同一类型的多个工件;它们中的每一个将具有其自己的唯一GUID,但是具有相同的工厂标识符。ArtifactInfo是具有对IArtifact实例的引用以及诸如ArtifactId GUID之类的与工件有关的任何内部使用的信息的简单类。ArtifactCollection的集合是从ReadOnlyCollection<IArtifact>继承来的,并包起来自ArtifactInfoCollection的数据。ArtifactCollection订阅并展示内容更改事件;它还在ArtifactInfo和IArtifact实例之间进行转换。
在此方法中,文本资源可以在两个项目之间拆分,例如,当将工作流特定的代码放在单独的组件中。
对于表现为Visual Studio菜单或上下文菜单的一部分的命令,可以遵循至少两个选项,因为所有用户界面元素可能需要被预编译和安装到Microsoft Windows注册表中,以优化Visual StudioIDE加载。一个选项是定义一些预定义的命令,并取决于活动构件块来更改它们的可见性和文本。另一个选项是定义可以通过构件块插入动态命令集的位置。VisualStudioIDE提供为MRU文件和外部工具引用实现的动态菜单机制。
通过在标题为“替换API列表”的本说明书的结束处列出的API 216接口示出了替换的方法。
参考图1到3,一些实施例提供了具有逻辑处理器110和存储器112的计算机系统102,该存储器由用于通过利用如此处所描述的合成容器132导出/导入来扩展功能以转换协作项目136的电路、固件和/或软件来配置。例如,在某些实施例中,基于浏览器的协作环境项目136配置可与逻辑处理器110通信的存储器112,基于浏览器协作环境项目扩展工件工厂306同样配置存储器,合成容器132内的基于浏览器的协作环境项目扩展工件308同样配置存储器。
在某些实施例中,配置存储器的代码包括被设计成管理合成容器中的至少一些的托管可扩展性框架130。例如,可以利用Microsoft MEF框架130来配置系统。合成容器132可以是通过可扩展性框架130来配置的系统的一部分,可扩展性框架130包括目录、注册表、数据库、查询、或用于在合成容器中定位扩展的其他发现机制。一些可扩展性框架包括属性标记、数据库、或用于将元数据与扩展相关联的另一种机制,以例如在寻找具有指定的特征的扩展时帮助过滤。
在某些实施例中,配置存储器的系统102代码包括基于浏览器的协作环境项目扩展工件工厂的API 216。在一些实施例中,该系统包括配置存储器并且使该系统能够管理基于浏览器的协作环境项目扩展工件308的集合的代码(例如,在基础结构220中),并且该集合在公开上是只读的。在一些实施例中,该系统具有基础结构220代码,该代码配置存储器并使该系统能够将基于浏览器的协作环境项目扩展工件30(如web部件、工作流、和/或映射的文件夹)的集合中的变化的通知给订户。
该系统可包括集成开发环境128,该集成开发环境128配置可与逻辑处理器通信的存储器。在某些实施例中,该系统包括配置存储器的代码(在基础结构220中和/或IDE衬底222中),并且该代码包括专门为促进诸如对基于浏览器的协作环境项目扩展进行的部署、执行、调试、以及修改之类的操作(例如,通过对一个或多个项目扩展工件工厂306和/或一个或多个项目扩展工件308执行这样的操作)的API。
在某些实施例中,存在可与一个或多个处理器110和存储器112进行通信的诸如人类用户I/O设备之类的外围设备106(屏幕、键盘、鼠标、图形输入板、话筒、扬声器、运动传感器等等)。然而,一实施例也可以深嵌入在系统中,以便没有人类用户104直接与该实施例进行交互。软件进程可以是用户104。
在某些实施例中,该系统包括在基于浏览器的协作环境中通过网络连接的多个计算机。网络接口设备可以使用例如诸如分组交换网络接口卡、无线收发机或电话网络接口之类的组件提供对网络108的接入,并将存在于计算机系统中。然而,一实施例也可以通过直接存储器存取、可移动非易失性介质、或其他信息存储-检索和/或传输方法进行通信,或者,计算机系统中的一实施例可以在不与其他计算机系统进行通信的情况下操作。
方法
图4在流程图400中示出了一些方法实施例。在某些实施例中,附图所示出的方法可以,例如,由协作环境134、项目136、可扩展性框架130、以及合成容器132在脚本的控制之下自动地执行,很少或不需要用户输入。除非另外指明,否则也可以部分自动执行并且部分手动执行该方法。在给定实施方式中,方法的零个或更多个所示步骤可以重复,也许使用不同的参数或数据来操作。一实施例中的步骤也可以按照与图4中展示的自顶向下次序不同的次序来执行。步骤可以串行地、以部分重叠的方式、或完全并行地执行。遍历流程图400以指示在方法期间执行各步骤的次序可以随该方法的一次执行到该方法的另一次执行而变化。该流程图遍历次序也可随一个方法实施方式到另一方法实施方式而变化。假定所执行的方法是可操作的并且符合至少一个权利要求,则各步骤还可被省略、组合、重命名、重组、或以其他方式与所示流程分开。
此处提供了帮助示出该技术的各方面的示例,但是在本文内给出的示例并未描述所有可能的实施例。各实施例不仅限于此处所提供的具体实现、排列、显示、特征、方法或情形。给定实施例可包括例如附加的或不同的特征、机制、和/或数据结构,并可以以别的方式偏离此处所提供的示例。
在项目工厂定位步骤402,一实施例定位诸如工厂302之类的协作项目工厂。步骤402可以使用例如注册表、目录或其他机制来完成。
在扩展工厂标识步骤404,一实施例标识诸如扩展工件工厂306之类的协作项目扩展工厂。步骤404可以使用诸如那些用于执行步骤402的机制之类的机制来完成。
在工件创建步骤406,一实施例创建诸如工件308之类的协作项目扩展工件的实例。步骤406可以例如通过调用在步骤404中获取的构造函数来完成。例如,在一特定实施例中,创建步骤406可以创建web部件、工作流或映射的文件夹的实例。
在部署步骤408,一实施例部署项目扩展138(例如,工件308)和/或部署经扩展的项目136。
在执行步骤410,一实施例执行项目扩展138的至少一部分(例如,工件308或工件工厂306)和/或执行经扩展的项目136的至少一部分。
在调试步骤412,一实施例提供为调试项目扩展的至少一部分(例如,工件308或工件工厂306)和/或经扩展的项目136的至少一部分而定制的信息。
在修改步骤414,一实施例接收为修改项目扩展的至少一部分(例如,工件308或工件工厂306)和/或经扩展的项目136的至少一部分而定制的信息。
在清单提供步骤416,一实施例提供标识工件的特征的清单418。在某些实施例中,清单标识SharePoint软件包或特征的属性,这可包括对项目中的其他工件的引用。步骤416可以例如使用包括诸如下列定义等定义的API来完成:
在库创建步骤420,一实施例创建动态链接库文件或其他库文件。在一些配置中,步骤420创建利用自定义动作来配置的类库项目,该自定义动作被设计成至少部分地实现协作项目扩展。
在扩展创建步骤422,一实施例创建协作项目扩展的至少一部分。在一些配置中,步骤422使用利用由步骤420而产生的自定义动作来配置的类库项目,来创建扩展。
在工厂创建步骤424,一实施例为协作项目扩展创建诸如工厂306之类的工厂。在一些配置中,利用出口属性来配置工厂,从而允许工厂在合成容器132内被发现。工厂本身不被导出;组件导出要在合成容器中绑定或发现的特定合同。
在上下文菜单项创建步骤426,一实施例为协作项目扩展创建上下文菜单项428。
在集成测试步骤430,一实施例锻炼项目代码以帮助开发人员测试对协作项目的扩展是否与该协作项目集成,例如,在需要时测试控制是否流向扩展。
在IDE使用步骤432中,使用集成开发环境来帮助调试、修改、或以其他方式锻炼协作项目扩展。
在存储器配置步骤434中,如此处所讨论的,通过工件工厂306、工件308、或以其他方式结合协作项目扩展,来配置存储器112。
在可扩展性框架使用步骤436,使用可扩展性框架130(如MicrosoftMEF框架130),来例如帮助加载、绑定、执行、部署、或以其他方式锻炼协作项目扩展。
下面将参考各实施例更详细地讨论前面的步骤和它们的相互关系。
一些实施例提供了用于在配置联网的计算系统的基于浏览器的协作环境134中开发可扩展项目136的方法。该方法包括定位402协作项目工厂;至少部分地基于协作项目工厂,标识404协作项目扩展工件工厂;以及,至少部分地基于协作项目扩展工件工厂,来在联网的计算系统中的合成容器中创建406协作项目扩展工件的实例。在一个实施例中,例如,基于浏览器的协作环境是SharePoint环境;协作项目工厂是SharePoint项目工厂;协作项目扩展工件工厂是IProjectItem工厂;协作项目扩展工件是IProjectItem(例如,WorkFlow项目项);以及,合成容器是MEF容器(也叫做,组件域)。在某些实施例中,在开发人员环境中(例如,Microsoft VisualStudio环境)中创建406合成容器,而不是在协作环境(例如,SharePoint环境)中创建合成容器。
在某些实施例中,该方法包括一个或多个项目开发生存周期步骤,如部署408包含协作项目扩展工件的实例的协作项目136,执行410这样的协作项目,调试412这样的协作项目,或修改414这样的协作项目。在某些实施例中,该方法提供416特征清单,该特征清单以可由合成容器值解析器使用的格式来指定协作项目扩展工件的至少一个特征。例如,SharePoint项目扩展可以使用IFeatureManifest API接口来与MEF中的其他组件进行交互。
在某些实施例中,开发人员可以通过创建SharePoint项目扩展和/或SharePointExplorer扩展,来扩展Visual Studio中的SharePoint项目和工具。SharePoint项目扩展是被集成到由Visual Studio所提供的SharePoint项目系统中的自定义开发特征,如可以被其他开发人员用来创建特定SharePoint解决方案的项目项,或Solution Explorer中的SharePoint项目项节点的上下文菜单项。如此,开发人员可以创建特定SharePoint解决方案所需的组件,并将这些组件提供给其他开发人员,以使他们可以在Visual Studio中创建这些SharePoint解决方案。同样,开发人员可以创建可以在设计时使用的新Visual Studio特征,如用于特定SharePoint组件的设计器,并将该特征与Solution Explorer中的节点相关联。在某些实施例中,使用底层的Visual Studio项目可扩展性机制来将预备(provision)新设计器与扩展相关联。
当为Visual Studio项目创建扩展以及为SharePoint创建工具时,开发人员可以使用不同的对象模型206、218的API。在EnvDTE.dll、EnvDTE80.dll、以及EnvDTE90.dll组件中定义了Visual Studio的核心自动化对象模型,这些组件提供了在运行时用于自动化Visual Studio项目和IDE的API。Windows SharePoint服务的核心对象模型包括服务器侧模型和客户机侧模型。
SharePoint项目的对象模型以及Visual Studio中的工具利用若干组件定义了SharePoint项目系统和SharePointExplorer的行为。Microsoft.VisualStudio.Tools.SharePoint.dll组件包含用于扩展SharePoint项目系统和SharePointExplorer的API,其中包括实现以创建扩展的API接口以及表示该项目系统和探查器(explorer)中的对象的接口。Microsoft.VisualStudio.Tools.SharePoint.Explorer.Framework.dll组件定义了基类,当创建SharePointExplorer扩展时可以使用该基类。其他组件在Visual Studio中实现SharePoint解决方案的功能,包括项目系统和探查器。这些组件主要包含开发人员不太可能直接与其进行交互的内部类型。
在一个实施例中,为创建SharePoint项目扩展,首先,例如,使用C#或Visual Basic,利用类库模板和诸如CustomAction(自定义动作)之类的名称,创建420新Visual Studio项目。Visual Studio将CustomAction项目添加到Solution Explorer中,并打开默认Class1代码文件。接下来,从项目中删除Class1代码文件,并将三个新代码文件添加到项目中,在此示例中这三个新代码文件名为CustomAction、CustomActionFactory、以及CustomActionMenu。使用Add Reference(添加引用)对话框的.NET选项卡,添加System.ComponentModel.Composition和System.Windows.Forms。卸载该项目,将<ReferenceInclude=″Microsoft.VisualStudio.Tools.SharePoint″/>添加到CustomAction.csproj文件,并重新加载该项目。在CustomAction代码文件中,添加下列代码:
可以理解,此处的自定义动作代码只提供了许多可能的自定义动作之中的一个小示例。在实践中,自定义动作可能执行更多工作。CustomAction类实现Microsoft.VisualStudio.Tools.SharePoint.SharePointProjectItemExtension 接口,该接口在此实施例中是SharePoint项目扩展的一个要求。构造函数接收Microsoft.VisualStudio.Tools.SharePoint.ISharePointProjectItem对象,并将它存储在字段中以供稍后使用。此对象提供对通过表示扩展的项目项来展示的事件和功能的访问。可以通过使用Project(项目)属性来访问项目本身的事件和功能,Project属性返回Microsoft.VisualStudio.Tools.SharePoint.ISharePointProiect对象。该类处理PropertyChanged(属性更改)事件。当用户更改包含扩展的项目的属性时,事件处理程序显示一消息。可以处理ISharePointProjectItem和ISharePointProject对象的此事件及其他事件,以当用户在运行时执行某些任务时运行代码。
接下来,在此实施例中,为SharePoint项目扩展创建424工厂类。将CustomActionFactory代码文件内容替换为下列代码:
CustomActionFactory类是Visual Studio用来发现和创建扩展的工厂类。此工厂类实现Microsoft.VisualStudio.Tools.SharePoint.ISharePointProjectItemExtensionFactory接口。具体而言,ISharePointProjectItemExtensionFactory.CreateProjectItemExtension方法返回项目扩展类的实例。此工厂类具有System.ComponentModel.Composition.ExportAttribute,该接口指定将由Visual Studio MEF在运行时作为SharePoint项目扩展来发现和实例化的类型。在此实施例中,所有项目扩展指定ISharePointProjectItemExtensionFactory类型。ExportAttribute是对Microsoft.NET框架4.0的添加。此工厂类具有标识项目扩展的名称的Microsoft.VisualStudio.Tools.SharePoint.SharePointProjectItemExtensionAttribute。在此实施例中,此字符串应该与项目扩展的.artx文件中的Artifact元素的ArtifactType属性的值相匹配。
接下来,在此实施例中,通过将CustomActionMenu代码文件中的代码替换为下列代码来创建426一个类,该类定义Solution Explorer中的项目扩展的上下文菜单项428:
CustomActionMenu类具有此实施例中的所有扩展所需的特征,这些特征将上下文菜单项添加到Solution Explorer中的SharePoint项目项中。此CustomActionMenu类实现Microsoft.VisualStudio.Tools.SharePoint.ISharePointProjectItemMenuExtension接口。此工厂类具有ExportAttribute,它指定将由Visual Studio在运行时作为SharePoint项目项的上下文菜单而发现和实例化的类型。SharePoint项目项的上下文菜单指定ISharePointProjectItemMenuExtension类型。此CustomActionMenu类具有Microsoft.VisualStudio.Tools.SharePoint.SharePointProjectItemMenuExtensionAttribute。此属性的参数标识上下文菜单项将被添加到其中的项目项。当将菜单项添加到自定义项目项中时,被传递到此属性的字符串应该匹配被传递到工厂类上的SharePointProjectItemExtensionAttribute的字符串。
在此实施例中,为构建和部署SharePoint项目扩展,首先构建项目并验证没有错误。然后,将CustomAction.dll组件从项目的连编文件夹复制到适当的IDE扩展文件夹以部署扩展,这类似于构建和部署其他VisualStudio项目136。
为在没有打开CustomAction项目的Visual Studio的一个实例中测试430项目扩展的集成,创建用于调试的带有本地站点的URL的新SharePoint项目,添加CustomAction项,并验证运行CustomAction项目的Visual Studio的另一实例中的代码在以前在CreateProjectItemExtension方法中设置的断点处停止。继续,并验证由CustomAction构造函数创建的消息框被显示。在需要时继续验证扩展的额外的功能,例如验证由CustomAction类中定义的PropertyChanged事件处理程序所显示的消息框的存在。扩展可以处理此事件及其他事件,以当开发人员以某些方式修改项目或项时运行代码。
已配置介质
一些实施例包括已配置的计算机可读存储介质114,其是存储器112的一个示例。存储器122可包括盘(磁盘、光盘或其他)、RAM、EEPROM或其他ROM、和/或其他可配置存储器。已配置存储介质可以特别地是诸如CD、DVD或闪存之类的可移动存储介质114。可以是可移动或不可移动并且可以是易失性或非易失性的通用存储器112可被配置成使用数据118和指令116形式的从可移动介质114和/或诸如网络连接等另一源读取的诸如扩展工件工厂306、工件308、和可扩展性API 216等项目来形成已配置介质的实施例。已配置存储器112能够使计算机系统执行用于通过如此处所公开的值解析来变换数据的方法步骤。图1到4因而帮助示出已配置的存储介质实施方式和方法实施例,以及系统和方法实施例。具体而言,图3和/或图4中示出的各方法步骤中的任一步骤或本文以其他方式教导的任一步骤可被用来帮助配置存储介质来形成已配置的介质实施例。
一些实施例提供了利用用于执行用于开发基于浏览器的协作环境项目扩展的方法的数据118和指令116来配置的计算机可读介质。该方法包括创建420用自定义动作配置的类库项目;创建422表示自定义动作的基于浏览器的协作环境项目扩展工件;以及,为项目扩展工件创建424工厂类,该工厂类是由来自合成容器的“出口”的出口属性来配置的。这些步骤可以,例如,如在前面的示例中所讨论的,使用SharePoint和Visual Studio技术来完成的。自定义动作,例如,是作为项目的一部分开发的;项目包含或实现自定义动作。这样的自定义动作只是可以扩展SharePoint环境的外观和行为的SharePoint工件或元素中的一个。如上文所描述的,项目可以例如利用自定义动作的代码、自定义动作工厂的代码、以及自定义动作菜单的代码来配置。如所讨论的,可为基于浏览器的协作环境解决方案探查器中的项目扩展工件创建426上下文菜单项。该方法可包括构建基于浏览器的协作环境项目扩展并在联网的计算系统中部署基于浏览器的协作环境项目扩展,并且也如讨论的,以及测试基于浏览器的协作环境项目扩展与基础项目的集成。该方法可包括借助于配置计算系统的诸如VisualStudio环境之类的集成开发环境执行的创建步骤。
结论
虽然在此将具体实施方式明确示出并描述为方法、已配置介质,或系统,但可以明白,一种类型的实施方式的讨论一般也延及其他实施方式类型。例如,结合图4的方法描述还帮助描述已配置的介质,并帮助描述如结合其他附图讨论的那些系统和制品等系统和制品的操作。对一个实施例的限制也不一定适用于另一个实施例。具体而言,方法不一定需要限于在讨论诸如经配置的介质等系统或制品时呈现的数据结构和安排。
不是图中所示出的每一项都需要存在于每个实施例中。相反,实施例可以包含图中未显式地示出的项。虽然一些可能性在此处通过具体示例在文本和附图中示出,但是各实施例可以偏离这些示例。例如,一示例的具体特征可以被省略、重命名、以不同的方式分组、重复、不同地以硬件和/或软件实例化,或是在两个或更多示例中出现的特征的混合。在某些实施例中,在一个位置处示出的功能也可以在不同的位置处提供。
通过附图标记参考了附图。在附图或文本中与给定附图标记相关联的措词中的任何显而易见的不一致性应该被理解为仅仅时拓宽该标记所引用的内容的范围。
如此处所使用的,诸如“一”和“该”等术语包括了所指示的项目或步骤中的一个或多个。具体而言,在权利要求书中,对一个项的引用一般表示至少一个这样的项存在,并且对一个步骤的引用表示执行该步骤的至少一个实例。
标题是仅出于方便起见的;关于给定话题的信息可在其标题指示该话题的节之外找到。
所提出的所有权利要求都是本说明书的一部分。
尽管在附图中示出了并在上文描述了示例性实施例,但是,对于本领域的技术人员来说显而易见的是,在不偏离权利要求书中所阐述的原理和概念的情况下,可以进行很多修改。尽管已经用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。不一定在给定定义或示例中标识的每一个手段或方面都在每个实施例中存在或使用。相反,所描述的具体特征和动作是作为供当实现权利要求书时考虑的示例来公开的。
落入权利要求书的等效方案的含义和范围内的所有改变应在法律允许的最大可能的范围内被权利要求书的范围所涵盖。
替换API列表
Claims (20)
1.一种用于在配置联网的计算系统的基于浏览器的协作环境中开发可扩展项目的方法,所述方法包括下列步骤:
定位(402)协作项目工厂;
至少部分地基于所述协作项目工厂,标识(404)协作项目扩展工件工厂;以及
至少部分地基于所述协作项目扩展工件工厂,在所述联网的计算系统中的合成容器中创建(406)协作项目扩展工件的实例。
2.如权利要求1所述的方法,其特征在于,还包括下列项目开发生存周期步骤中的至少一个:
部署(408)包含所述协作项目扩展工件的实例的协作项目;
执行(410)包含所述协作项目扩展工件的实例的协作项目;
调试(412)包含所述协作项目扩展工件的实例的协作项目;
修改(414)包含所述协作项目扩展工件的实例的协作项目。
3.如权利要求1所述的方法,其特征在于,所述创建(406)步骤创建下列各项中的至少一个的实例:web部件、工作流、映射的文件夹。
4.如权利要求1所述的方法,其特征在于,还包括提供(416)特征清单,所述特征清单以合成容器值解析器可使用的格式来指定所述协作项目扩展工件的至少一个特征。
5.一种配置有用于执行用于开发基于浏览器的协作环境项目扩展的方法的数据和指令的计算机可读介质(114),所述方法包括下列步骤:
创建(420)利用自定义动作来配置的类库项目;
创建(422)表示所述自定义动作的基于浏览器的协作环境项目扩展工件;以及
为所述项目扩展工件创建(424)工厂类,所述工厂类配置有出口属性。
6.如权利要求5所述的已配置介质,其特征在于,创建利用自定义动作配置的类库项目包括利用自定义动作的代码、自定义动作工厂的代码、以及自定义动作菜单的代码来配置(434)所述类库项目。
7.如权利要求5所述的已配置介质,其特征在于,所述方法还包括在基于浏览器的协作环境解决方案探查器中创建(426)所述项目扩展的上下文菜单项。
8.如权利要求5所述的已配置介质,其特征在于,所述方法还包括构建所述基于浏览器的协作环境项目扩展,并在联网的计算系统中部署(408)所述基于浏览器的协作环境项目扩展。
9.如权利要求5所述的已配置介质,其特征在于,所述方法还包括测试(430)所述基于浏览器的协作环境项目扩展与基础项目的集成。
10.如权利要求5所述的已配置介质,其特征在于,所述各创建步骤中的至少一个是利用来自配置计算系统的集成开发环境(128)的协助来执行的。
11.一种计算机系统,包括:
逻辑处理器(110);
配置可与所述逻辑处理器通信的存储器(112)的基于浏览器的协作环境项目(136);
配置可与所述逻辑处理器通信的存储器(112)的基于浏览器的协作环境项目扩展工件工厂(306);以及
配置可与所述逻辑处理器通信的存储器的合成容器内的基于浏览器的协作环境项目扩展工件(308)。
12.如权利要求11所述的系统,其特征在于,所述系统包括配置所述存储器的代码,包括基于浏览器的协作环境项目扩展工件工厂的API(216)。
13.如权利要求11所述的系统,其特征在于,所述系统包括配置所述存储器使之能够管理基于浏览器的协作环境项目扩展工件(308)的集合的代码,其中所述集合在公开上是只读的。
14.如权利要求11所述的系统,其特征在于,所述系统包括配置所述存储器使之能够将基于浏览器的协作环境项目扩展工件(308)的集合中的变化通知给订户的代码。
15.如权利要求11所述的系统,其特征在于,所述系统包括下列基于浏览器的协作环境项目扩展工件(308)中的至少一个:web部件、工作流、映射的文件夹。
16.如权利要求11所述的系统,其特征在于,所述系统包括可扩展性框架(130),包括用于在合成容器中定位扩展的发现机制。
17.如权利要求11所述的系统,其特征在于,所述系统包括可扩展性框架(130),包括用于将元数据与扩展相关联的机制。
18.如权利要求11所述的系统,其特征在于,所述系统包括在基于浏览器的协作环境(134)中通过网络连接的多个计算机。
19.如权利要求11所述的系统,其特征在于,所述系统还包括集成开发环境(128),所述集成开发环境(128)配置可与所述逻辑处理器通信的存储器。
20.如权利要求11所述的系统,其特征在于,所述系统包括配置所述存储器的代码,包括专门设计来促进下列各项中的至少一个的API(216):
部署基于浏览器的协作环境项目扩展;
执行基于浏览器的协作环境项目扩展;
调试基于浏览器的协作环境项目扩展;
修改基于浏览器的协作环境项目扩展。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/356,607 | 2009-01-21 | ||
US12/356,607 US20100185954A1 (en) | 2009-01-21 | 2009-01-21 | Collaborative Environment Project Extensibility with Composition Containers |
PCT/US2009/069325 WO2010090687A2 (en) | 2009-01-21 | 2009-12-22 | Collaborative environment project extensibility with composition containers |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102292736A true CN102292736A (zh) | 2011-12-21 |
Family
ID=42337943
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801553682A Pending CN102292736A (zh) | 2009-01-21 | 2009-12-22 | 利用合成容器的协作环境项目可扩展性 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20100185954A1 (zh) |
EP (1) | EP2389634A4 (zh) |
CN (1) | CN102292736A (zh) |
WO (1) | WO2010090687A2 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309404A (zh) * | 2019-12-19 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种客户端框架的系统运行方法 |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100287525A1 (en) * | 2009-05-07 | 2010-11-11 | Microsoft Corporation | Extension through visual reflection |
US20110239117A1 (en) * | 2010-03-25 | 2011-09-29 | Microsoft Corporation | Natural User Interaction in Shared Resource Computing Environment |
US20110239133A1 (en) * | 2010-03-29 | 2011-09-29 | Microsoft Corporation | Shared resource computing collaboration sessions management |
US20110246967A1 (en) * | 2010-03-30 | 2011-10-06 | Garavaglia Jr Louis Thomas | Methods and systems for automation framework extensibility |
US8892628B2 (en) * | 2010-04-01 | 2014-11-18 | Microsoft Corporation | Administrative interface for managing shared resources |
CN103069424A (zh) * | 2010-08-19 | 2013-04-24 | 皇家飞利浦电子股份有限公司 | 可扩展的决策支持系统 |
US9038018B2 (en) | 2010-10-08 | 2015-05-19 | Microsoft Technology Licensing, Llc | Integrating software components |
US8850399B2 (en) | 2010-11-15 | 2014-09-30 | Microsoft Corporation | Software development using code retraction and background warm up |
US8856736B2 (en) | 2011-05-10 | 2014-10-07 | Microsoft Corporation | Web service proxy interface augmentation |
CH705457A1 (de) * | 2011-08-31 | 2013-03-15 | Ferag Ag | Generieren einer Benutzerschnittstelle auf einer Anzeige. |
US9766906B2 (en) | 2011-12-29 | 2017-09-19 | International Business Machines Corporation | Efficient sharing of artifacts between collaboration applications |
US20140129532A1 (en) * | 2012-11-08 | 2014-05-08 | Microsoft Corporation | Packaging, storing and distributing guidance packages |
US9158518B2 (en) | 2013-03-11 | 2015-10-13 | Blackberry Limited | Collaborative application development environment using a connected device |
US9773264B2 (en) | 2013-03-26 | 2017-09-26 | Blackberry Limited | Method for providing composite user interface controls and an online storefront for same |
US9047325B2 (en) * | 2013-04-08 | 2015-06-02 | International Business Machines Corporation | Modularizing complex XML data for generation and extraction |
US9495418B2 (en) | 2013-08-07 | 2016-11-15 | International Business Machines Corporation | Scalable acceleration of database query operations |
US9619499B2 (en) | 2013-08-07 | 2017-04-11 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm |
US9251218B2 (en) | 2013-08-07 | 2016-02-02 | International Business Machines Corporation | Tunable hardware sort engine for performing composite sorting algorithms |
US9830354B2 (en) * | 2013-08-07 | 2017-11-28 | International Business Machines Corporation | Accelerating multiple query processing operations |
US10372844B2 (en) | 2013-10-28 | 2019-08-06 | Microsoft Technology Licensing, Llc | Expressing extensions with customized design time behavior |
US9170786B1 (en) * | 2013-12-20 | 2015-10-27 | Emc Corporation | Composable context menus |
US10466872B1 (en) | 2013-12-20 | 2019-11-05 | Open Text Corporation | Composable events for dynamic user interface composition |
US9912824B2 (en) | 2014-02-10 | 2018-03-06 | Xerox Corporation | Triggering workflows from a multifunction device |
GB201407539D0 (en) * | 2014-04-29 | 2014-06-11 | Easysharepoint Ltd | Web site deployment system and method |
US20160148157A1 (en) * | 2014-11-25 | 2016-05-26 | Sanju Walia | Managing activities in an organization |
US10310813B2 (en) | 2014-12-29 | 2019-06-04 | International Business Machines Corporation | Hardware implementation of a tournament tree sort algorithm using an external memory |
US10268455B2 (en) | 2016-05-20 | 2019-04-23 | Microsoft Technology Licensing, Llc | Augmenting an original class with an augmenting class |
US11115476B1 (en) * | 2020-04-22 | 2021-09-07 | Drb Systems, Llc | System for and method of controlling operations of a car wash |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084138A1 (en) * | 2001-10-24 | 2003-05-01 | Groove Networks, Inc. | Method and apparatus for managing software component downloads and updates |
US20060026251A1 (en) * | 2004-07-27 | 2006-02-02 | International Business Machines Corporation | Method, system and program product for annotating a development artifact |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6349408B1 (en) * | 1998-03-23 | 2002-02-19 | Sun Microsystems, Inc. | Techniques for implementing a framework for extensible applications |
US7080383B1 (en) * | 1999-01-29 | 2006-07-18 | Microsoft Corporation | System and method for extending functionality of a class object |
US6959268B1 (en) * | 1999-09-21 | 2005-10-25 | Lockheed Martin Corporation | Product catalog for use in a collaborative engineering environment and method for using same |
US20020129106A1 (en) * | 2001-03-12 | 2002-09-12 | Surgency, Inc. | User-extensible system for manipulating information in a collaborative environment |
US20050089023A1 (en) * | 2003-10-23 | 2005-04-28 | Microsoft Corporation | Architecture for an extensible real-time collaboration system |
JP2007536634A (ja) * | 2004-05-04 | 2007-12-13 | フィッシャー−ローズマウント・システムズ・インコーポレーテッド | プロセス制御システムのためのサービス指向型アーキテクチャ |
US7496886B2 (en) * | 2004-09-30 | 2009-02-24 | Microsoft Corporation | Method and system for providing cross project commitments |
US7631006B2 (en) * | 2005-03-25 | 2009-12-08 | Microsoft Corporation | Managing team software projects using virtual containers |
US20060288332A1 (en) * | 2005-06-21 | 2006-12-21 | Microsoft Corporation | Workflow debugger |
US7765485B2 (en) * | 2006-01-30 | 2010-07-27 | International Business Machines Corporation | Extensible user interface framework for a componentized application environment |
WO2007090161A2 (en) * | 2006-01-31 | 2007-08-09 | Captaris, Inc. | Workflow applications |
US20080134298A1 (en) * | 2006-12-04 | 2008-06-05 | Microsoft Corporation | Integrated development environment with community integration |
US8151200B2 (en) * | 2007-11-15 | 2012-04-03 | Target Brands, Inc. | Sensitive information handling on a collaboration system |
-
2009
- 2009-01-21 US US12/356,607 patent/US20100185954A1/en not_active Abandoned
- 2009-12-22 EP EP09839832A patent/EP2389634A4/en not_active Withdrawn
- 2009-12-22 CN CN2009801553682A patent/CN102292736A/zh active Pending
- 2009-12-22 WO PCT/US2009/069325 patent/WO2010090687A2/en active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030084138A1 (en) * | 2001-10-24 | 2003-05-01 | Groove Networks, Inc. | Method and apparatus for managing software component downloads and updates |
US20060026251A1 (en) * | 2004-07-27 | 2006-02-02 | International Business Machines Corporation | Method, system and program product for annotating a development artifact |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111309404A (zh) * | 2019-12-19 | 2020-06-19 | 上海金融期货信息技术有限公司 | 一种客户端框架的系统运行方法 |
Also Published As
Publication number | Publication date |
---|---|
EP2389634A2 (en) | 2011-11-30 |
WO2010090687A3 (en) | 2010-09-30 |
US20100185954A1 (en) | 2010-07-22 |
EP2389634A4 (en) | 2012-08-08 |
WO2010090687A2 (en) | 2010-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102292736A (zh) | 利用合成容器的协作环境项目可扩展性 | |
US10019239B2 (en) | Systems and methods for enhancing software products through integrated development environment running on host computer | |
CN102402451B (zh) | 用户定义类型的编译时边界检查 | |
CN103718155A (zh) | 运行时系统 | |
Pinto et al. | Specifying aspect-oriented architectures in AO-ADL | |
US10489167B2 (en) | Dynamically binding data in an application | |
Qian | Software architecture and design illuminated | |
US20120060141A1 (en) | Integrated environment for software design and implementation | |
CN102257474B (zh) | 多个运行时容器共享的值解析 | |
Speth et al. | Gropius—a tool for managing cross-component issues | |
Nagel et al. | Professional C# 2012 and. Net 4.5 | |
Wurster et al. | Tosca lightning: An integrated toolchain for transforming tosca light into production-ready deployment technologies | |
Wenger et al. | Transformation of IEC 61131-3 to IEC 61499 based on a model driven development approach | |
Khan et al. | A study: selection of model metamodel and SPL tools for the verification of software product lines | |
de Carvalho Silva et al. | A platform of scientific workflows for orchestration of parallel components in a cloud of high performance computing applications | |
US8924924B2 (en) | Representing the structure of a data format using a class-based representation | |
Hassane et al. | Process enactment with traceability support for nfv systems | |
Merlin et al. | Integrating the E4J editor to the JGOOSE tool. | |
Sheldon et al. | Professional visual basic 2010 and. net 4 | |
Morris | A framework for XML schema naming and design rules development tools | |
Ahmed et al. | Extending unified modeling language to support aspect-oriented software development | |
Corradini et al. | Supporting multi-layer modeling in BPMN collaborations | |
Heider et al. | Evolution-driven trace acquisition in eclipse-based product line workspaces | |
US11526366B2 (en) | Dynamically binding data in an application | |
Hamann et al. | Towards supporting multiple execution environments for uml/ocl models at runtime |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20111221 |