Computer programs are groups of instructions that describe actions to be performed by a computer or other processor-based device. When a computer program is loaded and executed on computer hardware, the computer will behave in a predetermined manner by following the instructions of the computer program. Accordingly, the computer becomes a specialized machine that performs tasks prescribed by the instructions.
A programmer using one or more programming languages creates the instructions comprising a computer program. Typically, source code is specified or edited by a programmer manually and/or with help of an integrated development environment (IDE). Subsequently, the source code can be compiled or otherwise transformed by another program into computer instructions executable by a computer or like device.
Programs can be deployed for use on one or more client devices. For example, a program can be published initially on a website, network shared source or on a media such as a compact disc. A program can be installed on an end-user device and accessed even when offline. Alternatively, a program can be installed remotely or a server, for instance, and run online without installing anything permanent on the device. A hybrid is also possible, in which code installation and execution is split between a local device and a remote server.
Installation and/or deployment are governed by at least one manifest, which can form part of an application. An application manifest is authored by the application developer and describes or defines an application in terms of its component parts and relationships, among other things. In other words, a manifest provides information regarding application components and needs of an application in an environment. For example, a manifest can include application name, execution entry point, and libraries employed. Manifests can also reference other manifests. This information is utilized by an application loader to load a program for execution.
Conventionally, manifests are specified in XML (eXtensible Markup Language). Various tags or elements are utilized to label manifest data in distinct manners. More specifically, a number of different or customized manifest data schemas are employed to specify the data.
The following presents a simplified summary in order to provide a basic understanding of some aspects of the disclosed subject matter. This summary is not an extensive overview. It is not intended to identify key/critical elements or to delineate the scope of the claimed subject matter. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
Briefly described, the subject disclosure pertains to application deployment utilizing manifests. More specifically, an application manifest is specified in a markup-based language including but not limited to conventional presentation-targeted markup languages (e.g., XAML, XUL . . . ). In accordance with aspects of the disclosure, a standard set of language markup elements or tags are utilized to declare a manifest. Subsequently, these elements can be mapped directly to the same or similar objects forming an object hierarchy that can be utilized to deploy an application. Furthermore, an interface can be employed to enable fine grain programmatic control of manifest objects and interaction with such objects in a predictable and consistent manner.
To the accomplishment of the foregoing and related ends, certain illustrative aspects of the claimed subject matter are described herein in connection with the following description and the annexed drawings. These aspects are indicative of various ways in which the subject matter may be practiced, all of which are intended to be within the scope of the claimed subject matter. Other advantages and novel features may become apparent from the following detailed description when considered in conjunction with the drawings.
Systems and methods are described hereinafter with respect to authoring and employment of application manifests and the like. Markup-based languages can be utilized to implement application manifests, and the richness of such languages leveraged to facilitate interaction. For instance, markup language elements can be mapped to directly to objects accessible by programmers. Among other things, this feature allows consistent and predictable interaction with, as well as fine-grained control over, a manifest or more specifically objects comprising the manifest.
Various aspects of the subject disclosure are now described with reference to the annexed drawings, wherein like numerals refer to like or corresponding elements throughout. It should be understood, however, that the drawings and detailed description relating thereto are not intended to limit the claimed subject matter to the particular form disclosed. Rather, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the claimed subject matter.
Referring initially to
In some cases, a markup language like XML (eXtensible Markup Language) can be employed for manifest specification. Markup languages combine text with additional information about the text for instance in the form of tags (e.g., “<book>The Great Gatsby</book>”). A markup language can be extended to allow users to define their own tags in a schema, for instance. In this manner, sharing of structured data is facilitated across systems. While beneficial in some cases, the flexibility afforded by a markup language can be a disadvantage for manifests. In particular, many different custom schemas can be developed for specifying manifests which results in incompatibilities and the need for duplicative supporting infrastructure. Moreover, even if a schema could be standardized for manifests, resultant objects or other representations are still inconsistent making it difficult for programmers to interact with the manifest representation.
In accordance with an aspect of the claimed subject matter, the manifest component 112 can be implemented utilizing a markup-based language. Markup languages like XML are solely designed to store data. Markup-based languages are an extension of markup languages that provide more than just a way to store data. In addition, markup-based languages can provide application logic inline or behind the scenes, for instance. Hence, a markup-based language can refer to a declarative logic language. Moreover, such languages can be utilized to initialized objects and relationships between objects.
A few markup-based languages (also referred to as user interface markup languages) exist including XAML (eXtensible Application Markup Language) and XUL (eXtensible User interface Language), among others. These and other conventional languages were invented initially for presentation or display purposes. In particular, these languages are utilized to create or define user interface elements and application logic or flow control in a declarative manner.
According to an aspect of the claimed subject matter, such languages can be extended and applied to application manifests rather than or in addition to their convention presentation functionality. Moreover, the functionality and infrastructure can be leveraged for use with respect to application manifests. In particular, markup elements or tags can be mapped directly to objects. Among other things, this can enable predictable and consistent interaction with manifest related objects. Additionally, there is no need to learn a completely new language. Once a user interface markup language is understood, programmers can easily grasp the manifest extension. Furthermore, convention presentation infrastructure such as designers, validators, visualizers, amongst others, can be reused if desired essentially providing support for manifests free of cost. Still further yet, flexibility is provided to further develop aspects incrementally or in parallel.
As shown in system 100, the manifest component 112 can be received or retrieved on a system side by a parser component 120 communicatively coupled to the type/schema component 130. The parser component 120 parses the manifest component 112 and maps markup elements or tags directly to language objects utilizing information regarding language types, classes, schemas or the like from type/schema component 130. For instance, element names and attributes can correspond to an object class and object properties, respectively. It is to be appreciated that the type/schema component 130 can contain additional types or schemas related to manifests such as a deployment class. These objects can then be loaded into an in-memory structure such as object hierarchy 140. Such direct and consistent mapping of a markup representation to an object model enables developers to obtain fine grain control of manifest objects and aids interaction in a predictable and consistent manner, similar to the mapping they are already familiar with in the presentation space.
It is to be noted that parser component 120 can be a specialized component for parsing manifests. Alternatively, a conventional user interface markup language parser can be retargeted or altered to support manifests. As such, current technology can be leveraged for parsing and object creation related to a markup-based language representation of a manifest.
Turning attention to
What follows is an exemplary manifest specified in XAML. It is to be appreciated that the exemplary code is not meant to limit the appended claims in any manner but rather to further aid clarity and understanding with respect to aspects of the claimed subject matter.
Here, the “Deployment” tag is provided which means there will be a corresponding deployment object instance or an object instance of type deployment. This root element includes three namespace attributes providing element definitions. The first namespace “xmlns . . . ” is the default and it defines “Deployment,” among other things. The namespaces “xmlns: x= . . . ” and “xmlns: custom . . . ” provide an additional and custom namespace, respectively. The additional namespace identifies extra tags needed to be able to represent objects in markup or the XAML specific elements. The custom namespace are types created by developers. The first element property is “EntryPoint” that indicates that an entry point into this application is described by the custom type “MyApplication.”
The second element property is “Parts” which defines a collection of parts required for application execution. The first part is an assembly part whose name is defined as “x:name= . . . ” This provides a standard way of declaring an id or name. By contrast, there is no standard in XML so developers use “ids,” “IDS,” “Ids,” among others, to declare an id or name. As a result of such language-imposed standardization, a consistent interface can be employed to find a name. If a find name “MyDll1” is performed, an object can be returned of type assembly part. Also included in the assembly part is a source. Similar to presentation XAML where an image may be the source, a source can be designated for a named assembly part.
Another portion of “Parts” element is “ComponentPart,” which points to a component used by an application. For example, this could correspond to a calendaring component, a charting component, or another manifest component. Here, the component part refers to “MyCompPkg” and points to source “Components/Foo.zip.” It is to be noted that the component part itself can be built of multiple files and components. Thus, there can be nesting of components in this manner.
A plurality of other element properties can also be included under the root deployment tag. As shown, the exemplary manifest includes a “RequiredExtension” property and a “SupportedCultures” property for designation of extensions and supported cultures for an application, respectively.
On the client side when this manifest is analyzed it tells an application loader, for instance, to start the application by executing the type “MyApplication.” However, prior to execution three parts need to be loaded or downloaded, namely “MyDll1,” “MyDll2,” and “MyCompPkg.” Still further yet, these parts can require their own parts. Hence, a progress bar can be displayed while the parts are loaded. Subsequently, the application will be executed or spawned.
Referring to
Turning attention to
By way of example and not limitation, a component may not be loaded initially prior to application execution due to infrequent use. However, during application execution a user may initiate action that requires the component. In this instance, upon detection the code component 510 can modify the object hierarchy to prompt loading of the component. Moreover, the code necessary to affect this change is simple and consistent. More specifically, a deployment part can be created and hooked into the object hierarchy tree. This is similar to what developers are familiar with doing in web development, for instance, where a button is hooked into a webpage and it automatically appears there. As per manifests, conventionally code had to call some initially unknown method utilizing an obscure API. Consistency is not enforced as is done where a markup-based language is employed, for example.
The aforementioned systems, architectures, and the like have been described with respect to interaction between several components. It should be appreciated that such systems and components can include those components or sub-components specified therein, some of the specified components or sub-components, and/or additional components. Sub-components could also be implemented as components communicatively coupled to other components rather than included within parent components. Further yet, one or more components and/or sub-components may be combined into a single component to provide aggregate functionality. Communication between systems, components and/or sub-components can be accomplished in accordance with either a push and/or pull model. The components may also interact with one or more other components not specifically described herein for the sake of brevity, but known by those of skill in the art.
Furthermore, as will be appreciated, various portions of the disclosed systems above and methods below can include or consist of artificial intelligence, machine learning, or knowledge or rule based components, sub-components, processes, means, methodologies, or mechanisms (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines, classifiers . . . ). Such components, inter alia, can automate certain mechanisms or processes performed thereby to make portions of the systems and methods more adaptive as well as efficient and intelligent. By way of example and not limitation, types or schemas can be arbitrarily rich and include such intelligent mechanisms to affect predictive-downloading of application parts. More specifically, a part object can be implemented in such a way as to predict whether it is needed or not and automatically initiate a download such that the functionality afforded by the part is available when needed or requested.
In view of the exemplary systems described supra, methodologies that may be implemented in accordance with the disclosed subject matter will be better appreciated with reference to the flow charts of
Referring to
Referring to
The term “markup-based language” is used herein to specify a programming language that utilizes a markup language representation and maps elements or tags of the markup to the same or similar objects in a tree or object hierarchy, among other things. In one embodiment, the markup language can be XML, but is not limited thereto. Furthermore, a few conventional languages meet this definition including XAML and XUL. However, these languages are currently targeted toward graphical interfaces and are thus often referred to as user interface markup languages or the like. The term “markup-based language” is meant to encompass these and like languages. Nevertheless, aspects of the claimed subject matter concern retargeting or extending such languages for manifests and as such, the presentation bias in the descriptive term is not used since it is unnecessary and confusing in this context.
The word “exemplary” or various forms thereof are used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Furthermore, examples are provided solely for purposes of clarity and understanding and are not meant to limit or restrict the claimed subject matter or relevant portions of this disclosure in any manner. It is to be appreciated that a myriad of additional or alternate examples of varying scope could have been presented, but have been omitted for purposes of brevity.
As used herein, the term “inference” or “infer” refers generally to the process of reasoning about or inferring states of the system, environment, and/or user from a set of observations as captured via events and/or data. Inference can be employed to identify a specific context or action, or can generate a probability distribution over states, for example. The inference can be probabilistic—that is, the computation of a probability distribution over states of interest based on a consideration of data and events. Inference can also refer to techniques employed for composing higher-level events from a set of events and/or data. Such inference results in the construction of new events or actions from a set of observed events and/or stored event data, whether or not the events are correlated in close temporal proximity, and whether the events and data come from one or several event and data sources. Various classification schemes and/or systems (e.g., support vector machines, neural networks, expert systems, Bayesian belief networks, fuzzy logic, data fusion engines . . . ) can be employed in connection with performing automatic and/or inferred action in connection with the subject innovation.
Furthermore, all or portions of the subject innovation may be implemented as a method, apparatus or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement the disclosed innovation. The term “article of manufacture” as used herein is intended to encompass a computer program accessible from any computer-readable device or media. For example, computer readable media can include but are not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips . . . ), optical disks (e.g., compact disk (CD), digital versatile disk (DVD) . . . ), smart cards, and flash memory devices (e.g., card, stick, key drive . . . ). Additionally it should be appreciated that a carrier wave can be employed to carry computer-readable electronic data such as those used in transmitting and receiving electronic mail or in accessing a network such as the Internet or a local area network (LAN). Of course, those skilled in the art will recognize many modifications may be made to this configuration without departing from the scope or spirit of the claimed subject matter.
In order to provide a context for the various aspects of the disclosed subject matter,
With reference to
The system memory 1016 includes volatile and nonvolatile memory. The basic input/output system (BIOS), containing the basic routines to transfer information between elements within the computer 1012, such as during start-up, is stored in nonvolatile memory. By way of illustration, and not limitation, nonvolatile memory can include read only memory (ROM). Volatile memory includes random access memory (RAM), which can act as external cache memory to facilitate processing.
Computer 1012 also includes removable/non-removable, volatile/non-volatile computer storage media.
The computer 1012 also includes one or more interface components 1026 that are communicatively coupled to the bus 1018 and facilitate interaction with the computer 1012. By way of example, the interface component 1026 can be a port (e.g., serial, parallel, PCMCIA, USB, FireWire . . . ) or an interface card (e.g., sound, video, network . . . ) or the like. The interface component 1026 can receive input and provide output (wired or wirelessly). For instance, input can be received from devices including but not limited to, a pointing device such as a mouse, trackball, stylus, touch pad, keyboard, microphone, joystick, game pad, satellite dish, scanner, camera, other computer and the like. Output can also be supplied by the computer 1012 to output device(s) via interface component 1026. Output devices can include displays (e.g., CRT, LCD, plasma . . . ), speakers, printers and other computers, among other things.
The system 1100 includes a communication framework 1150 that can be employed to facilitate communications between the client(s) 1110 and the server(s) 1130. The client(s) 1110 are operatively connected to one or more client data store(s) 1160 that can be employed to store information local to the client(s) 1110. Similarly, the server(s) 1130 are operatively connected to one or more server data store(s) 1140 that can be employed to store information local to the servers 1130.
Client/server interactions can be utilized with respect with respect to various aspects of the claimed subject matter. In fact, while aspects of the claimed subject matter can concern conventional deployment directly on a client 1110, they can also pertain to service deployment in a web browser, for instance. Accordingly, a manifest can be provided to a browser executing on a client 1110 from a server 1130 across the communication framework 1150. Based thereon, parts and/or components required for execution can be downloaded from one or more servers 1130 and execution initiated as specified. Additional parts and/or components can subsequently be downloaded to a client 1110 from one or more servers 1130 as needed. In one particular implementation, infrastructure utilized by a user interface markup language like XAML for presentation including parsers, loaders and the like can be reused or leveraged for employment with manifests thereby reducing code size for network based applications, among other things.
What has been described above includes examples of aspects of the claimed subject matter. It is, of course, not possible to describe every conceivable combination of components or methodologies for purposes of describing the claimed subject matter, but one of ordinary skill in the art may recognize that many further combinations and permutations of the disclosed subject matter are possible. Accordingly, the disclosed subject matter is intended to embrace all such alterations, modifications and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the terms “includes,” “contains,” “has,” “having” or variations in form thereof are used in either the detailed description or the claims, such terms are intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.