Using attributes to identify and filter pluggable functionality
First Claim
1. A computer-implemented method for using an attribute to identify a functionality, the method comprising:
- discovering a software consumer module, wherein the software consumer module is configured to consume the functionality;
discovering a definition module, wherein the definition module is configured to define a programmatic interface for the functionality and an attribute for advertising a functionality definition that corresponds to the functionality, wherein the attribute comprising metadata associated with the functionality;
discovering a software producer module, wherein the software producer module is configured to produce a functionality implementation that conforms to the functionality definition; and
establishing a link between the software producer module and the software consumer module for the software consumer module to consume the functionality produced by the software producer module.
3 Assignments
0 Petitions
Accused Products
Abstract
In a composition model for large-scale extensible applications, applications are constructed in a modular fashion. The modules integrate with each other by producing and consuming functionality that conforms to a common definition. Producer modules and consumer modules are kept independent of one another, and are linked together indirectly via a definition module. .NET attributes are used to identify various code artifacts (such as classes, methods, properties, etc.) as being functionality definitions, productions, and/or consumptions. These attributes are examined by the module loader and used to create relationships between individually installed producer and consumer modules. The consumer uses .NET attributes to declare dependency on functionality and filter out implementations that don'"'"'t meet the criteria specified by those attributes.
35 Citations
20 Claims
-
1. A computer-implemented method for using an attribute to identify a functionality, the method comprising:
-
discovering a software consumer module, wherein the software consumer module is configured to consume the functionality; discovering a definition module, wherein the definition module is configured to define a programmatic interface for the functionality and an attribute for advertising a functionality definition that corresponds to the functionality, wherein the attribute comprising metadata associated with the functionality; discovering a software producer module, wherein the software producer module is configured to produce a functionality implementation that conforms to the functionality definition; and establishing a link between the software producer module and the software consumer module for the software consumer module to consume the functionality produced by the software producer module. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A system for using an attribute to identify a functionality, the system comprising:
-
a processor; and a module loader operated by the processor, and is configured to; discover a software consumer module, wherein the software consumer module is configured to consume the functionality, discover a definition module, the definition module is configured to define a programmatic interface for the functionality and an attribute for advertising a functionality definition that corresponds to the functionality, wherein the attribute comprising metadata associated with the functionality, discover a software producer module configured to produce a functionality implementation that conforms to the functionality definition, and establish a link between the software producer module and the software consumer module for the software consumer module to consume the functionality produced by the software producer module. - View Dependent Claims (12, 13)
-
-
14. The system of 11, further comprising the software producer module, the producer module comprising:
-
a contribution class comprising a static method that corresponds to a signature method of a corresponding port class defined in the definition module; and a contribution attribute identifying a port type associated with the contribution class.
-
-
15. The system of 14, wherein the module loader is configured to provide a plurality of port class instances to the software consumer and wherein the software consumer module is further configured to examine a respective port type of each of the plurality of port class instances, and selecting a port class instance for consuming the functionality based on the respective port type.
-
16. The system of 11, further comprising the software consumer module, the software consumer module is configured to:
-
advertise consumption of the functionality via an attribute; and obtain an port class instance that matches the declared dependency via a dispenser, the port class instance representing a corresponding contribution conforming to the definition of the port class.
-
-
17. A computer readable storage medium having computer executable instructions for identifying a functionality, said instructions comprising:
at a consumer module; declaring dependency on the functionality of a software producer module; specifying a functionality criterion via an attribute, the attribute comprising metadata associated with the functionality; receiving a plurality of functionalities via a link to the software producer module, the link being established based on the declared dependency, wherein the link is established by a loader module that discovers the software producer module and the consumer module via a definition module, the definition module defines a programmatic interface for the functionality and the attribute for advertising a functionality definition that corresponds to the functionality; and consuming one of the plurality of received functionalities produced by the software producer module that meets the specified functionality criterion. - View Dependent Claims (18, 19)
-
20. A computer readable storage medium having computer executable instructions for identifying a functionality, said instructions comprising:
-
discovering a software consumer module, wherein the software consumer module is configured to consume the functionality; discovering a definition module, wherein the definition module is configured to define a programmatic interface for the functionality and an attribute for advertising a functionality definition that corresponds to the functionality, the attribute comprising metadata associated with the functionality; discovering a software producer module, wherein the software producer module is configured to produce a functionality implementation that conforms to the functionality definition; and establishing a link between the software producer module and the software consumer module for the software consumer module to consume the functionality produced by the software producer module.
-
Specification