Plaque It!
|
[0002] There has been for a number of years increasing interest in the use of Component-based Software Engineering techniques to support the reuse of common software components in the development of new applications. Recently, efforts have been made to apply such techniques to the announcement and deployment of session-based services, such as IP multicast audio and video services. Recent work in this field is described in published patent applications WO-A-0033535 and WO-A-0036804, both in the name of British Telecommunications plc. Further details are given in Rudkin, Steve and Smith, Alan:
[0003] In this earlier work, individual program components were made available by Component Service Providers who used a Service Directory to advertise their component services to other service providers. A service provider could take the components from the Service Directory, combine them in any desired way and add session-specific information to create a session announcement. The service provider could then advertise the resultant sessions in a Session Directory, accessible to the ultimate customer. The customer could select a session (for example an IP multicast of a particular movie), download the details and locally build the application necessary to receive and view that particular movie.
[0004] The present invention derives from a generalisation and improvement of the methods and systems disclosed in the publications mentioned above.
[0005] According to a first aspect of the invention there is provided a method of creating application service announcements, comprising:
[0006] (a) selecting a plurality of component services descriptions, each component service description defining a component service having one or more components;
[0007] (b) creating an application template based on the selected component service descriptions; and
[0008] (c) repeatedly re-using the application template to create a plurality of application service announcements.
[0009] The invention enables third parties to offer service components to a service provider community. Service providers can preferably search and retrieve component services, to provide the functionality they need, and then “glue” them together to create an application template which can be used to create many services. The invention enables the component service functionality to be mainly based at the client, or alternatively at the enterprise side with the inter-component binding being based at the client (that is, at the terminal of the end user or customer).
[0010] More generally, the invention extends to a component-based service for the provision, composition and deployment of applications; Preferably, the following features are included:
[0011] Service creation: The generation of a component service description specifying user related data, service behaviour in terms of component functionality and remote service attributes (such as media address, port and bandwidth), a component composition template, and constraints on service behaviour by the use of charging and security policies.
[0012] Service development: The composition of component services according to their behavioural specifications such as session, component and policy interface. The generation of a composite component service to be delivered to the end user.
[0013] Service deployment: Deployment of a given composite component service to the end user according to its component composition template, local or remote component availability, and component configuration according to remote service attributes and policy constraints.
[0014] Preferably, component service functionality is distributed between the client and the enterprise end. For example, in a dynamic payment gateway service there may be a component located at the client end which uses a server component at the enterprise end to process transactions.
[0015] Component service function may be parameterised by remote service attributes. In addition, service functions may be constrained by contractual terms of agreement between service providers (for example charging and security policies) and clients (for example relating to best component runtime performance and resources utilisation requests).
[0016] The invention may support both open and closed business models. Closed models may be accommodated by restricting access to particular communities using standard security mechanisms. Alternatively, an open model can be implemented by removing access restrictions, so that any third party may use the service directory.
[0017] The present invention provides great flexibility in the creation of component-based applications and services. The flexibility goes far beyond the ability simply to bundle components or services together. The ultimate application is composed not only from combinations of pre-existing components or services (possibly modified during the composition) but also from an additional overlying structure which may incorporate enforceable policies over and above the policies of the individual components or services. The application service announcements may preferably be session announcements (for example for audio or video media sessions, or game sessions). Each session announcement may be created from the application template plus additional session-specific information. In one example, a service provider could use a common template for the delivery of video on demand services, with a specific session announcement being created for each individual movie.
[0018] When the application template is being created from the selected component service descriptions, additional application-specific information may be incorporated. In the above example, the application template may include details of the service provider, so that users can easily identify which movies are being supplied by which provider.
[0019] The component service descriptions may include a contractually-binding component agreement, and it is preferred that that component agreement must be accepted by a creator of the application template before he or she is allowed to proceed with the creation of a service and the production of application service announcements. The component agreement preferably includes a component interface, a session interface, charging and security policies.
[0020] The component agreement is preferably directed to the service provided/developer, but it is also possible for the agreement to be directed to the end user. In such a case, it is preferred that the agreement has to be accepted by the user before the application service may be used.
[0021] A second contractually-binding agreement is preferably incorporated into the application service announcement by the service provider, and is addressed to the end user. In the preferred embodiment, this application agreement has to be accepted by a user who wishes to use the application service, before the application service may be used. The application agreement may take the same or a similar form to the component agreement, and in particular it may include a charging policy.
[0022] The charging policy incorporated into the or both agreements may include or specify the location of a charging component, the purpose which is to interpret the charging policy and to facilitate payment. The charging component may require the service provider and/or the end user makes a payment (for example by credit card) before the component service description or the application service, respectively, may be used.
[0023] Both the application service announcements and the component service descriptions are preferably constructed from a common structured data format such as XML. Using XML, the component service descriptions are preferably defined by means of a Component Service Descriptor (CSD), while the application service announcements are preferably defined by means of Service Announcement Format (SAF).
[0024] The component service descriptions may be stored and made available to application providers within a directory service or a federation of directory services. The service directory may be implemented by means of a Lookup Service (LUS), including a security service, a component store and a description store.
[0025] The invention in one form extends to a method of creating application service announcements including the prior step of creating the individual component service descriptions, and making those descriptions available for selection.
[0026] The invention further extends to a method of service delivery including creating application service announcements according to the method described above, advertising the application service announcements to an end user, selecting one of the announcements and creating an executable application therefrom. The step of creating the executable application may include the steps of parsing the said application service announcement, determining which component services are required, downloading any component services that are unavailable locally, binding the components, and running the resultant application.
[0027] In one embodiment, there may be a component service registration process which restricts access to third party component service providers who wish to advertise on the service directory. The service federation, where applicable, can be restricted so that component service advertisements are available only to certain communities within the federation, or to none at all.
[0028] A security service provider may be incorporated into the invention providing security components including authentication, privacy and integrity.
[0029] The invention extends to a computer program or to an executable set of instructions for implementing a method as previously described. It further extends to a computer-readable carrier which carries a computer program or executable set of instructions as previously mentioned.
[0030] According to a further aspect of the present invention there is provided a software distribution channel comprising:
[0031] (a) a service directory for storing a plurality of component service descriptions, each component description defining a component service having one or more components;
[0032] (b) an application template builder for creating an application template based on the selected component service descriptions; and
[0033] (c) an application builder for repeatedly re-using the application template to create a plurality of application service announcements.
[0034] The invention further extends to a computer system incorporating a software distribution channel as previously described and/or to a computer system for creating application service announcements as previously described.
[0035] The invention may be carried into practice in a number of ways and one specific embodiment will now be described, by way of example, with reference to the accompanying drawings, in which:
[0036]
[0037]
[0038]
[0039]
[0040]
[0041] In the description below, the preferred embodiment of the invention will be referred to by the name given to it within British Telecommunications plc., namely “COMPOSE”. COMPOSE is a channel for component software distribution, and service creation, which stretches from initial component production right through to final instantiation of the resultant service by the customer. It provides an infrastructure for supporting service providers to promote their own component services for use by third parties, and also for supporting service developers who may wish to have rapid access to “best of breed” components written by others.
[0042] An overview of COMPOSE is shown in
[0043] Each component is described by a Component Service Descriptor (CSD) and, as indicated by the arrow
[0044] A service provider wishing to provide a software service to a consumer, downloads the necessary components from the Service Directory
[0045] Typically, the service provider will add additional functionality to the service, over and above that provided by the various components that have been taken from the Service Directory
[0046] An end user or customer, wishing to make use of a service which is announced in the Session Directory
[0047] A program running on the SIE
[0048] While COMPOSE in its broadest form may be used for all types of component software distribution and service creation, in one embodiment it may be used to enable the provision of broadband services such as multicast audio and video services to the customer. In that example, the service provider may for example be in the business of supplying multicast movies. He uses the system to develop a generic template, which will be used for all movies, and he then uses that as the basis for creating the individual movie session announcements. Each movie session announcement includes the basic information about the components to be used, along with session-specific information such as the name of the movie, the IP multicast address, the port, and the media format. This information, when downloaded by the user, provides the SIE
[0049] In the embodiment of
[0050] The specific implementation of the embodiment shown in
[0051] The Component Service Descriptor (CSD) defines not only the attributes of each component, but also represents and encapsulates a legally-binding contractual agreement between the component supplier (the CSP
[0052] Alternatively, the contractual agreement within the CSD may be between the Component Service Provider
[0053] The Component Service Descriptor is preferably implemented in XML, and includes the following information:
[0054] Component interface: the contract states what other client components have to do to use the interface, and what a third party provider must implement to meet the service which has been promised by the component provider.
[0055] Session interface: the contract sets out the resources (media and functionality) which the component service is authorised to use. For example, the contract may permit the use of a specific IP address to download a movie.
[0056] Policies: the contract specifies what the policies are for use of the service. Policies explain, for example, how the client will be charged (the “charging policy”), and how the client will be authorised to use the service (the “security policy”).
[0057] The component interface, session interface and policies, as advertised on the Service Directory
[0058] In addition to the above, the Component Service Descriptor also encapsulates implementation details, dependencies to software and hardware resources, mechanisms for accessing the provisioning services, and a mechanism for locating the component to the network and downloading and installing it to the client's machine.
[0059] In more detail, the Component Service Descriptor comprises an XML file including the following elements:
[0060] (a) Basemodule; this provides general information for a component;
[0061] (b) Componentmodule: this contains the individual components that may be built up into a composite service;
[0062] (c) Service: this describes the component service interface via a set of methods and variant conditions that constrain the methods execution;
[0063] (d) Implementation: this is responsible for the implementation specification of the component service;
[0064] (e) Service dependency: this describes the dependencies of the service to other software and hardware resources;
[0065] (f) Policy: this links to charging and security XML descriptors, which illustrate the charging and security policies which are applied to the respective component service; and
[0066] (g) SessionInterface: this includes those attributes that allow the session provider to configure the attributes of a session.
[0067] To elucidate these elements more fully, we will now describe an example which assumes the advertisement of a realplayer component service used for streaming real-time content (for example video or audio). Realplayer is a Java-based component, which uses at a lower level the JMF component framework, as well as other Java components to implement media player services.
[0068] The CSD starts with a route element, as shown in listing 1, below:
Listing 1: component service_descriptor root element <!ELEMENT service_descriptor (basemodule, componentmodule?, service, implementation+, service_dependency?, policy, sessionInterface)>
[0069] The basemodule, shown in Listing 2, provides general information for the realplayer component including the ID, name, version, category, service description and details for the owner of the component:
Listing 2: basemodule <basemodule> <id>realplayer</id> <name>Real Player</name> <version>v01</version> <category>real player</category> <service description>a Real Player service</ service_description> <icon href=“http://www.jungle.bt.co.uk/projects/compose/meta
data/ descriptors/icons/projector.gif”></icon> <owner> <name> Distributed Systems Group </name> <contact email=“” phone=“” fax=“”> </contact> </owner> </basemodule>
[0070] The basemodule provides an overview of the component service as an independent entity. Other responsibilities include the following:
[0071] Helps to classify the component service in the Service Directory
[0072] Enables the service developer to search for announced component services in the Service Directory and to allow for the differences between alternative components.
[0073] The componentmodule (see listing 3) encapsulates information for the plugin components that will build the entire component service. For each component, the component module advises the service developer/provider of information relating to implementation, distribution and installation requirements:
Listing 3: componentmodule <componentmodule> <component name=“JMF”> <implementation id=“imfimpl01”> <os name=“win9598NT” version=“”></os> <processor name=“”></processor> <compiler name=“java compiler” version=“jdk 1.2.2”></compiler> <programminglanguage name=“java” version=“jdk 1.2.2”> </programminglanguage> <runtime name=“java runtime environment” version=“jre 1.2.2”> </runtime> <implementation_location> <setuplocation class=“JMF”> <codebase filename=“” href=“http://ferao.jungle.bt.co.uk/ projects/compose/download- centre/jmf/jmf.jar” > </codebase> <post_install><run>java com.real.util.RJMFConfig </run></post_install> </setuplocation> </implementation_location> <codetype>jar</codetype> <disksize></disksize> <memoryrequirements></memoryrequirements> <componentQos><performance> </performance></componentQos> </implementation> <service_description> </service_description> </component> </componentmodule>
[0074] The implementation element addresses requirements for the client machine on which the components will be installed and executed. These include the following:
[0075] the set of operating systems and their versions, which might support the component execution;
[0076] the minimum processing power required (processor) as well as storage, memory and performance requirements; and
[0077] details for the component deployment (compiler, programming language), and the runtime necessary for component instantiation.
[0078] The implementation location guides the distribution of the component from the component service provider down to the client's machine. The distribution is addressed by the codebase element, which indicates the location of the component. Then, the system will need to know what happens after the component is installed to the computer's registry. The answer is given by the codetype attribute, which explains how the component will be accessed (e.g. a jar file); the run attribute, which indicates the final configuration of the component at the client's machine (e.g. java com.real.util.JMFConfig); and the class attribute, which indicates the main object which instantiates the component (e.g. JMF).
[0079] It should be noted that CSD may be used to describe not only individual components, but also component services (i.e. services which consist of two or more components). Where there is more than one component within the component service, the component element will be repeated within the component module as many times as necessary.
[0080] The service element, illustrated by Listing 4, represents one of the three contractual states of a component, namely the component interface. In this way, the component interface may be separated from its implementation, allowing the abstraction of the service component behaviour at a higher level while hiding implementation details:
Listing 4: service element <service name=“jrpservice”> <codebase filename=“” href=“http://ferao.jungle.bt.co.uk/ projects/compose/download- centre/real.jar”></codebase> <method mname= “setMediaFile”> <input> <type> String </type> <constraint></constraint> <service_description>The media file</service_description> </input> <output> <type></type> <constraint></constrain<service_description&
gt; </service_description> </output> <service_description> </service_description> </method> <method mname=“go”> <input> <type></type><constraint></constrai
nt> <service_description></service_descri ption> </input> <output> <type></type><constraint></constrai
nt> <service_description></service descri ption> </output> <service_description>It streams an audio/video file </service_description> </method> </service>
[0081] The service developer will access information for the services a component offers in order to build a combined service of more than one component services connected via their interfaces. The role of the service element is to:
[0082] retain the location of the component interface (codebase) remotely. For instance, the file realjar stores the interface of the realplayer component. It is used for introspecting the methods, events, properties the realplayer makes available to an application.
[0083] indicate the parameters and the constraints which characterise each of the methods of the interface. The interface methods provided by a component are considered the facade of the component to the outside world and a key mechanism of interaction with other component services. A method has a name (mname), input and output parameters and an actual description of its role in the interface. Before a method is invoked it is necessary to know the types of its input and output parameters, any constraints applied on them, and their role in the method. In general, the method features (e.g. method constraints) of a component interface may but need not be exploited within COMPOSE.
[0084] Service dependency describes any external resource component that the individual components of the composite service will depend on for their deployment and instantiation (eg a java class, a dll, or another resource). The service dependency description is similar to the component implementation specification given above. In addition, a comname attribute is used to recognize uniquely a resource component. The codebase of the resource component interface might be specified if it is to be accessed through an interface.
[0085] The policy element links both to charging and security XML descriptors, which prescribe the charging and security models to be applied to this particular component.
[0086] The purpose of the charging policy is to capture details allowing the system to charge users for service usage, and to set up a legally binding contract between service providers and their users. The charging policy holds the necessary details of a charging service contract, that could either be bundled or unbundled. These terms are described below:
[0087] A bundled charging service contract determines a legal relation between the various entities involved such that:
[0088] a customer pays its service provider who provides the overall service,
[0089] the service provider pays its individual component service providers for using the individual component services, the service provider pays the customer's network provider for network access, and
[0090] the service provider pays its network provider for network access.
[0091] An unbundled charging service contract determines a legal relation between the various entities such that:
[0092] a customer pays the service provider who provides the overall service,
[0093] the customer pays the individual service providers for their individual component services,
[0094] the customer pays its network provider for network access, and
[0095] the service provider pays its network provider for network access.
[0096] COMPOSE supports the provision of both bundled and unbundled service contracts.
[0097] The charging policy (part of the policy element) comprise a charging description, the tariff packages it offers, the payment methods, and references to any dependent policies that also require payments. An example is shown in Listing 5 which follows:
Listing 5: charging element <charging type=“unbundled”> <description> <name>Audio-Video Player</name> <validity> <start-time> <date day=“1” month=“8” year=“2000”/> </start-time> <end-time> <date day=“31” month=“12” year=“2001”/> </end-time> </validity> </description> <tariff-package> <tariff> <flat-rate> <fee>1.00</fee> <when type=“prepay”/></flat-rate> <time-of-use unit=“hour”> <fee>0.50</fee> <when type=“postpay”/> </time-of-use> </tariff> <currency type=“GBP”/> <validity> <start-time> <date day=“1” month= “8” year=“2000”/> </start-time> <end-time> <date day=“31” month=“12” year= “2001”/> </end-time> </validity> </tariff-package> <payment> <payment-method> <mechanism name=“BuyNet”/> <payment-gateway> <location> <address>132.146.129.68 </address><port>8000</port> </location> </payment-gateway> </payment-method> <payee> <merchantID>1234567891</merchantID> </payee> </payment> </charging>
[0098] The description may include details such as the type of policy (bundled or unbundled), along with details of the validity of the policy.
[0099] The tariff-package may specify different pricing models, such as flat rate or time charge. Users could also be charged on the basis of how much traffic is requested and generated: the same tariff could apply to both downloaded and uploaded traffic, or different tariffs could be applied. Combinations of the above would also be possible.
[0100] The payment entry specifies the type of payment method, such as using a particular payment server at a particular address and port number.
[0101] The references to other charging policies may comprise a link to charging policies of dependent service components.
[0102] The second part of the policy element is the security policy. The application developer/service provider uses the security element to obtain security certificates which verify the Component Service Provider who has supplied this particular component. An example of a security element, within the policy element, is set out in Listing 6, below:
Listing 6: security element <security cert_store_location=“132.146.107.63” cert_store_port=“4003” merchant_ID=“kash” service_ID=“realplayer”> </security>
[0103] The security element includes information for accessing the certificate (including server location and port) as well as perameters for authorising the communication between service providers and developers (merchant_ID, service_ID).
[0104] The session interface element defines the interface between third parties and service providers. Session attributes are dynamically defined in the session interface to configure the communication between the client components and the associated remote services. For instance, in Listing 7 (below), the realplayer component has to configure the value of a mediaFile parameter with the remote address of the video file which will be delivered through the component instantiation:
Listing 7: sessionInterface element <sessionInterface> <sessionAttr name=“mediaFile” value=“http://www.jungle.bt.co.uk/projects/compose/med
ia/bwp.mpg”/> </sessionInterface>
[0105] Turning now to
[0106] In this model, all of the elements
[0107] By permitting each local service to register as proxies in the core service
[0108] The Description Store
[0109] The Component Store
[0110] The Security Service
[0111] In use, the Component Service Provider
[0112] The Service Directory preferably implements a Java JINI-based Lookup Service (LUS), which handles the registration, discovery and distribution of services. The LUS multicasts its presence on TCP IP networks to form a federation of Lookup Services, which advertise services to all the other Lookup Services within the federation. To access a service, the client or service developer downloads the LUS registrar object, and invokes the desired function (for example to find a service). The client then creates service templates to search for services based on unique IDs, types and/or objects. When successful, the LUS registrar will return one or more service proxies which may be downloaded to the developer's machine. This uses its own private and secure protocol to interact directly with the required service.
[0113] It will be understood of course that although the CSP
[0114]
[0115] The SDE enables a service developer to find and retrieve the “building block” components needed, which are then “glued together” to form an application which is described in Service Announcement Format (SAF)— see below. Firstly, the SDE enables retrieval and matching of component services from the Service Directory
[0116] A Service Agent
[0117] Once all the component services have been found, an Application Template Builder
[0118] Next, the developer uses a Service Session Builder
[0119] During preparation of the Application Template
[0120] The individual service announcements
[0121] Service Announcement Format (SAF) is used to describe the individual session announcements, and includes all of the information necessary to facilitate the customer's access to the actual service—for example access to the remote media sessions. SAF comprises the following modules:
[0122] A base module which prescribes user-oriented data for a given service (for example service name, owner, available media and time information);
[0123] A component service module which provides information for each of the component services making up the service application. A SAF description includes links to component service descriptors used to prescribe the session attributes, application component specifications and policy constraints of a component service. In general, the Component Service Module represents the resources (content and distributed functionality) necessary for delivering the overall service to the end user;
[0124] A component wiring module which specifies how the components interact and their order of execution; and
[0125] a policy module which specifies how the overall service should be charged, and how system security is implemented. As mentioned above, this policy module describes overall policies which are applicable in addition to the individual component policies.
[0126] The template-specific or the session-specific charging and security policies, added by the service developer, are described within SAF in a similar manner to the way in which those policies are described for individual component services within CSD. More particularly, the charging and security policies preferably comprise a collection of XML elements which are inserted into the CSD or into the SAF. Alternatively, it would be possible to use a link to a policy descriptor stored elsewhere: that approach would mean that any modification to the charging XML document would not affect the component or the session description. In the preferred COMPOSE embodiment, however, the former non-linked approach is used for simplicity.
[0127] The SAF description created by the service provider acts as a contractual agreement between the service provider and the user. In addition, it may also have encapsulated within it a contractual agreement between the Component Service Provider and the user.
[0128] The Service Instantiation Environment (SIE)
[0129] The SIE is responsible for downloading an SAF file
[0130] Once the user has decided to join a session, and the SAF file has been downloaded, it is passed to a Component Downloader
[0131] Once all the components are available, an Application Descriptor Transformer
[0132] When the available sessions are displayed to the user via the Session Directory
[0133] As shown in
[0134] The Charging Component
[0135] Each entity within the system is preferably certified by a Certificate Authority, such as the Authority
[0136] Finally, all stored entities (both components and descriptions) are signed.