CN112189187A - 统一平台的可扩展性 - Google Patents
统一平台的可扩展性 Download PDFInfo
- Publication number
- CN112189187A CN112189187A CN201980034803.XA CN201980034803A CN112189187A CN 112189187 A CN112189187 A CN 112189187A CN 201980034803 A CN201980034803 A CN 201980034803A CN 112189187 A CN112189187 A CN 112189187A
- Authority
- CN
- China
- Prior art keywords
- framework
- software development
- package
- application
- platform
- 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.)
- Granted
Links
- 238000003860 storage Methods 0.000 claims description 59
- 238000000034 method Methods 0.000 claims description 34
- 238000004891 communication Methods 0.000 claims description 25
- 238000011161 development Methods 0.000 claims description 25
- 238000009434 installation Methods 0.000 claims description 14
- 230000001960 triggered effect Effects 0.000 claims description 5
- 230000004044 response Effects 0.000 claims description 4
- 230000008569 process Effects 0.000 description 12
- 238000004366 reverse phase liquid chromatography Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 8
- 230000009466 transformation Effects 0.000 description 6
- 101000931570 Dictyostelium discoideum Farnesyl diphosphate synthase Proteins 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000004806 packaging method and process Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 238000000844 transformation Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 101000608653 Homo sapiens UbiA prenyltransferase domain-containing protein 1 Proteins 0.000 description 1
- 201000004224 Schnyder corneal dystrophy Diseases 0.000 description 1
- 102100039547 UbiA prenyltransferase domain-containing protein 1 Human genes 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000008021 deposition Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 239000000344 soap Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 229920000638 styrene acrylonitrile Polymers 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- 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/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/47—Retargetable compilers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- 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/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- 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/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
提供了接口,用于接收软件开发工具箱运行时二进制文件,软件开发工具箱运行时二进制文件被配置用于标准化平台;接收驱动框架包,该驱动框架包基于软件开发工具箱被生成,并被配置为在一组约束下支持可扩展性;以及与第一方框架进行交互,并允许第三方框架访问软件开发工具箱运行时二进制文件,并允许应用使用第三方框架。
Description
背景技术
如今,计算设备具有越来越多的已附接和已安装的***设备。为了对接到这样的***设备,计算设备通常运行设备驱动以操作或控制每种类型的设备。驱动是可以扩展操作***以启用对操作***本机不支持的设备的支持的程序。驱动与它们在其上执行的操作***紧密集成在一起。例如驱动通常共享与操作***相同的地址空间,并使用与操作***相同的原语。因此,每个驱动都像操作***的任意其他部分一样,会影响整个计算设备和用户体验。例如当内核崩溃时,在主机计算设备上执行的所有其他程序通常也会崩溃。
驱动开发通常解决许多问题,这些问题可能使开发可靠和高效地执行的驱动变得困难。此外,某些驱动可能会遇到无法升级的沉积问题。
相对于这些和其他技术挑战,提出了本文进行的公开。
发明内容
公开了用于以可扩展的方式支持驱动和其他应用的创建和执行的技术。在各种实施例中,描述了一种框架,该框架支持硬件提供方软件开发工具箱(SDK)运行时二进制文件的开发、打包(package)和分发。在一个实施例中,公开了一种驱动框架包(DFP),其支持使用限定的接口对SDK和其他应用的访问。驱动框架包可以是用于硬件提供方SDK的一种类型的包,这些SDK经由应用存储库或存储(在此通常称为“存储”)进行操作和发布。驱动框架包可以被配置为以在驱动和应用中提供安全性、长期性能以及可靠性的方式支持硬件提供方的扩展性。
本文公开的框架允许将驱动的可扩展性部分与驱动的其余部分分离,使得它们两者均可以独立地被更新。利用此模型,该框架可以经由存储访问,并且可以使存储应用的好处适用于其他框架。该框架可以通过支持使用标准接口对驱动和应用的开发,来增加驱动和应用的可靠性以及性能。反过来,更可靠、性能更高的驱动和应用可能会导致性能更好的计算设备,其利用更少的处理器周期、更少的存储器和更少的功率。还可以通过所公开的主题的实现来实现本文未具体提及的其他技术益处。
开发环境,诸如用于操作***的开发环境,可以实现平台,诸如通用Windows平台(UWP),该平台显露应用编程接口(API),以支持可以在多种类型的设备上运行的通用应用的开发。在某些情况下,通用应用可以被配置为在通过定义的通道来包含代码及其依赖关系的容器或其他包中运行。但是,在容器中运行的应用可能无法访问硬件组件。例如,驱动和SDK可能会被写入无法经由平台访问的位置。例如,驱动的动态链接库(DLL)可能会被写入到无法经由平台访问的区域。在一个实施例中,驱动框架包可以通过存储/存储库发布,并且可以被配置为允许对应用的可访问性。这样,通用应用可以经由存储来访问第三方递送框架。
为了实现上述一些或全部技术益处,本文公开的框架支持与该经由存储的框架兼容的SDK的创建和执行。该框架可以与操作***的执行一起执行。在某些实现中,框架提供的功能也可以直接合并到操作***中。
通过更新驱动开发生态***以实现驱动设计原理并在驱动包外部驱动框架的组件化,以便可以独立更新并经由存储进行递送,可以提供更安全的更新体验,同时允许***提供方根据最新的操作***和驱动将其***保持最新。在一个实施例中,驱动和其他应用可以通过使应用在容器中运行并且需要遵守一组约束来与框架符合,该组约束限制可能导致诸如***故障的***问题的行为。此外,约束可能允许应用始终可更新,确保应用位于预期位置,以及预期文件和二进制文件位于预期位置,并且易于升级。
如所讨论的,当应用在容器中运行时的一个问题是它们可能无法直接与驱动二进制文件进行通信。将SDK二进制文件发布为框架允许应用将它们声明为可选依赖关系,以便框架在可用的情况下被使用。SDK可以是硬件提供方可以发布的工具库,用于定义如何与其组件进行通信。在一个实施例中,驱动框架包可以包括SDK,允许SDK可被访问以存储应用。在一个实施例中,驱动框架包可以用于实现经由应用存储的通信,其被配置为在驱动/应用、硬件组件和其他方之间提供标准接口。例如,驱动框架包可以是通过存储发布的存储实体,并且使用该框架的任意驱动或应用都可以与驱动框架包进行通信。驱动框架包可以使用规定的方法与***软件进行通信。这样,使用框架的应用可以以可扩展的方式访问SDK。
在一个实施例中,存储可以被配置为实现中间层,该中间层向SDK和第一方框架显露接口,从而允许第三方框架访问SDK并允许框架应用使用那些第三方框架。因此,驱动可以触发在存储中对框架的安装,此后框架应用可以像第一方框架那样利用第三方框架。以这种方式,可以以遵循一组准则的受控方式来实现对操作***的扩展。此外,仅当相关联的硬件存在于特定***中时才需要安装框架,而不是无论相关联的框架是否已被安装均使相关联的应用运行。
应当理解,上述主题可以被实现为计算机控制的设备、计算机实现的方法、计算设备或诸如计算机可读介质的制品。通过阅读以下详细说明并查看相关附图,这些和各种其他特征将变得显而易见。
提供本发明内容以简化形式介绍所公开技术的一些方面的简要描述,以下在具体实施方式中进一步描述。本发明内容既不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开的任意部分中指出的任意或所有缺点的实现。
附图说明
图1是示出了本文所公开的框架的各方面的计算机软件架构图;
图2是示出了如本文所公开的驱动框架包的各方面的图;
图3是示出了如本文所公开的SDK和框架的各方面的图;
图4是示出了根据本公开的示例过程的流程图;
图5是计算机架构图,其示出了用于计算设备的示意性计算机硬件和软件架构,该计算设备可以执行诸如关于图1-4所描述的驱动模块框架和相关联的模块;
图6是示出了可以在其中实现所公开技术的各方面的分布式计算环境的网络图。
具体实施方式
下面的详细描述针对一种框架,该框架支持驱动和应用以及相关联的SDK的创建和执行。尽管本文所述的主题是在驱动和应用框架以及操作***的一般上下文中介绍的,但是本领域技术人员将认识到,可以结合其他类型的计算***和应用来执行其他实现。本领域技术人员还将认识到,本文描述的主题可以与其他计算机***配置一起实践,包括手持式设备、多处理器***、基于微处理器的或可编程的消费电子产品、嵌入在设备中的计算或处理***(诸如可穿戴计算设备、汽车、家庭自动化等)、小型计算机、大型计算机等。
在下面的详细描述中,对构成其一部分的附图进行了参考,并且通过图示的方式示出了特定的配置或示例。现在参考附图,其中贯穿若干个附图,类似的附图标记表示类似的元素,将描述支持可靠和高效的驱动和应用以及相关联的SDK的创建和执行的框架的各个方面。
图1示出了示例计算环境,在其中可以实现本文描述的实施例。图1示出了驱动102a和102b(其在本文中可单独称为“驱动(diver)102”或复数形式称为“驱动(divers)102”)。可以经由通信网络130将驱动发送到存储140。存储140可以进一步向第三方实体110、***API 120(例如Win32)和统一平台150显露(expose)接口。通信网络130例如可以是链接网络的公共可访问网络,并且可以由诸如因特网的各种实体进行操作。在其他实施例中,通信网络130可以是私有网络,诸如公众完全或部分不可访问的公司网络。第三方实体110可以执行一个或多个计算设备。
本文公开的技术的特定实现是取决于计算设备的性能和其他要求的选择问题。因此,本文描述的逻辑操作被不同地称为状态、操作、结构装置、动作或模块。这些状态、操作、结构设备、动作和模块。可以以硬件、软件、固件、专用数字逻辑及其任意组合来实现。应当理解,可以执行比图中所示和本文描述的更多或更少的操作。这些操作也可以以与本文描述的顺序不同的顺序执行。
本文描述的是用于开发、打包和分发用于经由存储实现的通用平台的硬件提供方SDK运行时二进制文件的机制。SDK可以提供一个或多个服务、功能、内容或能力,这些服务、功能、内容或能力可以由安装了SDK的软件应用请求。在一些实施例中,可以实现驱动框架包(DFP),其可以是为提供方(provider)SDK生成的一种存储包。DFP可以被配置为以遵循***提供方建立的标准的方式,使提供方能够灵活扩展。例如可以实现标准以提供安全性、性能和可靠性。图3是示出在一些实施例中的SDK和UWP的各方面的图。应用代码310可以是经验证与存储或存储库兼容的独立软件供应方(ISV)代码。这样的代码在本文中可以被称为存储兼容或简单地称为兼容。ISV可以针对由SDK标头定义的API来开发代码,并导入SDK库或经由运行时元数据315。应用不执行任意平台检查(ARM与x86等),并且能够正常处置故障。SDK库或运行时元数据315和SDK Shim DLL 320可以是IHV应用代码,并且可以是存储兼容的。
ISV可以经由SDK库直接链接到SDK Shim DLL 320,或者使用运行时来间接地加载运行时类。不需要延迟加载声明。SDK Shim DLL 320可以是瘦转发器/转换器API。它可能会延迟加载SDK中间件DLL,并且在找不到它时可能会优雅地(gracefully)失败。这可能在应用包图中,因此未验证这些调用是否是存储兼容。
SDK中间件DLL 330可以使用RPC、输入/输出控制代码(IOCTL)或API来与驱动组件进行通信。这些API可能是存储兼容的,因此无需附加件。SDK中间件DLL 330可以是IHV框架包代码,并且可以是存储兼容的。
驱动、服务、外部进程340可以是不存储兼容的IHV平台代码。SDK中间件DLL 330与驱动、服务、外部进程340之间可能存在存储边界检查。
一些SDK支持硬件,而另一些SDK提供针对硬件(诸如GPU)优化的代码。SDK可能还具有不同的架构,其中一些SDK与服务通信,而另一些则直接与驱动通信或经由操作***间接通信。这些差异可能会影响SDK的实现、它们与应用的集成方式、版本化方式以及部署方式。图2中说明了一些示例架构。在硬件支持模型中,应用和应用内库完全是存储兼容的。从应用到驱动的通信可以直接使用API执行,并且可能需要自定义能力。对于仅DFP,应用和应用内库可能完全是存储兼容的。DFP加载到应用进程中,并且应是存储兼容的。来自DFP的通信类似于硬件支持模型,并且需要自定义能力。对于具有服务的DFP,应用和应用内库必须完全是存储兼容的。DFP加载到应用流程中,并且可能与存储兼容。来自DFP的通信类似于硬件支持模型,并使用RPC。
可以实现两种内核类型的SDK。一种类型可能是启用硬件的SDK,它向应用显露了独特的硬件能力。例如硬件提供方可以经由SDK在设备上显露API,以使得设备制造商可以构建自定义硬件支持应用。第二种类型是硬件优化的SDK,它通常可以是硬件提供方针对例如GPU的其硬件进行了优化的工业(industry)SDK。多个硬件提供方可能为其自己的硬件提供相同的工业SDK,例如OpenCL。
取决于SDK运行时二进制文件的详细信息,它们可以直接与驱动通信,也可以经由部署在驱动包或与驱动通信的操作***组件中的服务间接通信。与应用进程外部的***级组件进行通信可以提供有用的能力,并且可以按照维护本文讨论的标准的方式来提供。
对于与驱动进行通信的SDK运行时,运行时可以使用API来打开自定义设备并声明自定义能力,例如docs.microsoft.com网络中所述。对于通过诸如RPC的远程调用与服务进行通信的应用,这些应用可以具有开放连接或受限连接。在开放式RPC通信中,硬件提供方可以在其服务上打开RPC端点,因此没有访问控制列表(ACL)限制。这样,提供方可以使用SDK,而无需与硬件提供方进行接合(engage)。在受限RPC通信的情况下,硬件提供方可以修改ACL,以允许服务上的RPC端点仅能访问声明了必要的自定义能力的应用。在某些实施例中,应用可以利用自定义能力来保护RPC管道。
在一些实施例中,取决于硬件提供方如何处置其运行时二进制文件的代码分发和版本控制以及运行时与驱动之间的耦合有多紧密,可以提供不同的扩展机制。应用可以直接在平台应用中分发SDK组件,运行时二进制文件也可以在DFP中分发。无论哪种情况,SDK运行时二进制文件都可以从平台存储被分发。
不管如何实现SDK,以下一般要求都可以应用于平台SDK:
1.平台应用的SDK运行时二进制文件可以与平台存储兼容,并已利用认证工具箱进行了验证。
2.应用可以从应用包或存储框架包内仅加载运行时二进制文件。应用可以不从其他来源加载DLL,诸如与驱动一起部署的来源。
3.驱动组件符合本文描述的驱动开发原理。
4.由硬件提供方SDK向应用显露的API合同是版本控制的、可恢复的和向下兼容的。
5.SDK提供了一种合理的回退机制来解决***上没有驱动框架包或硬件的问题。
一种类型的硬件提供方SDK是运行时二进制文件被直接包括在应用中的SDK。在这种情况下,SDK是自包含的,并且与驱动没有版本依赖关系。交付(ship)应用后可能没有机制可以更新运行时二进制文件,并且必须在驱动中保持兼容性。
对于驱动框架包,硬件提供方SDK的运行时二进制文件可以被包含在SDK定制类型的存储包中,该存储包可以被称为框架包(FXP)。另外,可以提供捆绑到应用中的库。在这种场景中,应用内硬件提供方SDK可以根据需要更新运行时二进制文件。SDK可以使用硬件提供方SDK维护与应用的API合同,以维护应用兼容性。
在一些实施例中,当运行时二进制文件与基础驱动包二进制文件进行版本绑定时,可以使用驱动框架包。使用驱动框架包递送SDK可能会允许该包与基础驱动包一起被更新。因此,驱动框架包可以用于允许硬件提供方向平台应用显露硬件差异化功能。驱动框架包可允许硬件提供方将SDK运行时二进制文件与其驱动包耦合在一起,并允许它们经由存储被提供服务。
以下一般特征可以被应用于驱动框架包:
1.驱动被安装后,可以由驱动框架包触发DFP部署。
2.DFP的一个版本可以在任意给定时间被安装在***上,并且可以与***上安装的驱动进行版本匹配
3.应验证DFP中所分发的运行时二进制文件。
4.应用可以被配置为处置缺少框架的情况
5.DFP可以被配置使得其不自行执行。运行时二进制文件可以只在引用应用的上下文中执行。
6.如果DFP已被绑定至驱动版本,则更新可以被捆绑到驱动更新
可以通过打包和递送***组件来开发驱动框架包,诸如驱动和服务(如果适用),其与硬件提供方SDK(驱动、服务等)相关联,以作为兼容DCHU的通用驱动包。DCHU是指符合以下设计原则的驱动:从存储传递的声明性、组件化、硬件支持应用,以及兼容通用API。驱动包和所包括的二进制文件可能符合DCHU原则。硬件提供方可以将驱动包发布到软件更新服务,以便将来可以轻松获取并随后进行更新。
在一个实施例中,可以在对应的驱动包的安装期间启动来自存储的DFP安装。在本公开中,在Windows运行时(WinRT)应用架构和通用Windows平台(UWP)的上下文中描述了一些示例实现。所描述的原理可以应用于其他架构和平台。
在一个示例实现中,硬件提供方可以为此目的在其驱动包中使用AddSoftwareType 2指令。如果在APPX清单的PackageDependency部分中指定了存储中的其他框架包(例如:VCLibs),则可以在应用安装期间下载存储中的其他框架包(例如:VCLibs)。此外,硬件提供方将能够向OEM提供预安装的DFP软件包,以便在生产期间进行安装。在一些实施例中,DFP的下载行为可以被调整以匹配存储中的其他框架并在应用安装与驱动安装期间被下载。
硬件提供方然后可以创建用于框架应用的硬件提供方SDK。为了向UWP应用显露硬件提供方硬件的不同功能,可以创建驱动框架包。该包可能包含一个或多个SDK DLL或运行时二进制文件,其包括:与上文被创建的***软件进行对话的中间件;标头(header)文件,该标头文件显露了一组高级面向客户端的API,以供应用开发者针对其编码;以及与链接到SDK DLL的标头文件匹配的导入库。由DFP暴露给应用和驱动包的两个接口都可以被验证。
可以通过在DFP的AppxManifest中将框架元素指定为TRUE来将以诸如APPX的应用包格式的包声明为驱动框架包。此外,也可以在Appx清单中指定DriverDependency。由于DFP是可选的,因此应用可能会延迟加载DFP,以确保在***上未安装DFP的场景中加载DFP。
当在UWP应用中使用驱动框架包时,驱动框架包的安装可能在驱动安装期间而不是在应用安装时触发。提供方可以将DFP视为其应用的可选依赖关系,因为它们已绑定到驱动包,并且因此未被保证在用户的***中出现。
驱动框架包可以在UWP应用的AppxManifest中被声明为另一个包依赖关系,并且依赖关系类型可以被指定为可选。可以通过硬件提供方拥有的能力(例如定制能力)来保护使用DFP对***软件的访问。在使用该能力之前,UWP应用可以在其AppxManifest中对其进行声明。
在一个实施例中,自动化的参与验证(onboarding validation)可以用来确保设备的预订水平的持续性能、安全性和能力被保持最新(stay current)。
针对DFP和使用它们的应用的提交过程可以与其他存储应用提交过程一致。附加验证也可以被触发。
以下规则可能适用于硬件提供方SDK
1.用于UWP应用的SDK运行时二进制文件可以与存储兼容并且利用认证工具箱被验证。
2.SDK不应干扰开发者创建可跨所有应用***设备和架构运行的通用应用的能力。例如DFP应在清单中设置目标。
3.应用只能从应用包或驱动框架包中加载运行时二进制文件,而不能从诸如与驱动一起部署的来源的其他来源中加载DLL。
4.DFP应当是二进制稳定的,并且即使在驱动或DFP更新期间,也应保持与已发布应用的向下兼容性。硬件提供方SDK向应用显露的API合同应被版本控制、具有弹性并向下兼容,以保持应用兼容性。
5.硬件提供方扩展的特权组件(驱动、服务等)应实施对于访问影响用户隐私或安全性或以其他方式造成危害的资源的适当的控制。
为了使通用应用程序能够利用SDK,可以以开发者可以构建针对所有设备系列(例如对于Windows-PC、Xbox、HoloLens等)和所有CPU架构(例如x86、x64、ARM32等)的通用应用而无需采取重大的变通方案的方式来开发SDK。例如开发者不必使用条件编码技术来避免从某些构建目标引用SDK。如果开发者正确使用API,则所有目标均应成功构建,并且所有目标均应成功部署、启动和执行。
一旦DFP被发布到存储,应用就可以依赖于该DFP,并且提供方将来无需更新其应用。这意味着DFP应当无限期地继续向下兼容。即使基础平台组件(驱动等)以不兼容的方式更改,DFP也不应违反与现有应用的合同。DFP可能会停止工作,因为应用无法再访问底层硬件或其他软件组件,但它仍应按照原始文档的方式运行(例如返回众所周知的故障代码)。
如果以向下兼容的方式添加对DFP的更新,则对DFP的更新可以添加新特征。可以像存储中的其他软件包一样对DFP进行版本控制,其中可以认为版本X与版本<=X的所有客户端兼容。如果需要发布的新DFP与先前的发布版本不向下兼容,则不应使用版本更新,并且可能会发布具有新包系列名称的新DFP,该DFP可以与以前的DFP并存。例如名为“ContosoWidgets”的DFP可能会运送(ship)若干个兼容的版本1至5。发现该DFP的第6版与以前的版本不兼容,因此可能会发布名为“Contoso Widgets 2”的新DFP。“Contoso Widgets 2”可以与原始“Contoso Widgets”DFP完全独立(并单独进行版本控制),尽管为避免混淆,它可以从版本6开始。***可以对每个DFP进行引用计数,并在任何已安装的应用不再需要时将其移除。
诸如UWP平台和存储的通用平台的特征之一是:所安装的应用无法在未经用户同意的情况下访问其私有数据、对其机器进行更改、访问敏感资源、或以其他方式执行恶意或不需要的操作。这种针对潜在恶意应用的保护也扩展到了第三方***组件。
在AppContainer的上下文之外运行的第三方平台扩展(驱动、服务、外部进程等)可以由自定义能力保护。自定义能力不应被允许提供对安全性或隐私敏感资源的访问。
显露平台功能的一种方式是经由API。API可能适用于包括C++、C#和JavaScript在内的编程语言,并且对于某些类型的SDK也支持C。
当设计SDK和DFP时,可以考虑以下因素:
1.平台扩展,诸如驱动或服务
2.与平台扩展进行通信的DFP组件
3.以与平台无关、与架构无关的方式封装DFP的SDK
4.使用SDK来访问平台扩展的应用
以下示例使用示例“烘烤机(toaster)”平台扩展,该平台扩展允许应用经由USB连接的烘烤机进行烘烤。该示例包括使用以C++/CX实现的SDK的C#应用程序,该SDK继而调用以C++编写并经由平面API显露的DFP。没有阐述平台扩展组件,因为DFP和扩展之间不应存在静态依赖关系——所有通信都应经由诸如RPC的内置功能进行。
为了构建该应用,可以使用SDK提供的Contoso.ToastLibrary API,并且不需要考虑DFP和平台组件。SDK和DFP可能会确定详细信息,包括是否安装了DFP、是否安装了正确的驱动/驱动版本以及是否经由USB附接了物理烘烤机等。
类似于以下代码,使用“是否支持?”,可以使用以下定义的API模式:
在此示例中,API来自Contoso.ToastLibrary命名空间,应用可以通过引用Contoso.ToastLibrary.winmd文件来访问该命名空间。该应用可以被编码为好像在调用任意其他内置API一样,而不必考虑DFP或平台部分。
SDK可以向应用开发者显露公共表面(public surface)(在该示例中,经由API),并且隐藏任意底层依赖关系和检测DFP的实现细节。Contoso.ToastLibrary SDK组件可以作为应用的一部分被分发,并且可以提供到DFP组件的干净的、定义明确的、可版本控制的接口。SDK DLL应当是围绕DFP的相对较薄的封装体,仅提供足够的附加功能来生成对开发者友好的API。
在一个示例中,可以如下实现Toaster.IsSupported()方法的代码:
SDK组件可能会延迟加载DFP库,以便应用不会认为缺少它:
auto result=QueryOptionaIDelayLoadedAPI(GetThisModule(),
″DFP_Toaster.dll″,
″DFP_IsToastingSupported″,0);
如果应用找到了DFP_Toaster.dll文件(即,已部署框架包),并且DLL显露了函数DFP_IsToastingSupported,并且该函数返回true,则此代码将为应用返回true。否则,代码将返回false。这样,应用无需考虑为什么不支持烘烤(错误的驱动版本;不正确的硬件架构等),并且可以以相同的方式处理所有故障。
此代码要求SDK组件在命令行上使用delay-load链接器标志:
/DELAYLOAD:″DFP_Toaster.dll″
如果未使用/DELAYLOAD(或您指定了错误的DLL名称),则构建将成功,但QueryOptionalDelayLoadedAPI将在运行时返回FALSE。替代机制是使用LoadPackagedLibrary/GetProcAddress。
SDK的其他部分是围绕DFP的薄封装体,例如:
此代码显示SDK如何是围绕DFP API的薄封装体,并提供诸如类型(枚举、对象等)与DFP使用的普通C类型(原始指针、句柄、整数等)之间的类型变换和互操作的服务。在这种情况下,SDK不需要对DFP_StartToasting使用QueryOptionalDelayLoadedAPI,因为如果Toaster.IsSupported()返回false则此代码不可访问——Toaster.GetDefault()将返回null,因此无法在Toaster对象上调用实例方法。
从上面的代码示例可以看出,IsSupported模式可以被应用用来检测当前机器是否完全支持给定功能。该检查可能经由静态方法(Toaster.IsSupported())显露,并且实现可能依赖全局布尔来对该值进行高速缓存,并假设IsSupported在应用的生存期内无法改变。
如果IsSupported返回false,则即使用户更改某些软件配置或附接硬件***设备,也可以确定该机器根本上不支持该功能。如果IsSupported返回true,则可以确定该机器可能潜在地支持该特征(例如因为安装了正确的驱动),即使该机器现在不一定必须支持(例如因为用户需要******设备)。
在使用其余的SDK之前,应用不需要全部为IsSupported,因为通常,即使***支持该特征,运行时也可能缺少硬件或其他资源。IsSupported旨在让应用可选地定制其UX,以在无法使用特征时移除某些选项(诸如菜单、按钮等)。
回忆上述示例应用代码:
即使对Toaster.IsSupported()的调用被移除,该应用代码也适用,因为如果当前没有USB烘烤机可用,则Toaster.GetDefault()将返回null——的确,如果用户尚未安装驱动/DFP,没有烘烤机可用。
如果DFP仅在特定架构(例如x86和x64)上被支持,则可以通过为IsSupported()编译实际的运行时检查并使用所有其他方法的空实现来简化SDK组件:
客户端应用可以在所有架构上调用相同的代码,并且它们的代码可以适用,而不管架构或是否存在烘烤机驱动等。
DFP组件可以与平台扩展集成,以提供经由SDK显露的大部分功能。在某些情况下,DFP可能是围绕RPC或IOCTL的薄封装体(或可能完全缺失),但在许多情况下,DFP可以提供平台顶部的层,以支持例如应用之间的状态隔离,最小化运行提升的代码量,等等。
DFP二进制文件可以经由延迟加载被链接或使用LoadPackagedLibrary在运行时加载DFP二进制文件,DFP和平台扩展之间的边界应基于平台API,诸如RPC、DeviceIOControl或Windows.Devices名称空间中的API。
可以提供桌面桥包,其可以声明包对框架包的依赖关系。为了确保SDK DLL适用于UWP和其他包,DLL应当:
1.仅使用UWP兼容的公共API
2.验证由DLL显露的功能在所有情况下被加载时是否都有效——在UWP和其他进程上。
以前,硬件提供方可以通过使用CreateFile打开对硬件设备的句柄来从桌面应用访问硬件,然后使用DeviceIoControl与之交互。可能会提供一个API(CreateFileFromApp),该API允许硬件提供方在几乎不做修改的情况下移植(port)使用CreateFile&DeviceIoControl的代码,并通过使用Device Access Broker(设备访问代理)(类似于Windows.Devices.Custom)对其进行代理,来从应用容器中获得设备句柄。
硬件提供方可以在设备接口上设置设备能力属性。使用SCCD,UWP应用可以使用CreateFileFromApp打开接口的句柄。
安全定制能力描述符(SCCD)文件可用于向端点、驱动程序或NT服务授予对指定UWP应用的访问权限。硬件提供方可以创建和分发开放访问SCCD(不绑定到特定的应用页面框架号(PFN)),其可以对使用硬件提供方的SDK的任意提供方可用。提供方可以在APPX包根目录中包括SCCD。
DFP导出到UWP应用可以被认为是存储兼容的。框架二进制文件(DFP)列表可以在单独的XML中进行管理,而XML可以在云中进行管理。一旦被添加后,存储合规性测试可能会忽略其正在评估UWP应用合规性的那些二进制文件中的导出。由于“所支持的框架XML”文件是在云中维护的,因此当存储或开发者在APPX上运行存储合规性时,其可能会被自动地同步。
图4示出了例程400的各个方面,该例程用于能够实现本文所公开的技术的各个方面,如下所示和所述。应当理解的是,本文公开的方法的操作未以任意特定顺序呈现,并且可以以替代的顺序执行一些或全部操作是可能的并且是可预期的。为了便于描述和说明,已按演示顺序介绍了操作。在不脱离所附权利要求的范围的情况下,可以增加、省略和/或同时执行操作。
还应当理解,所说明的方法可以在任意时间结束并且不需要整体执行。可以通过在计算机存储介质上包括的计算机可读指令的执行来执行方法和/或基本上等效的操作的一些或全部操作,如下文所定义。如说明书和权利要求书中所使用的术语“计算机可读指令”及其变体在本文中被广泛地使用以包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等。可以在各种***配置上实现计算机可读指令,包括单处理器或多处理器***、小型计算机、大型计算机、个人计算机、手持计算设备、基于微处理器的可编程消费电子产品、其组合等。
因此,应当理解,本文描述的逻辑操作被实现为:(1)在计算***上运行的计算机实现的动作或程序模块的序列和/或(2)计算***内的互连机器逻辑电路或电路模块。该实现是取决于计算***的性能和其他要求的选择问题。因此,本文描述的逻辑操作被不同地称为状态、操作、结构装置、动作或模块。这些操作、结构设备、动作和模块可以以软件、固件、专用数字逻辑及其任意组合来实现。
例如例程400的操作在本文中被描述为至少部分地由运行本文所公开的特征的模块来实现,并且可以是动态链接库(DLL)、静态链接库、应用编程接口(API)、编译程序、解释程序、脚本或任意其他可执行指令集。数据可以存储在一个或多个存储器组件中的数据结构中。可以通过寻址数据结构的链接或引用从数据结构中检索数据。
尽管以下图示参考了附图的组件,但是可以理解,例程400的操作也可以以许多其他方式来实现。例如例程400可以至少部分地由另一远程计算机或本地电路的处理器来实现。另外,例程400的一个或多个操作可以可替代地或另外地至少部分地由单独工作或与其他软件模块结合工作的芯片组来实现。在以下描述的示例中,计算***的一个或多个模块可以接收和/或处理本文公开的数据。适用于提供本文公开的技术的任意服务、电路或应用都可以在本文所述的操作中使用。
如上文关于图1-3中的任一者所描述,例如可由图5的计算设备500执行图4中的操作。
在操作401,接收软件开发工具箱运行时二进制文件,其被配置用于标准化开发平台。
在操作403,接收驱动框架包,该驱动框架包基于软件开发工具箱运行时二进制文件被生成,并被配置为在标准化开发平台的一组约束下支持相关联的驱动的可扩展性。
在操作405,响应于来自第三方框架的请求,允许第三方框架访问和扩展软件开发工具箱运行时二进制文件和驱动框架包。
在操作407,对中间层进行实例化,该中间层被配置为允许标准化开发平台的应用访问第三方框架以及对软件开发工具箱运行时二进制文件和驱动框架包的扩展。
图5是示出了根据一种实现的计算机架构图,其示出了可以执行本公开的各个方面的计算设备的示例性计算机硬件和软件架构,诸如以上关于图1-4所描述的那些方面。特别地,图5所示的架构可用于实现服务器计算机、台式计算机、膝上型计算机或另一种类型的计算设备。
图5所示的计算机500包括中央处理单元502(“CPU”或“处理器”);***存储器504,其包括随机存取存储器506(“RAM”)和只读存储器(“ROM”)508;以及将存储器504耦合到CPU502的***总线510。基本输入/输出***(“BIOS”或“固件”)包含帮助诸如在启动期间在计算机500内元件之间传递信息的基本例程,该基本输入/输出***可以被存储在ROM 508中。计算机500还包括用于存储操作***102、SDK 104、驱动106、应用程序和其他类型的程序的大容量存储设备512。大容量存储设备512还可以被配置为存储其他类型的程序和数据。
大容量存储设备512通过连接到总线510的大容量存储控制器(图6中未显示)连接到CPU 502。大容量存储设备512及其相关联的计算机可读介质为该计算机500提供了非易失性存储。尽管本文包含的计算机可读介质的描述是指大容量存储设备,诸如硬盘、CD-ROM驱动、DVD-ROM驱动或USB存储密钥,但本领域技术人员应当理解该计算机可读介质可以是计算机500可以访问的任意可用计算机存储介质或通信介质。
通信介质包括诸如载波或其他传输机制的调制数据信号中的计算机可读指令、数据结构、程序模块或其他数据,并且包括任意传递介质。术语“调制数据信号”是指具有以将信号中的信息进行编码的方式改变或设置其一个或多个特性的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频、红外和其他无线介质的无线介质。以上任意内容的组合也应被包括在计算机可读介质的范围内。
作为示例而非限制,计算机存储介质可以包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的任意方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如计算机存储介质包括但不限于RAM、ROM、EPROM、EEPROM、闪存或其他固态存储技术、CD-ROM、数字多功能磁盘(“DVD”)、HD-DVD、BLU-RAY或其他光学存储设备、盒式磁带、磁带、磁盘存储设备或其他磁性存储设备、或可用于存储所需信息并可由计算机500访问的任意其他计算机存储介质。在权利要求书中,短语“计算机存储介质”及其变体本身不包括波或信号或通信介质。
根据各种配置,计算机500可以使用通过诸如网络520的网络到远程计算机的逻辑连接,在联网的环境中操作。计算机500可以通过连接到总线510的网络接口单元516连接到网络520。应当理解,网络接口单元516也可以用于连接到其他类型的网络和远程计算机***。计算机500还可以包括输入/输出控制器518,用于接收和处理来自许多其他设备的输入,包括键盘、鼠标、触摸输入、电子笔(图5中未示出)或诸如视频摄像机的物理传感器。类似地,输入/输出控制器518可以将输出提供给显示屏或其他类型的输出设备(在图5中也未示出)。
应当理解,本文描述的软件组件在被加载到CPU 502中并被执行时,可以将CPU502和整个计算机500从通用计算设备变换成专用计算设备,专用计算设备被定制以促进本文呈现的功能。CPU 502可以由任意数量的晶体管或其他分立电路元件构成,它们可以单独或共同地呈现任意数量的状态。更具体地,响应于在本文公开的软件模块内包含的可执行指令,CPU 502可以作为有限状态机操作。这些计算机可执行指令可以通过指定CPU 502在状态之间如何变换来变换CPU 502,从而变换构成CPU 502的晶体管或其他分立的硬件元素。
对本文提出的软件模块进行编码还可以变换本文提出的计算机可读介质的物理结构。在本说明书的不同实现中,物理结构的特定变换取决于各种因素。此类因素的示例包括但不限于用于实现计算机可读介质的技术,计算机可读介质的特征是主要存储还是辅助存储等。例如如果计算机可读介质被实现为基于半导体的存储器,则可以通过变换半导体存储器的物理状态来将本文公开的软件编码在计算机可读介质上。例如软件可以变换构成半导体存储器的晶体管、电容器或其他分立电路元件的状态。该软件还可以变换这些组件的物理状态,以便在其上存储数据。
作为另一个示例,可以使用磁性或光学技术来实现本文公开的计算机可读介质。在这样的实施方式中,当软件被编码在其中时,本文提出的软件可以改变磁性或光学介质的物理状态。这些变换可以包括改变给定磁性介质内特定位置的磁性特征。这些变换还可包括改变给定光学介质内特定位置的物理特征或特性,以改变那些位置的光学特性。在不脱离本说明书的范围和精神的情况下,物理媒体的其他变换是可能的,提供前述示例仅是为了促进该讨论。
鉴于以上内容,应当理解,在计算机500中发生了许多类型的物理变换,以便存储和执行本文提出的软件组件。还应当理解,图5中示出的用于计算机500的架构或类似架构可用于实现其他类型的计算设备,包括手持计算机、视频游戏设备、嵌入式计算机***、诸如智能手机、平板计算机和AR/VR设备的移动设备、以及本领域技术人员已知的其他类型的计算设备。还可以预期,计算机500可能不包括图5所示的所有组件,可以包括在图5中未明确示出的其他组件,或者可以利用与图5所示的架构完全不同的架构。
图6是示出根据本文中呈现的各种实现的分布式网络计算环境600的网络图,在该分布式网络计算环境中可以实现所公开的技术的各方面。如图6所示,一个或多个服务器计算机600A可以经由具有多个客户端计算设备的通信网络620(其可以是固定线或无线LAN、WAN、内联网、外联网、对等网络、虚拟专用网络、Internet、蓝牙通信网络、专有低压通信网络或其他通信网络中的一者或组合)互连,,诸如但不限于平板计算机600B、游戏机600C、智能手表600D、诸如智能电话的电话600E、个人计算机600F和AR/VR设备600G。
例如在通信网络620是Internet的网络环境中,服务器计算机600A可以是专用服务器计算机,该专用服务器计算机可操作为经由多种已知协议中的任意一个向和从客户端计算设备600B-600G处理和传送数据,诸如超文本传输协议(“HTTP”)、文件传输协议(“FTP”)或简单对象访问协议(“SOAP”)。另外,网络计算环境600可以利用各种数据安全协议,诸如安全套接字层(“SSL”)或相当好的隐私(“PGP”)。客户端计算设备600B-600G中的每一个可以配备有操作***,该操作***可操作以支持一个或多个计算应用或终端会话,诸如web浏览器(图5中未示出)或其他图形用户界面(图5中未示出)、或移动桌面环境(图6中未显示)以获得对服务器计算机600A的访问。
服务器计算机600A可以通信地耦合到其他计算环境(图6中未示出),并接收有关参与用户的交互/资源网络的数据。在示意性操作中,用户(图6中未示出)可以与在客户端计算设备600B-600G上运行的计算应用进行交互以获得期望的数据和/或执行其他计算应用。
数据和/或计算应用可以被存储在一个或多个服务器600A上,并在示例性通信网络620上通过客户端计算设备600B-600G传送给合作用户。参与用户(图6中未示出)可以请求访问全部或部分容纳在服务器计算机600A上的特定数据和应用。这些数据可以在客户端计算设备600B-600G和服务器计算机600A之间传送以进行处理和存储。
服务器计算机600A可以托管用于数据、应用的生成、认证、加密和通信的计算应用、处理和小程序,并且可以与其他服务器计算环境(图6中未显示)、第三方服务提供商(图6中未显示)、网络附接存储(“NAS”)和存储区域网络(“SAN”)合作以实现应用程序/数据交易。
应当理解,为了便于讨论,已经简化了图5所示的计算架构和图6所示的分布式网络计算环境。还应当理解,计算架构和分布式计算网络可以包括并利用更多计算组件、设备、软件程序、网络设备以及本文未具体描述的其他组件。
基于前述内容,应当理解,已经公开了一种框架,该框架支持可靠且高性能的驱动和应用以及相关联的SDK的创建和执行。尽管已经用计算机结构特征、方法和变换动作,特定的计算机器和计算机可读介质专用的语言描述了本文介绍的主题,但是应当理解,所附权利要求书中提出的主题不一定限于本文描述的特定功能、行为或介质。而是,将特定特征、动作和介质公开为实现所要求保护的主题的示例形式。
示例条款
可以鉴于以下条款考虑本文提出的公开。
示例条款A,一种设备,包括:
一个或多个处理器;
存储器,与一个或多个处理器通信,存储器具有被存储在其上的计算机可读指令,计算机可读指令在由一个或多个处理器执行时,使设备对标准化开发平台进行实例化,标准化开发平台被配置为:
接收软件开发工具箱运行时二进制文件,软件开发工具箱运行时二进制文件被配置用于标准化开发平台;
接收驱动框架包,驱动框架包基于软件开发工具箱运行时二进制文件被生成,并且被配置为在针对标准化开发平台的一组约束下支持相关联的驱动的可扩展性;
响应于来自第三方框架的请求,允许第三方框架访问和扩展软件开发工具箱运行时二进制文件和驱动框架包;以及
对中间层进行实例化,中间层被配置为允许标准化开发平台的应用访问第三方框架以及对软件开发工具箱运行时二进制文件和驱动框架包的扩展。
示例条款B,示例条款A的设备,其中标准化开发平台还被配置为对接口进行实例化,接口可操作用于接收符合驱动框架包的一个或多个应用。
示例条款C,示例条款A至B中任一项的设备,其中标准化开发平台实现用于应用的开发的一个或多个标准接口。
示例条款D,示例条款A至C中任一项的设备,其中平台还被配置为对存储库进行实例化,该存储库用于分发软件开发工具箱运行时二进制文件。
示例条款E,示例条款A至D中任一项的设备,其中驱动框架包是经由存储库被递送的。
示例条款F,示例条款A至D中任一项的设备,其中应用在强制遵守一组约束的容器中运行。
示例条款G至示例条款A至F中任一项的设备,还包括被存储在其上的计算机可读指令,计算机可读指令在由一个或多个处理器执行时,使设备发布软件开发工具箱运行时二进制文件,并且允许应用将软件开发工具箱运行时二进制文件声明为依赖关系。
示例条款H,示例条款A至G中任一项的设备,其中中间层被配置为向软件开发工具箱运行时二进制文件和第一方框架显露接口。
示例条款I,示例条款A至G中任一项的设备,其中驱动框架包的安装在驱动安装期间被触发。
示例条款J,示例条款A至I中任一项的设备,其中接口被实现为应用编程接口(API)。
尽管以上针对设备描述了示例条款A至J,但应理解的是,在本公开的上下文中,示例条款A至J的主题可以附加地或替代地实现为方法或经由计算机可读存储介质的方式实现。
示例条款K,一种方法,包括:
接收软件开发工具箱运行时二进制文件,软件开发工具箱运行时二进制文件被配置用于标准化平台;
接收驱动框架包,驱动框架包基于软件开发工具箱被生成,并且被配置为在一组约束下支持可扩展性;
与第三方框架通信,并使第三方框架能够访问软件开发工具箱运行时二进制文件和驱动框架包;以及
允许标准化平台的应用访问第三方框架。
示例条款L,示例条款K的计算设备,还包括:对平台进行实例化,平台被配置为对接口进行实例化,接口可操作用于接收符合驱动框架包的一个或多个应用。
示例条款M,示例条款K或示例条款L的计算设备,其中标准化平台实现用于应用的开发的一个或多个标准接口。
示例条款N,示例条款K到示例条款M的计算设备,还包括对平台进行实例化,该平台被配置为:对用于分发软件开发工具箱运行时二进制文件的存储库进行实例化。
示例条款O,示例条款K到示例条款N的计算设备,其中驱动框架包是经由存储库被递送的示例条款P,示例条款K到示例条款O的计算设备,其中应用在强制遵守一组约束的容器中运行。
示例条款Q,示例条款K到示例条款P的计算设备,还包括发布软件开发工具箱运行时二进制文件,并允许应用将软件开发工具箱运行时二进制文件声明为依赖关系。
示例条款R,示例条款K到示例条款Q的计算设备,其中存储库实现中间层,该中间层被配置为向软件开发工具箱运行时二进制文件和第一方框架显露接口
尽管以上针对方法描述了示例条款K至R,但是应理解的是,在本公开的上下文中,示例条款K至R的主题可以附加地或替代地由设备或经由计算机可读储存介质的方式来实现。
示例条款S,一种计算机可读存储介质,包括指令,指令在由计算设备执行时使计算设备执行包括以下各项的操作:
接收软件开发工具箱运行时二进制文件,软件开发工具箱运行时二进制文件被配置用于标准化平台;
接收驱动框架包,驱动框架包基于软件开发工具箱被生成,并且被配置为在一组约束下支持可扩展性;
支持由第三方框架对软件开发工具箱运行时二进制文件和驱动框架包的访问。
示例条款T,即示例条款S的设备,还包括指令,指令在由计算设备执行该指令时,使该计算设备执行包括以下各项的操作:对第四接口进行实例化,该第四接口可操作用于接收符合驱动框架包的一个或多个应用。
尽管以上关于计算机可读存储介质描述了示例条款S至T,但是应理解,在本公开的上下文中,示例条款S至T的主题可以附加地或替代地实现为设备或方法。
Claims (15)
1.一种设备,包括:
一个或多个处理器;
存储器,与所述一个或多个处理器通信,所述存储器具有被存储在其上的计算机可读指令,所述计算机可读指令在由所述一个或多个处理器执行时,使所述设备对标准化开发平台进行实例化,所述标准化开发平台被配置为:
接收软件开发工具箱运行时二进制文件,所述软件开发工具箱运行时二进制文件被配置用于所述标准化开发平台;
接收驱动框架包,所述驱动框架包基于所述软件开发工具箱运行时二进制文件被生成,并且被配置为在针对所述标准化开发平台的一组约束下支持相关联的驱动的可扩展性;
响应于来自第三方框架的请求,允许所述第三方框架访问和扩展所述软件开发工具箱运行时二进制文件和所述驱动框架包;以及
对中间层进行实例化,所述中间层被配置为允许所述标准化开发平台的应用访问所述第三方框架以及对所述软件开发工具箱运行时二进制文件和所述驱动框架包的扩展。
2.根据权利要求1所述的设备,其中所述标准化开发平台还被配置为对接口进行实例化,所述接口可操作用于接收符合所述驱动框架包的一个或多个应用。
3.根据权利要求1所述的设备,其中所述标准化开发平台实现用于应用的开发的一个或多个标准接口。
4.根据权利要求1所述的设备,其中所述平台还被配置为对存储库进行实例化,所述存储库用于分发所述软件开发工具箱运行时二进制文件。
5.根据权利要求4所述的设备,其中所述驱动框架包是经由所述存储库被递送的。
6.根据权利要求1所述的设备,其中所述应用在强制遵守一组约束的容器中被运行。
7.根据权利要求1所述的设备,还包括被存储在其上的计算机可读指令,所述计算机可读指令在由所述一个或多个处理器执行时,使所述设备发布所述软件开发工具箱运行时二进制文件,并且允许应用将所述软件开发工具箱运行时二进制文件声明为依赖关系。
8.根据权利要求1所述的设备,其中所述中间层被配置为向所述软件开发工具箱运行时二进制文件和第一方框架显露接口。
9.根据权利要求1所述的设备,其中所述驱动框架包的安装在驱动安装期间被触发。
10.根据权利要求1所述的设备,其中所述接口被实现为应用编程接口(API)。
11.一种方法,包括:
接收软件开发工具箱运行时二进制文件,所述软件开发工具箱运行时二进制文件被配置用于标准化平台;
接收驱动框架包,所述驱动框架包基于所述软件开发工具箱被生成,并且被配置为在一组约束下支持可扩展性;
与第三方框架通信,并且使所述第三方框架能够访问所述软件开发工具箱运行时二进制文件和驱动框架包;以及
允许所述标准化平台的应用访问所述第三方框架。
12.根据权利要求11所述的方法,其中所述应用在强制遵守一组约束的容器中被运行。
13.根据权利要求11所述的方法,还包括发布所述软件开发工具箱运行时二进制文件,并且允许应用将所述软件开发工具箱运行时二进制文件声明为依赖关系。
14.根据权利要求11所述的方法,还包括对平台进行实例化,所述平台被配置为对存储库进行实例化,所述存储库用于分发所述软件开发工具箱运行时二进制文件,其中所述存储库实现中间层,所述中间层被配置为向所述软件开发工具箱运行时二进制文件和第一方框架显露接口。
15.一种计算机可读存储介质,包括指令,所述指令在由计算设备执行时,使所述计算设备执行操作,所述操作包括:
接收软件开发工具箱运行时二进制文件,所述软件开发工具箱运行时二进制文件被配置用于标准化平台;
接收驱动框架包,所述驱动框架包基于所述软件开发工具箱被生成,并且被配置为在一组约束下支持可扩展性;以及
支持由第三方框架对所述软件开发工具箱运行时二进制文件和所述驱动框架包的访问。
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862678174P | 2018-05-30 | 2018-05-30 | |
US62/678,174 | 2018-05-30 | ||
US16/256,283 US10789058B2 (en) | 2018-05-30 | 2019-01-24 | Extensibility of unified platform |
US16/256,283 | 2019-01-24 | ||
PCT/US2019/031946 WO2019231650A1 (en) | 2018-05-30 | 2019-05-13 | Extensibility of unified platform |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112189187A true CN112189187A (zh) | 2021-01-05 |
CN112189187B CN112189187B (zh) | 2024-01-05 |
Family
ID=68693732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201980034803.XA Active CN112189187B (zh) | 2018-05-30 | 2019-05-13 | 统一平台的可扩展性 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10789058B2 (zh) |
EP (1) | EP3803579A1 (zh) |
CN (1) | CN112189187B (zh) |
WO (1) | WO2019231650A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342356A (zh) * | 2021-05-18 | 2021-09-03 | 浪潮软件股份有限公司 | 一种客户端框架运行及管理配置方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106991298B (zh) * | 2016-01-21 | 2021-02-02 | 斑马智行网络(香港)有限公司 | 应用程序对接口的访问方法、授权请求方法及装置 |
US11582238B2 (en) * | 2019-08-13 | 2023-02-14 | Dell Products L.P. | Securing a server from untrusted client applications |
US11068252B2 (en) * | 2019-09-16 | 2021-07-20 | Dell Products L.P. | System and method for dynamically determining applicable updates |
CN113050998B (zh) * | 2021-03-30 | 2022-08-19 | 联想(北京)有限公司 | 电子设备及控制方法 |
WO2023149988A1 (en) * | 2022-02-04 | 2023-08-10 | Google Llc | Independent publishing and serving of applications and software development kits |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017166166A1 (en) * | 2016-03-31 | 2017-10-05 | Oracle International Corporation | System and method for providing runtime tracing for web-based client accessing transactional middleware platform using extension interface |
US20180052723A1 (en) * | 2016-08-17 | 2018-02-22 | Google Inc. | Middleware Interface and Middleware Interface Generator |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7024666B1 (en) * | 2002-01-28 | 2006-04-04 | Roy-G-Biv Corporation | Motion control systems and methods |
US20020156872A1 (en) * | 2001-01-04 | 2002-10-24 | Brown David W. | Systems and methods for transmitting motion control data |
US6825941B1 (en) * | 1998-09-21 | 2004-11-30 | Microsoft Corporation | Modular and extensible printer device driver and text based method for characterizing printer devices for use therewith |
US6535998B1 (en) * | 1999-07-26 | 2003-03-18 | Microsoft Corporation | System recovery by restoring hardware state on non-identical systems |
US6851073B1 (en) * | 1999-07-26 | 2005-02-01 | Microsoft Corporation | Extensible system recovery architecture |
US6820214B1 (en) * | 1999-07-26 | 2004-11-16 | Microsoft Corporation | Automated system recovery via backup and restoration of system state |
US20050097133A1 (en) * | 2003-10-31 | 2005-05-05 | Quoc Pham | Producing software distribution kit (SDK) volumes |
US7467392B1 (en) * | 2004-09-10 | 2008-12-16 | Microsoft Corporation | System and method for supporting new and existing extensions to application programming interfaces |
US7630687B2 (en) * | 2004-12-03 | 2009-12-08 | Microsoft Corporation | Extensible framework for mitigating interference problems in wireless networking |
US8849968B2 (en) * | 2005-06-20 | 2014-09-30 | Microsoft Corporation | Secure and stable hosting of third-party extensions to web services |
US20070162487A1 (en) * | 2005-12-30 | 2007-07-12 | Razorstream, Llc | Multi-format data coding, managing and distributing system and method |
US8661025B2 (en) * | 2008-11-21 | 2014-02-25 | Stubhub, Inc. | System and methods for third-party access to a network-based system for providing location-based upcoming event information |
US8336089B1 (en) * | 2007-12-21 | 2012-12-18 | Emc Corporation | Method and apparatus for providing authentication and encryption services by a software as a service platform |
US10007767B1 (en) * | 2007-12-21 | 2018-06-26 | EMC IP Holding Company LLC | System and method for securing tenant data on a local appliance prior to delivery to a SaaS data center hosted application service |
US8706800B1 (en) * | 2007-12-21 | 2014-04-22 | Emc Corporation | Client device systems and methods for providing secure access to application services and associated client data hosted by an internet coupled platform |
US8291490B1 (en) * | 2008-06-30 | 2012-10-16 | Emc Corporation | Tenant life cycle management for a software as a service platform |
US8958746B2 (en) * | 2009-12-11 | 2015-02-17 | Toro Development Ltd. | Mobile integrated distribution and transaction system and method for NFC services, and a mobile electronic device thereof |
US8942672B2 (en) * | 2009-12-11 | 2015-01-27 | Toro Development Limited | Mobile integrated distribution and transaction system and method for NFC services, and a mobile electronic device thereof |
US20120166276A1 (en) * | 2010-12-28 | 2012-06-28 | Microsoft Corporation | Framework that facilitates third party integration of applications into a search engine |
JP5551141B2 (ja) * | 2011-11-05 | 2014-07-16 | 京セラドキュメントソリューションズ株式会社 | クライアントサイドWebサービスインターフェイス及びこれを備えたソフトウェア開発キット並びにこの開発キットを用いたソフトウェア開発方法 |
US8606892B2 (en) * | 2011-11-28 | 2013-12-10 | Wyse Technology Inc. | Deployment and updating of applications and drivers on a client device using an extensible markup language (XML) configuration file |
US20130139183A1 (en) * | 2011-11-28 | 2013-05-30 | Wyse Technology Inc. | Creation or installation of a disk image for a target device having one of a plurality of hardware platforms |
US8612516B2 (en) * | 2011-11-28 | 2013-12-17 | Wyse Technology Inc. | Deployment of a driver or an application on a client device having a write-filter |
US9547499B2 (en) * | 2011-12-09 | 2017-01-17 | Microsoft Technology Licensing, Llc | Device configuration with cached pre-assembled driver state |
US9703680B1 (en) * | 2011-12-12 | 2017-07-11 | Google Inc. | System and method for automatic software development kit configuration and distribution |
EP2795511A4 (en) * | 2011-12-22 | 2015-12-16 | Intel Corp | USER-CONTROLLABLE PLATFORM LEVEL SHIFTER FOR SETTING GUIDELINES FOR THE PROTECTION OF THE PLATFORM FROM DAMAGE PROGRAMS |
WO2013095574A1 (en) * | 2011-12-22 | 2013-06-27 | Intel Corporation | Method and apparatus to using storage devices to implement digital rights management protection |
US9916454B2 (en) * | 2011-12-22 | 2018-03-13 | Intel Corporation | User controllable platform-level trigger to set policy for protecting platform from malware |
US9146829B1 (en) * | 2013-01-03 | 2015-09-29 | Amazon Technologies, Inc. | Analysis and verification of distributed applications |
US20140228074A1 (en) * | 2013-02-12 | 2014-08-14 | Sonim Technologies, Inc. | Embedded Accessory for Mobile Devices |
WO2014193824A1 (en) * | 2013-05-28 | 2014-12-04 | Pulletikurty Ravi | System having a miniature portable electronic device for command and control of a plurality of wireless devices |
US9058375B2 (en) * | 2013-10-09 | 2015-06-16 | Smart Screen Networks, Inc. | Systems and methods for adding descriptive metadata to digital content |
US9058193B2 (en) * | 2013-11-14 | 2015-06-16 | Google Inc. | Methods and systems for providing compatibility of applications with multiple versions of an operating system |
EP2889813B1 (en) * | 2013-12-27 | 2017-11-15 | Buongiorno S.P.A. | Method and system for implementing in-app software development kits |
EP3138056A1 (en) * | 2014-04-30 | 2017-03-08 | Twitter, Inc. | Software development kit platform |
US9740464B2 (en) * | 2014-05-30 | 2017-08-22 | Apple Inc. | Unified intermediate representation |
US10922148B2 (en) * | 2015-04-26 | 2021-02-16 | Intel Corporation | Integrated android and windows device |
US11057446B2 (en) * | 2015-05-14 | 2021-07-06 | Bright Data Ltd. | System and method for streaming content from multiple servers |
JP2018522317A (ja) * | 2015-09-02 | 2018-08-09 | グーグル エルエルシー | ソフトウェア開発および分散プラットフォーム |
EP3742324A1 (en) * | 2015-09-15 | 2020-11-25 | Gatekeeper Ltd. | System and method for securely connecting to a peripheral device |
CN105243407B (zh) * | 2015-10-09 | 2018-12-07 | 腾讯科技(深圳)有限公司 | 读写智能卡的方法及装置 |
US10298658B2 (en) * | 2015-10-26 | 2019-05-21 | Airbnb, Inc. | Beam device architecture |
US9672538B1 (en) * | 2015-11-09 | 2017-06-06 | Radiumone, Inc. | Delivering personalized content based on geolocation information in a social graph with sharing activity of users of the open web |
US20170206707A1 (en) * | 2016-01-15 | 2017-07-20 | Anthony Guay | Virtual reality analytics platform |
US10649679B2 (en) * | 2016-11-23 | 2020-05-12 | Nutanix, Inc. | Containerized application extensions in distributed storage systems |
US10091380B1 (en) * | 2017-06-02 | 2018-10-02 | Xerox Corporation | Systems and methods of implementing universal print drivers in a windows print architecture |
US11050765B2 (en) * | 2017-08-26 | 2021-06-29 | Nicira, Inc. | Security system for managed computer system |
-
2019
- 2019-01-24 US US16/256,283 patent/US10789058B2/en active Active
- 2019-05-13 WO PCT/US2019/031946 patent/WO2019231650A1/en unknown
- 2019-05-13 CN CN201980034803.XA patent/CN112189187B/zh active Active
- 2019-05-13 EP EP19727792.4A patent/EP3803579A1/en not_active Withdrawn
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017166166A1 (en) * | 2016-03-31 | 2017-10-05 | Oracle International Corporation | System and method for providing runtime tracing for web-based client accessing transactional middleware platform using extension interface |
US20180052723A1 (en) * | 2016-08-17 | 2018-02-22 | Google Inc. | Middleware Interface and Middleware Interface Generator |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342356A (zh) * | 2021-05-18 | 2021-09-03 | 浪潮软件股份有限公司 | 一种客户端框架运行及管理配置方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2019231650A1 (en) | 2019-12-05 |
US20190369978A1 (en) | 2019-12-05 |
US10789058B2 (en) | 2020-09-29 |
CN112189187B (zh) | 2024-01-05 |
EP3803579A1 (en) | 2021-04-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112189187B (zh) | 统一平台的可扩展性 | |
US10379846B1 (en) | Systems and methods for real time version control for integrating updated web-based components with a native application | |
EP2798494B1 (en) | Virtual channel for embedded process communication | |
KR101881625B1 (ko) | 가상 머신 이주 도구 | |
US11340893B2 (en) | Mobile application update preserving changes to the application made by a client | |
Richter | Applied Microsoft. NET framework programming | |
US10296298B1 (en) | Systems and methods for cross platform information exchange mechanism for integrating web-based components with a native application | |
US8745601B1 (en) | Methods and systems for using data structures for operating systems | |
US20120102483A1 (en) | Handling calls to native code in a managed code environment | |
US10296309B1 (en) | Systems and methods for automatic API generation for bi-directional communication between native and web-based components of a mobile application | |
EP1810135A1 (en) | Run tune dynamic linking | |
CN106796521B (zh) | 独立于产品发布的api版本控制 | |
CN109857432B (zh) | 一种游戏应用的热更新方法和装置 | |
US10198279B2 (en) | Thread synchronization for platform neutrality | |
CN107368339B (zh) | 容器入口程序运行方法、***、设备及存储介质 | |
US10552135B1 (en) | Reducing a size of an application package | |
US20240078101A1 (en) | Automated application deployment | |
CN112416418A (zh) | 应用组件的生成方法、装置、计算机设备和可读存储介质 | |
CN111045746B (zh) | 代码扩展方法和框架 | |
WO2014145147A1 (en) | Web services provided from software framework | |
CN114860202A (zh) | 项目运行方法、装置、服务器及存储介质 | |
CN115543486B (zh) | 面向无服务器计算的冷启动延迟优化方法、装置和设备 | |
CN107291498B (zh) | 一种基于apk的底层驱动升级方法及*** | |
CN113342401A (zh) | 应用程序安装包的生成方法、装置、设备及介质 | |
TW202333045A (zh) | 應用程式及軟體開發套組之獨立發佈及服務 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |