Various embodiments provide a service platform that integrates services, such as web services and/or local services, across a variety of applications. In at least some embodiments, services can be integrated with legacy applications that are “unaware” of such services, as well as applications that are aware of such services.
|
7. A computer-implemented method comprising:
displaying a list of services the list of services including at least one service that is are not natively offered by an application and at least one service that is offered by the application, the at least one service that is not natively offered by the application retrieved responsive to an application programming interface (API) call, the displaying taking place responsive to a user action that has taken place within the application;
receiving a selection of a service from the list of services, the selected service utilizing a declarative model that includes at least a display tag that provides a name of the selected service and a preview tag that provides a universal resource locator (URL) corresponding to the selected service;
displaying a preview of the selected service by displaying content from the URL corresponding to the selected service; and
providing, separate from the preview, access to service functionality associated with the preview.
15. A system comprising:
one or more computer-readable storage media;
computer-readable instructions on the one or more computer-readable storage media which, when executed, implement a method comprising:
maintaining a service store that describes various services, the various services including at least one service that is are not natively offered by an application and at least one service that is offered by the application;
providing an application program interface that can be called to discover the various services, wherein the application program interface can be called by different entities including an operating system, a common application-hostable control, and the application;
receiving a call via the application program interface to discover one or more services;
retrieving, from the service store, information associated with one more services;
providing the information to a caller from which the call was received and
displaying a preview of a selected service of the one or more services by displaying content from a universal resource locator (URL) associated with the selected service, the selected service utilizing a declarative model that includes at least a display tag that provides a name of the selected service and a preview tag that provides the URL associated with the selected service.
1. One or more computer-readable storage media embodying computer readable instructions which are executable to provide a service platform comprising:
multiple different platform layers that are designed to integrate services, both web services and/or local services, across a variety of applications, the multiple different platform layers comprising:
a global integration layer designed to enable applications that are not service aware to allow a user to access and use services from within the applications;
common control integration layer that provides a control that can be hosted by different applications, the control being configured to be populated with services that applications natively support as well as services which are not natively supported by the application and being configured to display a user interface that includes a list of services, the list of services including at least one service that the applications natively support and at least one service which is not natively supported by the applications, the user interface configures to receive a selection of a service from the list of services and display a preview of the selected service by displaying content from a universal resource locator (URL) associated with the selected service, the selected utilizing a declarative model that includes at least a display tag that provides a name of the selected service and a preview tag that provides the URL associated with the selected service; and
a custom integration layer that provides a set of application programming interfaces (APIs) that can be used by applications that are aware of the APIs to receive the list of services for presentation to a user.
2. The one or more computer-readable storage media of
3. The one or more computer-readable storage media of
4. The one or more computer-readable storage media of
5. The one or more computer-readable storage media of
execute the selected service responsive to selection of the preview user action.
6. The one or more computer-readable storage media of
9. The method of
prior to said displaying the list services:
detecting, with an operating system, the user action; and
responsive to said detecting, retrieving the at least one list of service that is not natively offered by the application.
10. The method of
11. The method of
12. The method of
13. The method of
providing a control that can be hosted by multiple applications;
populating the control with services offered by the application; and
populating the control with services that are not natively offered by the application.
14. The method of
16. The system of
17. The system of
18. The system of
|
To date, integrating services such as web services and local services with client applications has been a challenging task. Challenges are posed not only from the standpoint of easing integration with client applications, but also exposing services in a graceful, consistent way. These challenges have resulted in complex coding scenarios as well as inconsistent user experiences which, in turn, can lead to dissatisfaction on the part of users.
This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
Various embodiments provide a service platform that integrates services, such as web services and/or local services, across a variety of applications. In at least some embodiments, services can be integrated with legacy applications that are “unaware” of such services, as well as applications that are aware of such services.
In at least some embodiments, the platform comprises a multi-layered structure designed to integrate services across a variety of applications. The multi-layered structure includes, in at least some embodiments, a global integration layer that is designed to integrate services with legacy applications, as well as a common control integration layer and a custom integration layer. The common control integration layer can be used to provide a common control that can be used across applications to integrate not only services of which the applications are aware, but services of which the applications are not aware. The custom integration layer can be used by various applications to customize user interfaces that are designed to integrate various offered services.
The same numbers are used throughout the drawings to reference like features.
Overview
Various embodiments provide a service platform that integrates services, such as web services and/or local services, across a variety of applications. In at least some embodiments, services can be integrated with legacy applications that are “unaware” of such services, as well as applications that are aware of such services. Services can include, by way of example and not limitation, any of a variety of services such as search services, definition services, investigation services, mapping services, news services, image services, translation services and the like. In one or more embodiments, the service platform is extensible to provide for integration of new or changed services in a seamless manner across a variety of applications.
In at least some embodiments, the platform comprises a multi-layered structure designed to integrate services across a variety of applications. The multi-layered structure includes, in at least some embodiments, a global integration layer that is designed to integrate services with legacy applications, as well as a common control integration layer and a custom integration layer. The common control integration layer can be used to provide a common control that can be used across applications to integrate not only services of which the applications are aware, but services of which the applications are not aware. The custom integration layer can be used by various applications to customize user interfaces that are designed to integrate various offered services.
In the discussion that follows, a section entitled “Operating Environment” is provided and describes one environment in which one or more embodiments can be employed. Following this, a section entitled “Example Multi-layered Service Platform” is provided and describes a multi-layered platform in accordance with one or more embodiments. Next, a section entitled “Implementation Example” describes an example implementation of a multi-layered service platform. Next, a section entitled “Declarative Model” is provided and describes an example declarative model that can be used to enable service providers to describe services that are offered. Following this, sections entitled “Global Integration Layer—User Interface Example”, “Common Control Integration Layer—User Interface Example”, and “Custom Integration Layer—User Interface Example” each respectively provide examples of user interfaces in accordance with one or more embodiments. Next, a section entitled “Example Methods” describes example methods in accordance with one or more embodiments. A section entitled “Example APIs” gives a description of a set of APIs in accordance with one or more embodiments. Finally, a section entitled “Example System” describes an example system that can be utilized to implemented one or more embodiments.
Operating Environment
In addition, computing device 102 includes a service platform 110. The service platform is designed to integrate services, such as web services and/or local services, across a variety of applications such as those mentioned above and others. In at least some embodiments, services can be integrated with legacy applications that are “unaware” of such services, as well as applications that are aware of such services as will become apparent below. As indicated in the figure, the service platform resides in the form of computer-readable instructions or code that resides on computer-readable media 106.
In addition, environment 100 includes a network 112, such as the Internet, and one or more web sites 114 from and to which content can be received and sent. Websites 114 can offer a variety of services that can be integrated by service platform 110, as will become apparent below.
Computing device 102 can be embodied as any suitable computing device such as, by way of example and not limitation, a desktop computer, a portable computer, a handheld computer such as a personal digital assistant (PDA), cell phone, and the like.
Example Multi-Layered Service Platform
In the illustrated and described embodiment, the global integration layer 212 is designed to enable applications that are not “service aware” to nonetheless allow a user to access and use such services from within the applications. To this end, in at least some embodiments, the global integration layer provides a generic user interface that displays one or more services that are available and which can be invoked from within an application. In this embodiment, functionality of the global integration layer is supported by an operating system operating on a local client device. When a user wishes to ascertain which services are available from within an application that is not service aware, the user can take a particular action, such as using a shortcut on the operating system desktop (e.g. keying a hot key combination) which is detected by the operating system. Responsive to detecting the user action, the operating system can make an API call to a local service store to receive a listing of services that are available. The operating system can then present a generic user interface that lists the available services for the user.
In one or more embodiments, once the generic user interface has been presented to the user, the user can take a number of different actions. For example, in some embodiments, the user can hover their cursor over a particular service description or icon and receive a preview of that service. Alternately or additionally, a user can click on a particular service description or icon and then be navigated to that service's functionality. Navigation to a particular service's functionality can include a local navigation or a web-based navigation. In one or more embodiments, navigation can include sending data, such as that selected by a user, to the service for operation by the service.
Thus, in this embodiment, the generic user interface which is provided by the operating system is knowledgeable of the particular API calls that are used to present available services and to enable users to select one or more of the services. In this manner, applications that are not “service aware” can still be used as a starting point for a user to access services.
In the illustrated and described embodiment, the common control integration layer 214 provides a control that can be hosted by one or more applications. The control can allow applications to populate those services that the applications natively support, as well as to provide a means by which services which are not natively supported by the applications can nonetheless be offered to a user. When a user wishes to ascertain which services are available from within an application, the user can take a particular action such as making a particular selection, such as a text selection or file selection. Responsive to detecting the user action, the hosted control can make an API call to a local service store to receive a listing of services that are available. The control can then present a user interface that lists the available services for the user. These services can include services that are offered by the application natively, as well as services that are offered by other service providers either locally or remotely.
In one or more embodiments, once the user interface has been presented to the user, the user can take a number of different actions. For example, in some embodiments, the user can hover their cursor over a particular service description or icon and receive a preview of that service. Alternately or additionally, a user can click on a particular service description or icon and then be navigated to that service's functionality. Navigation to a particular service's functionality can include a local navigation or a web-based navigation.
Thus, in this embodiment, the control is knowledgeable of the particular API calls that are used to present available services and to enable users to select one or more of the services. In this manner, applications can use the control to both offer services natively and provide services offered by other service providers. In addition, as the control can be hosted by many different applications, a common user experience can be provided across a variety of applications.
In one or more embodiments, the custom integration layer 216 provides a set of APIs that can be used by applications that are aware of the APIs to receive a list of offered services and then create their own user interface and user experience through which a user can consume the offered services.
Having described the general notion of a multi-layered service platform, consider now an implementation example that describes one specific instance of a multi-layered service platform. It is to be appreciated and understood that the following description provides but one example, and is not to be used to limit application of the claimed subject matter to a specific implementation. Accordingly, other implementations can be utilized without departing from the spirit and scope of the claimed subject matter.
In this particular example, a global integration layer includes a system service menu 312 and a service management component 314, and a common control integration layer includes a common context menu 316. Further, in one or more embodiments, a custom integration layer includes a data recognizer component 318, an application program interface or API 320, a service store 322, a preview component 324, and an execute component 326.
In one or more embodiments, the system service menu 312 of the global integration layer can be invoked by a user while using one or more applications and with context provided by the application(s). In practice, applications that are not “service aware” can be used to invoke the system service menu. In one or more embodiments, the system service menu is supported by the client device's operating system and can be invoked in any suitable way. For example, in at least some embodiments, a user can access the system service menu by keying in a particular hot key combination. Once detected by the operating system, the hot key combination results in an API call to application program interface 320 to receive a list of available services. The available services can be services that are offered locally and/or services that are offered by remote service providers. System service menu 312 then presents a user interface that lists the available services that can be accessed by the user. In one or more embodiments, the user interface presented by the system service menu 312 is generic across a variety of applications, thus offering an integrated, unified user experience.
Once the services are listed for the user via the user interface presented by the system service menu 312, the user may choose a particular service. In one or more embodiments, a user can receive a preview of a service, via a preview component 324 by taking some action with respect to a displayed service. For example, a user may hover their cursor over or near a particular description or icon associated with the service and receive the preview of that service. In one or more embodiments, previews can be provided for the user without the user having to leave the context of their application. When the user hovers their cursor in this manner, the operating system can make an API call to the preview component 324 to receive information or data that is to be presented as part of the preview. Alternately or additionally, by clicking on a particular service description or icon, a user can cause the service to execute. When this happens, the operating system can make an API call to the execute component 326 which, in turn, can cause the service to execute. Execution of the service can include, by way of example and not limitation, a navigation activity which can be either or both of a local navigation or a remote navigation. Examples of how this can be done are provided below.
In one or more embodiments, service management component 314 provides various management functionalities associated with services. For example, in one or more embodiments, the service management component 314 can provide functionality that enables a user to add, delete, and/or update the particular service. Further, in one or more embodiments, the service management component can enable a user to set a particular service as a default service for easy access.
In one or more embodiments, the common context menu 316 of the common control integration layer provides a common context menu across a variety of applications. In one or more embodiments, the common context menu is a control that can be hosted by a variety of applications. In at least some embodiments, these applications do not have to natively understand how a service or associated activity works. Yet, by hosting the control, the application can still offer the service as part of the application experience. When an application hosts the common context menu, the application can populate the menu with services it offers, as well as other services that are offered by other service providers. As such, an application can offer both native services as well as non-native services. In one or more embodiments, the common context menu is knowledgeable of the application program interface 320 and can make appropriate API calls to receive information on services that are offered and described in service store 322. Specifically, in one or more embodiments, the common context menu is aware of the particular service API.
In one or more embodiments, data recognizer 318 is configured to recognize data associated with particular API calls in which service listings are requested. Accordingly, the data recognizer 318 can then ensure that a proper set of services are returned to the caller. For example, if a user selects a particular portion of text, such as an address, then a particular subset of services may be inappropriate to return. In this case, the data recognizer 318 can see to it that a correct listing of services is returned.
In one or more embodiments, application program interface 320 provides a set of APIs that can be used to add, delete, or otherwise manage services that can be presented to the user. The APIs can include those that are used to receive a listing of services. But one example of the set of APIs is provided below in a section entitled “Example APIs”.
In one or more embodiments, service store 322 is utilized to maintain information and/or data associated with different services that can be offered. Services can be flexibly added and deleted from the service store. This can be done in any suitable way. In one or more embodiments, this can be done through the use of a declarative model that service providers use to describe the services that they offer. One example of a declarative model is provided just below in a section entitled “Declarative Model”. When a call is received by the application program interface 320, information associated with the call can be retrieved from the service store 322 and presented accordingly.
In one or more embodiments, the preview component 324 can be utilized to provide a preview of one or more offered services. An example of how this can be done is provided below.
In one or more embodiments, the execute component 326 can be utilized to execute one or more of the services that are offered. An example of how this can be done is provided below.
Declarative Model
In one or more embodiments, service providers can utilize a declarative model to describe services that are offered. In at least some embodiments, the declarative model utilizes an XML description to describe aspects of offered services. As an example, consider
Specifically, the XML description pertains to a mapping service. The XML description provides a homepage URL which is the homepage associated with the offered service. In addition, a <display> tag enables a service provider to provide a name that is then used in a preview display as shown. An <activity> tag contains information associated with the offered service. Specifically, in this example, the <activity> tag describes a category of service which, in this example, is a “map” service. An <activityAction> tag then describes context that can trigger the service, as well as behaviors that can be performed responsive to a triggering context.
Specifically, in this example, when a user makes a particular selection (i.e. context=“selection”), a preview action can be performed. In this case, the user's selection is provided as a value parameter which is then sent to the URL listed in the <preview> tag. The recipient of the value parameter can then return content associated with a preview of the user's selection, such as the illustrated preview map. Likewise, if a user clicks on or otherwise selects the preview, their selection is provided to the URL listed in the <execute> tag and the user can be navigated to that URL to be exposed to further functionality provided by the service provider. In this example, if a user clicks on the preview map, they are navigated to the listed URL and one or more of the included parameters are used to provide driving directions to a particular address.
By using a declarative model as described above, services can be easily extended and/or modified by service providers. Specifically, service providers can continually modify and change their provided services and can simply update their declarative model for incorporation in the service platform. In addition, this makes it easier for the system hosting these services to be more secure and provide a consistent experience.
Having now considered a system that implements a multi-layered service platform as well as an example declarative model, consider now a discussion of example user interfaces that can be employed in connection with the global integration layer, the common control integration layer, and the custom integration layer, each of which appears under its own heading.
Global Integration Layer—User Interface Example
Referring to
Referring to
At this point, the user may or may not choose to execute the service. If the user chooses to execute the service by, for example, clicking on the preview 600, a full navigation to a definition site can take place. For example,
In this manner, an application that does not natively support a particular service can, nonetheless, through the support of the operating system, provide access to a number of services.
As another example, consider
Referring to
Again, in this instance, a reader application that does not natively support a mapping service can nonetheless, through the support of the operating system, provide access to a mapping service.
Common Control Integration Layer—User Interface Example
In one or more embodiments, the common control integration layer can provide a common control that can be used by applications to expose services that can be accessed by an application. In one or more embodiments, the common control takes the form of a system service menu such as that provided by system service menu 312 (
Responsive to the user's selection, a common control can be presented which can display for the user not only services offered by the application, but services that are offered by other service providers. As an example, consider
Referring to
In this manner, a common control can be used across a variety of applications to enable services to be presented to a user that are natively supported by the application as well as those that are not natively supported by the application. Use of a common control across different applications provides a unified, integrated user experience.
Custom Integration Layer—User Interface Example
In one or more embodiments, the custom integration layer provides a set of APIs that can be used by applications that are aware of the APIs to receive a list of offered services and then create their own user interface and user experience through which a user can consume the offered services. As an example, consider
Referring to
Example Methods
Step 1600 detects, with an operating system, a user action. In the examples above, a user is working within an application such as a legacy application that does not necessarily support services that are desired to be offered. Here, a user action can be one that indicates that the user wishes to learn about and possibly consume one or more services that are not offered by the application. Accordingly, through the user's action, which can constitute any type of action such as a hot key combination, the user can indicate that they wish to learn about offered services. The user action is detected by the operating system and, responsively, step 1602 retrieves a list of services that are not natively supported by the application. The list of services can be retrieved in any suitable way. In the examples above, the list is retrieved through an operating system call to a platform-supported API. Step 1604 displays the list of services for the user. This step can be performed in any way using any suitable user interface. Step 1606 provides a preview of one or more services. This step can be performed in any suitable way. In the examples above, previews are provided responsive to the user taking some action such as hovering their cursor over or near an icon associated with the service or a description of the service. Step 1608 provides access to service functionality which can include, in this example, navigating the user to a remote website where the service functionality is offered. Alternately or additionally, service functionality can be provided locally.
Step 1700 provides a control that can be hosted by multiple applications. Examples of such a control are provided above. Step 1702 populates the control with services offered by an application. Here, the services that are offered by the application are those that are natively offered by the application. Step 1704 populates the control with services that are not natively offered by the application. This step can be performed in any suitable way. For example, an API call can be made by the control to an API to retrieve a list of services that are not natively offered by the application. Step 1706 displays a list of populated services for the user. Examples of how this can be done are provided above. Step 1708 provides a preview of one or more services and step 1710 provides access to service functionality associated with one or more of the services. Examples of how this can be done are provided above.
Step 1800 maintains a service store that describes various services. Examples of various services are provided above. Step 1802 provides an application program interface that can be called to discover services. In one or more embodiments, the application program interface can be called by different entities or different types of entities. For example, in some embodiments, a caller might constitute an operating system. An example of this is provided in the global integration layer described above. Alternately or additionally, a caller might constitute a control, such as a common control that can be hosted across different types of applications. An example of this is provided in the common control integration layer described above. Alternately or additionally, a caller might constitute an application that is aware of the application program interface. Collectively, these different types of callers can provide for a robust service platform implementation which supports service offerings across a variety of applications including those that are not aware of services that are offered as well as those applications that are aware of services that can be offered.
Step 1804 receives a call to discover one or more services. As noted above, this call can come from different entities or types of entities. Step 1806 retrieves information associated with one or more services. This step can be performed by accessing a service store, such as the one that is described above. Step 1808 provides information to the caller for display for a user. Specifically, in this example, the retrieved information associated with the services can be provided to the caller so that it can be displayed or otherwise exposed for the user.
Step 1810 displays a list of services for the user. Examples of how this can be done are provided above. Step 1812 provides a preview of one or more services and step 1814 provides access to service functionality. Examples of how this can be done are provided above.
Having described a number of methods that can be implemented in one or more embodiments, consider now an example set of APIs that can be provided by the service platform. It is to be appreciated and understood that the example provided just below is intended to serve as an example only. Accordingly, the example is not meant to limit application of the claim subject matter to the specific APIs shown and described.
Example APIs
In accordance with one or more embodiments, the following set of APIs can be included and exposed by the service platform and/or used by third party providers as indicated. It is to be appreciated and understood that the following set of APIs constitutes an example only. As such, other APIs can be utilized without departing from the spirit and scope of the claimed subject matter.
// Represents the different types of data on which an activity may execute.
enum ActivityContentType {
Selection,
Link,
Document };
// There is one activity manager available to the system that manages a list of activities.
IActivityManager
// Get a list of the activities that may execute for a particular activity content type by
group.
- HRESULT GetActivityGroupEnumerator(ActivityContentType type,
IActivityGroupEnumerator**);
// Set the provided activity as the default of its group
- HRESULT SetActivityGroupDefault(IActivity *pActivity);
// Enable or disable an activity.
- HRESULT SetActivityEnabled(IActivity *pActivity, bool fEnabled);
// Remove an activity from the activity manager.
- HRESULT UninstallActivity(IActivity *pActivity);
// Install a declarative activity from an OpenService XML description of that activity that
may be found at the provided URI.
- HRESULT InstallXMLActivity(LPCWSTR pwzActivityXMLURI);
// Install an activity that is based on the provided COM class which implements the
ICOMActivity interface. Those properties that are not defined by the COM class are
provided upon installation (activity's display name, group name, etc).
- HRESULT InstallCOMActivity(REFIID riidCOMClass, LPCWSTR pwzDisplayName,
LPCWSTR pwzHandlerName, LPCWSTR pwzGroupName, LPCWSTR pwzIconPath);
// Represents a list of activity groups.
IActivityGroupEnumerator
// Provides activity groups in sequence. After the final activity group NULL is returned.
- HRESULT Next(IActivityGroup**);
// Represents an activity group.
IActivityGroup
// Get the activity content type on which the activities of this group may execute.
- HRESULT GetType(ActivityContentType type*);
// Get the name of this activity group.
- HRESULT GetName(BSTR**);
// Get the default activity of this activity group. This may be NULL if there is no default.
- HRESULT GetDefaultActivity(IActivity**);
// Get the list of activities of this activity group.
- HRESULT GetActivityEnumerator(IACtivityEnumerator**);
// Represents a list of activities
IActivityEnumerator
// Provides activities in sequence. After the final activity NULL is returned.
- HRESULT Next(IActivity**);
// Represents a single activity
IActivity
// The activity returns true if and only if it may execute input of the specified activity
content type.
- HRESULT CanExecuteType(ActivityContentType type, BOOL*)
// The activity returns true if and only if it may preview input of the specified activity
content type.
- HRESULT CanPreviewType(ActivityContentType type, BOOL*)
// The activity returns true if and only if it can execute the specified input
- HRESULT CanExecute(IActivityInput *pInput, BOOL*);
// The activity returns true if and only if it can preview the specified input
- HRESULT CanPreview(IActivityInput *pInput, BOOL*);
// The activity will execute the specified input in the provided output context.
- HRESULT Execute(IActivityInput *pInput, IActivityOutputContext *pOutput);
// The activity will execute the specified input in the provided output context.
- HRESULT Preview(IActivityInput *pInput, IActivityOutputContext *pOutput);
// Returns a brief message about what would happen for the execution of the provided
input. For example, the URI to which the activity will navigate upon execution.
- HRESULT GetStatusText(IActivityInput *pInput, BSTR*);
// Returns the display name of the activity, for example, ‘Map with Windows Live’.
- HRESULT GetDisplayName(BSTR*);
// Returns the handler name of the activity, for example ‘Windows Live’.
- HRESULT GetHandlerName(BSTR*);
// Returns the group name of the activity, for example ‘Map’.
- HRESULT GetGroupName(BSTR*);
// Returns the Windows file path to the icon.
- HRESULT GetIconPath(BSTR*);
// Returns true if this activity is the default for its group.
- HRESULT IsDefault(BOOL*);
// Returns a string that uniquely identifies this activity in this activity manager.
- HRESULT GetID(BSTR*);
// This interface is implemented by third party activity implementors. It is a subset of the
methods found in the IActivity interface.
ICOMActivity - Implemented by third party Activity implementer
HRESULT CanExecuteType/CanPreviewType(ActivityContentType type, BOOL*)
HRESULT CanExecute/CanPreview(IActivityInput *pInput, BOOL*)
HRESULT Execute/Preview(IActivityInput *pInput, IActivityOutput *pOutput)
HRESULT GetStatusText(BSTR*)
// Represents the input text selection, link, or document on which an activity will execute
or preview.
IActivityInput
// Get the value of a named variable. Variables are specific to the input type and are
described by the OpenService specification. The type may be ‘text’ or ‘html’ and define
the format in which the variable's value is returned.
HRESULT GetVariable(LPCWSTR pwzVariableName, LPCWSTR
pwzOutputType, BSTR*)
// Returns true if the specified named variable defined.
HRESULT HasVariable(LPCWSTR pwzVariableName, LPCWSTR
pwzOutputType, BOOL*)
// Returns the activity content type of this input.
HRESULT GetType(ActivityContentType*)
// Represents a browser in which an activity may execute or preview
IActivityOutputContext
// Navigate to the specified URI optionally with the specified HTTP headers and post data
HRESULT Navigate(BSTR uri, BSTR headers, VARIANT* pvarPostData)
// Set a string of HTML for the browser to render. A caller may only either navigate or
set HTML.
HRESULT SetHTMLContent(BSTR html)
Having described an example set of APIs, consider now an example system that can be utilized to implement one or more of the above-described embodiments.
Example System
Computing device 1900 includes one or more processors or processing units 1902, one or more memory and/or storage components 1904, one or more input/output (I/O) devices 1906, and a bus 1908 that allows the various components and devices to communicate with one another. Bus 1908 represents one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. Bus 1908 can include wired and/or wireless buses.
Memory/storage component 1904 represents one or more computer storage media. Component 1904 can include volatile media (such as random access memory (RAM)) and/or nonvolatile media (such as read only memory (ROM), Flash memory, optical disks, magnetic disks, and so forth). Component 1904 can include fixed media (e.g., RAM, ROM, a fixed hard drive, etc.) as well as removable media (e.g., a Flash memory drive, a removable hard drive, an optical disk, and so forth).
One or more input/output devices 1906 allow a user to enter commands and information to computing device 1900, and also allow information to be presented to the user and/or other components or devices. Examples of input devices include a keyboard, a cursor control device (e.g., a mouse), a microphone, a scanner, and so forth. Examples of output devices include a display device (e.g., a monitor or projector), speakers, a printer, a network card, and so forth.
Various techniques may be described herein in the general context of software or program modules. Generally, software includes routines, programs, objects, components, data structures, and so forth that perform particular tasks or implement particular abstract data types. An implementation of these modules and techniques may be stored on or transmitted across some form of computer readable media. Computer readable media can be any available medium or media that can be accessed by a computing device. By way of example, and not limitation, computer readable media may comprise “computer storage media”.
“Computer storage media” include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. Computer storage media include, but are not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by a computer.
Various embodiments provide a service platform that integrates services, such as web services and/or local services, across a variety of applications. In at least some embodiments, services can be integrated with legacy applications that are “unaware” of such services, as well as applications that are aware of such services.
In at least some embodiments, the platform comprises a multi-layered structure is designed to integrate services across a variety of applications. The multi-layered structure includes, in at least some embodiments, a global integration layer that is designed to integrate services with legacy applications, as well as a common control integration layer and a custom integration layer. The common control integration layer can be used to provide a common control that can be used across applications to integrate not only services of which at the applications are aware, but services of which the applications are not aware. The custom integration layer can be used by various applications to customize user interfaces that are designed to integrate various offered services. In addition, users can have access to their services from many different types of applications regardless of how the applications choose to surface them.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Lyndersay, Sean, Pavlicic, Miladin, Kim, Jane T., Garcia, Jonathan, Risney, David L., Strauch, Steve
Patent | Priority | Assignee | Title |
10262006, | Apr 29 2016 | Microsoft Technology Licensing, LLC | Contextually triggered entry point |
10649619, | Feb 21 2013 | YAHOO ASSETS LLC | System and method of using context in selecting a response to user device interaction |
9703596, | Dec 10 2007 | Microsoft Technology Licensing, LLC | Service platform for in-context results |
D700205, | Mar 30 2012 | Microsoft Corporation | Display screen with graphical user interface |
D708205, | Jun 14 2012 | Microsoft Corporation | Display screen with graphical user interface |
D711417, | Aug 03 2012 | Microsoft Corporation | Display screen with graphical user interface |
D712918, | Sep 11 2012 | Apple Inc | Display screen or portion thereof with graphical user interface |
D806101, | Sep 11 2012 | Apple Inc. | Display screen or portion thereof with graphical user interface |
D859456, | Sep 11 2012 | Apple Inc. | Display screen or portion thereof with graphical user interface |
D939523, | Sep 11 2012 | Apple Inc. | Display screen or portion thereof with graphical user interface |
Patent | Priority | Assignee | Title |
6560633, | Jun 10 1999 | International Business Machines Corporation | Method for creating network services by transforming an XML runtime model in response to an iterative input process |
6678696, | Oct 28 1997 | Microsoft Technology Licensing, LLC | Transaction processing of distributed objects with declarative transactional attributes |
6912582, | Mar 30 2001 | Microsoft Technology Licensing, LLC | Service routing and web integration in a distributed multi-site user authentication system |
6970869, | May 09 2000 | Oracle America, Inc | Method and apparatus to discover services and negotiate capabilities |
7114148, | Sep 30 2002 | Microsoft Technology Licensing, LLC | Runtime services for network software platform |
7607136, | Oct 28 2003 | VALTRUS INNOVATIONS LIMITED | Method and apparatus for interfacing with a distributed computing service |
7640348, | Sep 21 2001 | Corel Corporation | System and method of managing access to web services |
7657609, | Jul 05 2005 | SAP SE | Data transfer in a multi-environment document management system access |
7716234, | May 26 2006 | Business Objects Software Ltd | Apparatus and method for querying databases via a web service |
20010034646, | |||
20020073058, | |||
20030043200, | |||
20030090510, | |||
20040054690, | |||
20050132296, | |||
20050160434, | |||
20060041891, | |||
20060085741, | |||
20060143568, | |||
20060179440, | |||
20060230068, | |||
20060271858, | |||
20070016573, | |||
20070044086, | |||
20070106956, | |||
20070150546, | |||
20070168926, | |||
20070282879, | |||
20080092171, | |||
20090083618, | |||
20090228804, | |||
KR20070115629, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Dec 10 2007 | Microsoft Corporation | (assignment on the face of the patent) | / | |||
Jan 28 2008 | PAVLICIC, MILADIN | Microsoft Corporation | CORRECTIVE ASSIGNMENT TO CORRECT THE DATE THAT JANE T KIM SIGNED THE ASSIGNMENT AND JR WAS LEFT OF OF DAVID L RISNEY, JR S NAME PREVIOUSLY RECORDED ON REEL 020546 FRAME 0008 ASSIGNOR S HEREBY CONFIRMS THE DATE SAYS 02 08 2008 AND IT SHOULD BE 02 05 2008 AND DAVID L RISNEY SHOULD BE SPELLED DAVID L RISNEY, JR | 027567 | /0202 | |
Jan 28 2008 | RISNEY, DAVID L | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020546 | /0008 | |
Jan 28 2008 | PAVLICIC, MILADIN | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020546 | /0008 | |
Jan 28 2008 | RISNEY, DAVID L , JR | Microsoft Corporation | CORRECTIVE ASSIGNMENT TO CORRECT THE DATE THAT JANE T KIM SIGNED THE ASSIGNMENT AND JR WAS LEFT OF OF DAVID L RISNEY, JR S NAME PREVIOUSLY RECORDED ON REEL 020546 FRAME 0008 ASSIGNOR S HEREBY CONFIRMS THE DATE SAYS 02 08 2008 AND IT SHOULD BE 02 05 2008 AND DAVID L RISNEY SHOULD BE SPELLED DAVID L RISNEY, JR | 027567 | /0202 | |
Jan 29 2008 | LYNDERSAY, SEAN | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020546 | /0008 | |
Jan 29 2008 | LYNDERSAY, SEAN | Microsoft Corporation | CORRECTIVE ASSIGNMENT TO CORRECT THE DATE THAT JANE T KIM SIGNED THE ASSIGNMENT AND JR WAS LEFT OF OF DAVID L RISNEY, JR S NAME PREVIOUSLY RECORDED ON REEL 020546 FRAME 0008 ASSIGNOR S HEREBY CONFIRMS THE DATE SAYS 02 08 2008 AND IT SHOULD BE 02 05 2008 AND DAVID L RISNEY SHOULD BE SPELLED DAVID L RISNEY, JR | 027567 | /0202 | |
Feb 05 2008 | GARCIA, JONATHAN | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020546 | /0008 | |
Feb 05 2008 | GARCIA, JONATHAN | Microsoft Corporation | CORRECTIVE ASSIGNMENT TO CORRECT THE DATE THAT JANE T KIM SIGNED THE ASSIGNMENT AND JR WAS LEFT OF OF DAVID L RISNEY, JR S NAME PREVIOUSLY RECORDED ON REEL 020546 FRAME 0008 ASSIGNOR S HEREBY CONFIRMS THE DATE SAYS 02 08 2008 AND IT SHOULD BE 02 05 2008 AND DAVID L RISNEY SHOULD BE SPELLED DAVID L RISNEY, JR | 027567 | /0202 | |
Feb 05 2008 | KIM, JANE T | Microsoft Corporation | CORRECTIVE ASSIGNMENT TO CORRECT THE DATE THAT JANE T KIM SIGNED THE ASSIGNMENT AND JR WAS LEFT OF OF DAVID L RISNEY, JR S NAME PREVIOUSLY RECORDED ON REEL 020546 FRAME 0008 ASSIGNOR S HEREBY CONFIRMS THE DATE SAYS 02 08 2008 AND IT SHOULD BE 02 05 2008 AND DAVID L RISNEY SHOULD BE SPELLED DAVID L RISNEY, JR | 027567 | /0202 | |
Feb 08 2008 | STRAUCH, STEVE | Microsoft Corporation | CORRECTIVE ASSIGNMENT TO CORRECT THE DATE THAT JANE T KIM SIGNED THE ASSIGNMENT AND JR WAS LEFT OF OF DAVID L RISNEY, JR S NAME PREVIOUSLY RECORDED ON REEL 020546 FRAME 0008 ASSIGNOR S HEREBY CONFIRMS THE DATE SAYS 02 08 2008 AND IT SHOULD BE 02 05 2008 AND DAVID L RISNEY SHOULD BE SPELLED DAVID L RISNEY, JR | 027567 | /0202 | |
Feb 08 2008 | KIM, JANE T | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020546 | /0008 | |
Feb 08 2008 | STRAUCH, STEVE | Microsoft Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 020546 | /0008 | |
Oct 14 2014 | Microsoft Corporation | Microsoft Technology Licensing, LLC | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 034542 | /0001 |
Date | Maintenance Fee Events |
Sep 09 2015 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Sep 12 2019 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Aug 23 2023 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Mar 27 2015 | 4 years fee payment window open |
Sep 27 2015 | 6 months grace period start (w surcharge) |
Mar 27 2016 | patent expiry (for year 4) |
Mar 27 2018 | 2 years to revive unintentionally abandoned end. (for year 4) |
Mar 27 2019 | 8 years fee payment window open |
Sep 27 2019 | 6 months grace period start (w surcharge) |
Mar 27 2020 | patent expiry (for year 8) |
Mar 27 2022 | 2 years to revive unintentionally abandoned end. (for year 8) |
Mar 27 2023 | 12 years fee payment window open |
Sep 27 2023 | 6 months grace period start (w surcharge) |
Mar 27 2024 | patent expiry (for year 12) |
Mar 27 2026 | 2 years to revive unintentionally abandoned end. (for year 12) |