WO2005045563A2 - Service discovery and publication - Google Patents

Service discovery and publication Download PDF

Info

Publication number
WO2005045563A2
WO2005045563A2 PCT/US2004/023547 US2004023547W WO2005045563A2 WO 2005045563 A2 WO2005045563 A2 WO 2005045563A2 US 2004023547 W US2004023547 W US 2004023547W WO 2005045563 A2 WO2005045563 A2 WO 2005045563A2
Authority
WO
WIPO (PCT)
Prior art keywords
service
discovery
programming interface
application programming
defining
Prior art date
Application number
PCT/US2004/023547
Other languages
French (fr)
Other versions
WO2005045563A3 (en
Inventor
Andrew D. Milligan
Charles R. Reeves
Jeffrey B. Parham
Gopal Krishna R. Kakivaya
Lawrence A. Buerk
Angela Mills
Richard L. Hasha
Original Assignee
Microsoft Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corporation filed Critical Microsoft Corporation
Priority to EP04778869A priority Critical patent/EP1676215A4/en
Priority to CA2501718A priority patent/CA2501718C/en
Priority to BR0406411-9A priority patent/BRPI0406411A/en
Priority to JP2006536562A priority patent/JP2007509406A/en
Priority to AU2004279194A priority patent/AU2004279194B2/en
Priority to KR1020117016088A priority patent/KR101176757B1/en
Priority to MXPA05006611A priority patent/MXPA05006611A/en
Publication of WO2005045563A2 publication Critical patent/WO2005045563A2/en
Publication of WO2005045563A3 publication Critical patent/WO2005045563A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Systems or methods specially adapted for specific business sectors, e.g. utilities or tourism
    • G06Q50/10Services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4541Directories for service discovery

Definitions

  • APIs protocols, and object models to discover, enumerate, and describe services
  • the application may need to use Lightweight Directory Access
  • the application might have to invoke device management APIs to discover direct attached printers, and UPnPTM APIs to discover UPnP printers.
  • the uniform interface provides a consistent, high-level abstraction
  • the method comprises: in an
  • first application programming interface parsing the search request; retrieving the search request
  • the method comprises,
  • application programming interface parsing the search request; and executing at
  • the method comprises,
  • deletion request to a first application programming interface; and in the first
  • application programming interface parsing the search request; and executing at
  • the method comprises, in
  • an application program defining a scope; defining a filter; defining a callback
  • system comprises a first application programming interface configured to accept
  • FIG. 1 is a schematic illustration of an exemplary computing device
  • Fig. 2 is a block diagram illustrating an exemplary software
  • FIG. 3 is a flowchart illustrating operations for service discovery
  • FIG. 4 is a flowchart illustrating operations for service publication
  • FIG. 5 is a flowchart illustrating operations for service deletion
  • FIG. 6 is a flowchart illustrating operations for subscribing to service
  • Fig. 7 is a block diagram illustrating the relationship between
  • Fig. 8 is pseudo-code illustrating how to use the C# programming
  • Fig. 9 is pseudo-code illustrating how to use the C# programming
  • Fig. 10 is pseudo-code illustrating the use of the C# programming
  • Fig. 11 is pseudo-code illustrating the use of Visual Basic.NET to find
  • Fig. 12 is pseudo-code illustrating the use of the C# programming
  • Fig. 13 is pseudo-code illustrating the use of Visual Basic.NET to
  • Fig. 14 is pseudo-code illustrating the use of the C# programming
  • Fig. 15 is pseudo-code illustrating the use of Visual Basic.NET to
  • Fig. 16 is pseudo-code illustrating the use of the C# programming
  • Fig. 17 is pseudo-code illustrating the use of Visual Basic.NET to
  • Fig. 18 is pseudo-code illustrating the use of the C# programming
  • Fig. 19 is pseudo-code illustrating the use of Visual Basic.NET to use
  • the logic instructions cause a general purpose computing device to be
  • the processor when configured by the logic instructions to execute the methods
  • FIG. 1 is a schematic illustration of an exemplary computing device
  • Computing device 130 can be utilized to communicate with the described embodiment.
  • Computing device 130 can be utilized to communicate with the described embodiment.
  • Computing device 130 includes one or more processors or processing
  • the bus 136 The bus 136
  • bus structures 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,
  • memory 134 includes read only memory (ROM) 138 and random access memory
  • RAM RAM 140.
  • BIOS basic input/output system
  • ROM 138 is stored in ROM 138.
  • Computing device 130 further includes a hard disk drive 144 for
  • a removable optical disk 152 such as a CD
  • optical disk drive 150 are connected to the bus 136 by an SCSI interface 154 or
  • readable media provide nonvolatile storage of computer-readable instructions, data
  • ROMs read only memory
  • ROMs read only memory
  • the like may also be used in the exemplary operating environment.
  • a number of program modules may be stored on the hard disk 144,
  • magnetic disk 148 optical disk 152, ROM 138, or RAM 140, including an
  • operating system 158 one or more application programs 160, other program
  • computing device 130 may include input devices such as a keyboard 166 and a pointing device 168.
  • input devices such as a keyboard 166 and a pointing device 168.
  • Other input devices may include a microphone,
  • a monitor 172 or other type of display device is also
  • bus 136 connected to the bus 136 via an interface, such as a video adapter 174.
  • an interface such as a video adapter 174.
  • Computing device 130 commonly operates in a networked
  • the remote computer 176 may be another personal personal computer 176.
  • the remote computer 176 may be another personal computer 176.
  • node typically includes many or all of the elements described above relative to
  • Fig. 1 The logical connections depicted in Fig. 1 include a local area
  • LAN local area network
  • WAN wide area network
  • computing device 130 When used in a LAN networking environment, computing device 130 is
  • is connected to the local network 180 through a network interface or adapter 184.
  • computing device 130 When used in a WAN networking environment, computing device 130 typically uses any combination of hardware and software to perform calculations to generate a WAN networking environment.
  • a modem 186 or other means for establishing communications over the
  • the modem 186 which may be internal or external, is connected to the bus 136 via a serial port interface 156.
  • a serial port interface 156 In a
  • the data processors of computing device 130 are
  • the invention also includes the computer itself when
  • FIG. 2 is a block diagram of an exemplary software architecture 200
  • system memory 134 may comprise a plurality of application
  • the application programs may function as client programs, while in a PC environment the applications may execute as
  • Application programs 210 invoke service discovery API 214 to
  • the grammar 214 provides a high-level grammar for expressing discovery queries.
  • the grammar
  • OPath may be implemented in OPath, a natural query language used for expressing
  • This high-level grammar provides software developers a more
  • the developer can construct a query
  • scope which is a predefined or configured set of concrete scopes.
  • the system supports service publication/deleting, and
  • Service discovery API 214 invokes one or more underlying
  • Protocol 1 220 through Protocol 8 234.
  • protocols 220-234 may be directory-backed protocols such as, e.g., LDAP,
  • DNS Network Management System
  • Other protocols may be ad-hoc protocols such as, e.g., Bluetooth, UPnP, and NetBT.
  • One or more of the underlying protocols 220-234 may be ad-hoc protocols such as, e.g., Bluetooth, UPnP, and NetBT.
  • One or more of the underlying protocols 220-234 may be ad-hoc protocols such as, e.g., Bluetooth, UPnP, and NetBT.
  • One or more of the underlying protocols 220-234 may be ad-hoc protocols such as, e.g., Bluetooth, UPnP, and NetBT.
  • a ServiceEntry object is a
  • the ⁇ corresponds to a single instance of a service.
  • the ⁇ corresponds to a single instance of a service.
  • ServiceEntry object provides descriptive and identifying properties including: (1) a
  • properties e.g., an extensible list of name- value pairs for service or device
  • a provider e.g., an identifier that identifies the entity that
  • a discovery persistence service 212 communicates with service
  • discovery persistence service 212 registers
  • the discovery persistence service for announcement events over ad-hoc protocols.
  • service queries are not restricted to the
  • querying the memory location may be much better than issuing a broad network
  • FIG. 3 is a flowchart illustrating operations 300 for
  • an application defines a scope
  • the application defines a filter, and at operation 320 the application issues a search
  • the service discovery API 214 receives the search request and, at
  • the service discovery API 214 parses the search request.
  • the service discovery API 214 determines whether the search request
  • information managed by the discovery persistence service 212 is not limited to one implementation, information managed by the discovery persistence service 212
  • service discovery API 214 may query the discovery persistence service 212 to
  • discovery persistence service 212 manages on the data store 240. If the discovery request is resolvable using the discovery persistence service 212, then control
  • persistence service 212 are returned to the application.
  • discovery persistence service which may store the service entry objects on data
  • Fig. 4 is a flowchart illustrating operations for service publication.
  • an application defines a service entry object for the service
  • the application defines properties for the service publication and at operation 435 the application generates a publication
  • the service discovery API 214 receives the publication request and, at
  • operation 440 parses the publication request.
  • operation 450 the service
  • discovery API 214 executes the low-level API calls to execute the service
  • FIG. 5 is a flowchart illustrating
  • an application defines a service
  • the application defines a scope for
  • the application generates a service deletion
  • the service discovery API 214 receives the deletion request and, at
  • operation 540 parses the deletion request.
  • operation 550 the service discovery
  • API 214 executes the low-level API calls to execute the service deletion request.
  • the service discovery API 214 can also be used to allow applications
  • FIG. 6 is a flowchart illustrating operations 600 for
  • an application defines a scope that
  • an application generates a subscription
  • the service discovery request API 214 receives the subscription
  • the service entry object may be stored in the discovery
  • the application performs further processing on the service entry object.
  • a Filter is a set of rules by which a service description can be
  • a filter can be expressed either as a
  • queries can be specified and executed over more than one protocol without
  • discovery request API 214 manages the re-expression of the higher level query into
  • discovery request API 214 can receive a query for a particular service type and
  • UPnP may use XPath filters
  • Active Directory may natively
  • a simple filter provides for expression of queries by specifying a
  • the service type may be implemented as a string that specifies the
  • a common set of service types are
  • This set may be extended as
  • the service interfaces may be implemented as a string collection that
  • a rich filter provides a mechanism for expressing significantly richer
  • the Query string would specify the
  • filter.Query "WebService[
  • a scope identifies a query domain that can be searched, usually coarse
  • Discovery queries are directed to
  • the query result includes a subset of the services within
  • the query result is the subset of all services within the scope that
  • scopes include workgroup, localmachine, and
  • the service discovery API 214 accommodates concrete scopes and
  • a concrete scope specifies a query domain in three pieces.
  • Protocol identifier that identifies a specific protocol, e.g., mapping to a single
  • the service discovery request API 214 passes concrete scopes to
  • the service discovery request API 214 does not preclude modules from
  • An abstract scope is a moniker for one or more concrete scopes and
  • Abstract scopes provide a mechanism for targeting
  • Fig. 7 is a block diagram illustrating an exemplary relationship
  • Concrete scopes 730-750 provide the
  • scopes 730-750 comprise protocol identification details and, as required, specifics
  • discovery API 214 will resolve this down, through the hierarchy, to a number of
  • scope map configuration may be
  • an administrator could define one or more abstract scopes available in the enterprise computing environment, or in a portion of the enterprise computing environment. This permits a system administrator to regulate the discovery and use of resources by applications.
  • An application developer can select appropriate Scope and Filter expression, which may then be set as properties on a service finder object.
  • the application can then use the FindOne or FindAll methods to execute a discovery request.
  • the FindAll method returns all services matching the supplied criteria, whereas the FindOne method returns a single matching service.
  • the methods may be executed using a synchronous or an asynchronous calling pattern.
  • the FindOne or FindAll methods will return one, or a collection of, service entry objects.
  • the service entry object is an abstraction over the various representations of services that the underlying protocols can provide. Each service entry object corresponds to a single instance of a service and as such, offers descriptive and identifying properties including those set forth in Table 2.
  • Endpoints The set of endpoints at which the service instance can be accessed
  • Credentials Specifies the credentials that will be used when publishing this service.
  • a public void Save() function is provided to create or update the
  • a public void Delete() method removes this ServiceEntry object from
  • Figs. 8-24 illustrate pseudo-code for performing various service
  • Fig. 8 is pseudo-code illustrating how to use the C# programming
  • Fig. 9 is pseudo-code illustrating how to use the C# programming
  • Fig. 10 is pseudo-code illustrating the use of the C# programming
  • Fig. 11 is pseudo-code illustrating the use of Visual Basic.NET to find
  • Fig. 12 is pseudo-code illustrating the use of the C# programming
  • Fig. 13 is pseudo-code illustrating the use of Visual Basic.NET to
  • Fig. 14 is pseudo-code illustrating the use of the C# programming
  • Fig. 15 is pseudo-code illustrating the use of Visual Basic.NET to
  • Fig. 16 is pseudo-code illustrating the use of the C# programming
  • Fig. 17 is pseudo-code illustrating the use of Visual Basic.NET to
  • Fig. 18 is pseudo-code illustrating the use of the C# programming language to use a SimpleFilter to register for events of a specific type that use the
  • the registered callback function will be invoked for every event that matches the filter and the corresponding ServiceEntry object will be provided to that handler.
  • Fig. 19 is pseudo-code illustrating the use of Visual Basic.NET to use a SimpleFilter to register for events of a specific type that use the SSDP protocol.
  • Table 3 provides exemplary OPath syntax for various discovery functions.
  • Table 4 contains examples of OPath syntax that can be used on the UDDI protocol.
  • Table 5 contains examples of OPath syntax that can be used on the
  • the discovery persistence service 212 manages a persistent data store for service information. Periodically, or at predetermined events, such as startup, the discovery persistence service registers to receive ad-hoc device/service announcements. As an example, when a new UPnP device is introduced it will generate a device announcement that will be handled by the UPnP protocol module. This module will then surface details of that event (the device and its services) to the discovery persistence service through the service discovery API 214.
  • the discovery persistence service uses its persistent data store to determine whether this is a new device/service or a returning device/service. If it is a new device/service, the details of the device and its services will be registered in the persistent data store. When another consumer of the service discovery API 214 then attempts to find services, the service discovery API 214 will be able to return services for ad-hoc devices/services, even if the devices are not currently available. For the above example, in the case where the device/service is currently
  • the persistent data store module may return results for the device.

Abstract

A system and methods for service discovery and publication are disclosed. Application programs write requests for service discovery, publication, and subscription to a service discovery application programming interface. The service discovery application programming interface invokes one or more lower-level protocols to satisfy the discovery, publication and/or subscription request. Service information retrieved from lower-layer protocols is formatted into a consistent data model and returned to the client application. In addition, service information may be stored in a persistent data store managed by a discovery persistence service communicatively connected to the service discovery API.

Description

SERVICE DISCOVERY AND PUBLICATION
TECHNICAL FIELD [0001] The described subject matter relates to digital computing, and more
particularly to service discovery in computing devices and computing networks.
BACKGROUND OF THE INVENTION [0002] Application programs that execute on computing devices and
computer networks may require the use of services provided by other physical or
logical devices connected to the computing device or network. Presently,
application programs use a wide range of application programming interfaces
(APIs), protocols, and object models to discover, enumerate, and describe services
and devices on a local computing device or across a plurality of devices in a
computer network. The mechanisms available to discover, enumerate, and describe
services and devices differ significantly, even when the services and devices
involved are conceptually similar.
[0003] For example, consider a situation in which an application seeks to
enumerate available printers. When executing within an administered, corporate
environment, the application may need to use Lightweight Directory Access
Protocol (LDAP) to communicate with a Microsoft Active Directory® directory
service store to discover registered corporate printers, NetBT to discover print
queue servers, and Bluetooth to discover personal area network printers. In
addition, the application might have to invoke device management APIs to discover direct attached printers, and UPnP™ APIs to discover UPnP printers. Each of these
mechanisms requires understanding of a particular API, protocol, and query
semantic.
[0004] The number of APIs and protocols required to for an application to
discover, enumerate, and describe services complicates the task of software
development.
SUMMARY OF THE INVENTION [0005] Implementations described and claimed herein address these and
other problems by providing a uniform interface that simplifies discovery and
publication tasks. The uniform interface permits underlying protocols to be
leveraged and eliminates the need for application developers to understand low-
level protocols. The uniform interface provides a consistent, high-level abstraction
of services and associated operations that targets the discovery and publication of
service details over a wide range of lower-level APIs, protocols, stores, and network
environments.
[0006] In one exemplary implementation, a method for discovering services
available in a computing environment is provided. The method comprises: in an
application program, defining a discovery scope; defining a discovery filter; and
initiating a search request to a first application programming interface; and in the
first application programming interface: parsing the search request; retrieving
service information corresponding to the requested discovery scope and discovery
filter; and returning the service information to the application program. [0007] In another exemplary implementation, a method for publishing
services available in a computing environment is provided. The method comprises,
in an application program: defining a service entry object; defining a publication
scope; assigning a unique key to the service; assigning a service type; defining
properties for the service; and defining endpoints for the service; and initiating a
publication request to a first application programming interface; and in the first
application programming interface: parsing the search request; and executing at
least one low-level API call to publish the service.
[0008] In another exemplary implementation, a method for deleting a
published service in a computing environment is provided. The method comprises,
in an application program: defining a service entry object; specifying a key
corresponding to the published service; defining a deletion scope; and initiating a
deletion request to a first application programming interface; and in the first
application programming interface: parsing the search request; and executing at
least one low-level API call to delete the service.
[0009] In another exemplary implementation, a method of subscribing to
service events in a computing environment is provided. The method comprises, in
an application program: defining a scope; defining a filter; defining a callback
function; and initiating a subscription request to a first application programming
interface; and in the first application programming interface: parsing the search
request; and executing at least one low-level API call to subscribe to service events;
and returning information from service events to the application program. [0010] In another exemplary implementation, a system for managing
information about services available in a computing environment is provided. The
system comprises a first application programming interface configured to accept
service queries from an application, wherein the first application programming
interface receives service queries in a first service query protocol, processes the
service queries, and launches at least one corresponding service query to a second
protocol; a discovery persistence service communicatively connected to the first
application programming interface, wherein the discovery persistence service
receives service information from the first application programming interface and
stores the service information in a data store.
BRIEF DESCRIPTION OF THE DRAWINGS [0011] Fig. 1 is a schematic illustration of an exemplary computing device;
[0012] Fig. 2 is a block diagram illustrating an exemplary software
architecture;
[0013] Fig. 3 is a flowchart illustrating operations for service discovery;
[0014] Fig. 4 is a flowchart illustrating operations for service publication;
[0015] Fig. 5 is a flowchart illustrating operations for service deletion;
[0016] Fig. 6 is a flowchart illustrating operations for subscribing to service
events;
[0017] Fig. 7 is a block diagram illustrating the relationship between
concrete scopes and abstract scopes [0018] Fig. 8 is pseudo-code illustrating how to use the C# programming
language to locate color printers that print 50 pages per minute using a SimpleFilter
object on the Active Directory protocol;
[0019] Fig. 9 is pseudo-code illustrating how to use the C# programming
language to locate Web services;
[0020] Fig. 10 is pseudo-code illustrating the use of the C# programming
language to find services supporting a specific tModel interface using a
SimpleFilter object and the UDDI protocol;
[0021] Fig. 11 is pseudo-code illustrating the use of Visual Basic.NET to find
services supporting a specific tModel interface using a SimpleFilter object and the
UDDI protocol;
[0022] Fig. 12 is pseudo-code illustrating the use of the C# programming
language to locate a printer with a name like Office Printer using the RichFilter
with Active Directory; [0023] Fig. 13 is pseudo-code illustrating the use of Visual Basic.NET to
locate a printer with a name like Office Printer using the RichFilter with Active
Directory;
[0024] Fig. 14 is pseudo-code illustrating the use of the C# programming
language to publish a service of a specific type, identified by a specific unique
identifier, using the SSDP protocol; [0025] Fig. 15 is pseudo-code illustrating the use of Visual Basic.NET to
publish a service of a specific type, identified by a specific unique identifier, using
the SSDP protocol;
[0026] Fig. 16 is pseudo-code illustrating the use of the C# programming
language to delete a service from the SSDP protocol;
[0027] Fig. 17 is pseudo-code illustrating the use of Visual Basic.NET to
delete a service from the SSDP protocol;
[0028] Fig. 18 is pseudo-code illustrating the use of the C# programming
language to use a SimpleFilter to register for events of a specific type that use the
SSDP protocol. The registered callback function will be invoked for every event
that matches the filter and the corresponding ServiceEntry object will be provided
to that handler; and
[0029] Fig. 19 is pseudo-code illustrating the use of Visual Basic.NET to use
a SimpleFilter to register for events of a specific type that use the SSDP protocol.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT [0030] Described herein are exemplary methods and software architecture for
service discovery and publication. The methods described herein may be embodied
as logic instructions on a computer-readable medium. When executed on a
processor, the logic instructions cause a general purpose computing device to be
programmed as a special-purpose machine that implements the described methods.
The processor, when configured by the logic instructions to execute the methods
recited herein, constitutes structure for performing the described methods.
Exemplary Operating Environment
[0031] Fig. 1 is a schematic illustration of an exemplary computing device
130 that can be utilized to implement one or more computing devices in accordance
with the described embodiment. Computing device 130 can be utilized to
implement various implementations in accordance with described embodiments.
[0032] Computing device 130 includes one or more processors or processing
units 132, a system memory 134, and a bus 136 that couples various system
components including the system memory 134 to processors 132. The bus 136
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. The system
memory 134 includes read only memory (ROM) 138 and random access memory
(RAM) 140. A basic input/output system (BIOS) 142, containing the basic routines that help to transfer information between elements within computing device 130,
such as during start-up, is stored in ROM 138.
[0033] Computing device 130 further includes a hard disk drive 144 for
reading from and writing to a hard disk (not shown), a magnetic disk drive 146 for
reading from and writing to a removable magnetic disk 148, and an optical disk
drive 150 for reading from or writing to a removable optical disk 152 such as a CD
ROM or other optical media. The hard disk drive 144, magnetic disk drive 146, and
optical disk drive 150 are connected to the bus 136 by an SCSI interface 154 or
some other appropriate interface. The drives and their associated computer-
readable media provide nonvolatile storage of computer-readable instructions, data
structures, program modules and other data for computing device 130. Although
the exemplary environment described herein employs a hard disk, a removable
magnetic disk 148 and a removable optical disk 152, it should be appreciated by
those skilled in the art that other types of computer-readable media which can store
data that is accessible by a computer, such as magnetic cassettes, flash memory
cards, digital video disks, random access memories (RAMs), read only memories
(ROMs), and the like, may also be used in the exemplary operating environment.
[0034] A number of program modules may be stored on the hard disk 144,
magnetic disk 148, optical disk 152, ROM 138, or RAM 140, including an
operating system 158, one or more application programs 160, other program
modules 162, and program data 164. A user may enter commands and information
into computing device 130 through input devices such as a keyboard 166 and a pointing device 168. Other input devices (not shown) may include a microphone,
joystick, game pad, satellite dish, scanner, or the like. These and other input
devices are connected to the processing unit 132 through an interface 170 that is
coupled to the bus 136. A monitor 172 or other type of display device is also
connected to the bus 136 via an interface, such as a video adapter 174. In addition
to the monitor, personal computers typically include other peripheral output devices
(not shown) such as speakers and printers.
[0035] Computing device 130 commonly operates in a networked
environment using logical connections to one or more remote computers, such as a
remote computer 176. The remote computer 176 may be another personal
computer, a server, a router, a network PC, a peer device or other common network
node, and typically includes many or all of the elements described above relative to
computing device 130, although only a memory storage device 178 has been
illustrated in Fig. 1. The logical connections depicted in Fig. 1 include a local area
network (LAN) 180 and a wide area network (WAN) 182. Such networking
environments are commonplace in offices, enterprise-wide computer networks,
intranets, and the Internet.
[0036] When used in a LAN networking environment, computing device 130
is connected to the local network 180 through a network interface or adapter 184.
When used in a WAN networking environment, computing device 130 typically
includes a modem 186 or other means for establishing communications over the
wide area network 182, such as the Internet. The modem 186, which may be internal or external, is connected to the bus 136 via a serial port interface 156. In a
networked environment, program modules depicted relative to the computing
device 130, or portions thereof, may be stored in the remote memory storage device.
It will be appreciated that the network connections shown are exemplary and other
means of establishing a communications link between the computers may be used.
[0037] Generally, the data processors of computing device 130 are
programmed by means of instructions stored at different times in the various
computer-readable storage media of the computer. Programs and operating systems
are typically distributed, for example, on floppy disks or CD-ROMs. From there,
they are installed or loaded into the secondary memory of a computer. At
execution, they are loaded at least partially into the computer's primary electronic
memory. The invention described herein includes these and other various types of
computer-readable storage media when such media contain instructions or programs
for implementing the steps described below in conjunction with a microprocessor or
other data processor. The invention also includes the computer itself when
programmed according to the methods and techniques described below.
Exemplary Software Architecture Overview
[0038] Fig. 2 is a block diagram of an exemplary software architecture 200
for service discovery that may reside in system memory 134 of Fig. 1. In this
implementation, system memory 134 may comprise a plurality of application
programs 210. In a networked environment the application programs may function as client programs, while in a PC environment the applications may execute as
stand-alone programs. The particular nature of the application programs is not
critical.
[0039] Application programs 210 invoke service discovery API 214 to
discover services available in the computing environment. Service discovery API
214 provides a high-level grammar for expressing discovery queries. The grammar
may be implemented in OPath, a natural query language used for expressing
discovery queries. This high-level grammar provides software developers a more
conceptual mechanism to express the service(s) the developer is looking for, rather
than requiring a more granular and protocol-specific expression that may be
required by the underlying protocols 220-234. The developer can construct a query
using the high-level grammar, which may then be forwarded to either a specific set
of protocols, referred to as a number of "concrete scopes", or use an "abstract
scope" which is a predefined or configured set of concrete scopes. In addition to
supporting service discovery, the system supports service publication/deleting, and
monitoring for events.
[0040] Service discovery API 214, in turn, invokes one or more underlying
protocols, represented in the diagram by Protocol 1 220 through Protocol 8 234.
The particular number of underlying protocols is not important. Certain of the
protocols 220-234 may be directory-backed protocols such as, e.g., LDAP,
Universal Description, Discovery and Integration (UDDI), and Domain Name
System (DNS) Server. Other protocols may be ad-hoc protocols such as, e.g., Bluetooth, UPnP, and NetBT. One or more of the underlying protocols 220-234
uses a communication connection 236 to communicate with other components or
services available in the computing environment.
[0041] In response to the discovery request, the service discovery API returns
a collection of ServiceEntry objects that represent matching services discovered
either on the local machine or on the network. A ServiceEntry object is a
generalized data structure that can represent much of the relevant detail returned by
the underlying protocols that system supports. Each ServiceEntry object
corresponds to a single instance of a service. In one implementation, the
ServiceEntry object provides descriptive and identifying properties including: (1) a
service name; (2) a service description; (3) endpoints, which typically contain a
network address(es) for the service; (4) a key, that identifies the service instance;
(5) properties, e.g., an extensible list of name- value pairs for service or device
characteristics; and (6) a provider, e.g., an identifier that identifies the entity that
provides the service.
[0042] A discovery persistence service 212 communicates with service
discover API 214. Among other things, discovery persistence service 212 registers
for announcement events over ad-hoc protocols. The discovery persistence service
is notified when an announcement event is detected, and the discovery persistence
service copies information about the service announcement into a memory location
in data store 240. Storing service details in a memory location enables discovery of
services that may be currently unavailable. For example, even if a printer is currently switched off details about the printer may be registered in the memory
location and can be discovered. In addition, service queries are not restricted to the
protocol that communicates with the service. Moreover, the performance of
querying the memory location may be much better than issuing a broad network
discovery query.
Exemplary Operations
[0043] In an exemplary implementation, the service discovery API 214
provides methods for service discovery, service publication, and subscribing to
service event notifications. Fig. 3 is a flowchart illustrating operations 300 for
service discovery. At operation 310 an application defines a scope, at operation 315
the application defines a filter, and at operation 320 the application issues a search
request. The service discovery API 214 receives the search request and, at
operation 325, the service discovery API 214 parses the search request. At optional
operation 330, the service discovery API 214 determines whether the search request
is resolvable using information stored in the discovery persistence service 212. In
one implementation, information managed by the discovery persistence service 212
includes a time-of-life indicator that specifies the lifespan of the information in the
discovery persistence service 212. Depending upon control and configuration, the
service discovery API 214 may query the discovery persistence service 212 to
determine whether the discovery request can be satisfied using information the
discovery persistence service 212 manages on the data store 240. If the discovery request is resolvable using the discovery persistence service 212, then control
passes to operation 350, and the service entry objects retrieved from the discovery
persistence service 212 are returned to the application.
[0044] By contrast, if the discovery request is not resolved or resolvable
using information managed by the discovery persistence service 212, then control
passes to operation 335, and the service discovery API 214 executes the low-level
API call(s) required to fulfill the discovery request. At operation 340 the service
information returned from the low-level API calls is formatted into service entry
objects, and at optional operation 345 the service entry objects are forwarded to the
discovery persistence service, which may store the service entry objects on data
store 240. At optional operation 347 further processing and filtering of the service
entry results such as duplicate detection and removal may be performed. At
operation 350 the service entry objects are returned to the application for further
processing, at operation 355. The particular details of the further processing
performed by the application are not important.
[0045] Fig. 4 is a flowchart illustrating operations for service publication. At
operation 410 an application defines a service entry object for the service
publication. At operation 415 the application defines the scope for the service
publication. At operation 420 the application assigns a unique key to the service
publication, and at operation 425 the application assigns a service type to the
service publication. At operation 430 the application defines endpoints for the
service publication, at operation 432 the application defines properties for the service publication and at operation 435 the application generates a publication
request. The steps performed may vary according to the detail of information that is
to be published and the low-level API that will be used.
[0046] The service discovery API 214 receives the publication request and, at
operation 440, parses the publication request. At operation 450 the service
discovery API 214 executes the low-level API calls to execute the service
publication request. At optional operation 455 the service publication is stored in
the discovery persistence service 212.
[0047] The service publication facilities of the service discovery API 214 can
also be used to delete a published service. Fig. 5 is a flowchart illustrating
operations for service deletion. At operation 510 an application defines a service
entry object for the service publication. At operation 515 the application specifies
the unique key for the service. At operation 520 the application defines a scope for
the service deletion. At operation 530 the application generates a service deletion
request.
[0048] The service discovery API 214 receives the deletion request and, at
operation 540, parses the deletion request. At operation 550 the service discovery
API 214 executes the low-level API calls to execute the service deletion request. At
optional operation 555 the service publication is deleted from the discovery
persistence service 212.
[0049] The service discovery API 214 can also be used to allow applications
to be notified of service events, such as the arrival or departure of a new service or device of a particular type. Fig. 6 is a flowchart illustrating operations 600 for
subscribing to service events. At operation 610 an application defines a scope that
specifies the particular low-level protocol to monitor. At operation 615 the
application defines a filter that specifies the type of event. At operation 620 the
application defines a callback function that will receive ServiceEntry details as
matching events occur. At operation 625 an application generates a subscription
request, which is forwarded to the service discovery API 214.
[0050] The service discovery request API 214 receives the subscription
request and, at operation 630, parses the subscription request. At operation 635 the
service discovery request executes the low-level protocol calls required to
implement the subscription service. When a service event occurs the low-level
protocol will provide the service discovery API with a notification of the event. At
operation 640 the event notification is formatted into a service entry object. At
optional operation 645 the service entry object may be stored in the discovery
persistence service 212, and at operation 650 the service entry object is returned to
the application using the previously specified callback function. At operation 655
the application performs further processing on the service entry object. The
particular details of the further processing performed by the application are not
important. [0051] The system's components and operations are discussed in greater
detail below. API Classes
Filters
[0052] A Filter is a set of rules by which a service description can be
evaluated, resulting in true (i.e., service description matches the filter) or false (i.e.,
service description doesn't match the filter). A filter can be expressed either as a
simple filter, which specifies particular properties, or as a rich filter, which uses
more expressive grammar. Whether expressed as a simple filter or a rich filter,
queries can be specified and executed over more than one protocol without
modification, subject to the capabilities of the underlying protocols. The service
discovery request API 214 manages the re-expression of the higher level query into
the correct format for the underlying low-level protocol. For example, the service
discovery request API 214 can receive a query for a particular service type and
express and evaluate it using LDAP for Active Directory and using the UDDI
protocol for a UDDI Web service registry. An application developer is not required
to work directly with the individual protocols.
[0053] In an exemplary implementation, the service discovery request API
214 requires discovery modules to support a simple filter, providing exact match
semantics for provided criteria, and a rich filter containing a query expressed in the
OPath grammar. It will be appreciated that each may also support additional
"native" filter types. Different discovery modules may have protocol-specific
native filter types, e.g., UPnP may use XPath filters, Active Directory may natively
use LDAP filters, and UDDI may natively use a UDDI filter. [0054] The base level of OPath filter functionality across the modules further
insulates applications from underlying discovery protocols. The filter class exposes
additional methods to parse and interpret the filter in a way that is shared across the
modules. [0055] A simple filter provides for expression of queries by specifying a
service type, services interfaces, and/or properties. Any combination of these
settings may be provided in a search query, and services will be included in the
resulting service entry collection only if all of the criteria exactly match.
[0056] The service type may be implemented as a string that specifies the
type that must match the service instances. A common set of service types are
predefined in the service discovery request API 214. This set may be extended as
key entities within protocols and stores are identified. For example, for printers in
Active Directory, this would specify: filter. ServiceType =
CommonServiceTypes rinter. [0057] The service interfaces may be implemented as a string collection that
specifies identifiers for interfaces that services must match. As an example, for web
services in UDDI, the following tModel identifiers could be specified:
filter.ServiceInterfaces.Add("uuid:acl04dcc-d623-452f-88a7-f8acd94d9b2b");
filter.ServiceInterfaces.Add("uuid:4d2aclca-e234-142f-e217-4d9b2f8acd9b") [0058] Properties may be implemented in a property dictionary that specifies
service characteristics that services must match. As an example, for printers in Active Directory, the following properties could be specified: filter.Properties.Add
("printcolor", "TRUE"); filter.Properties.Add ("pagesperminute", "50")
[0059] A rich filter provides a mechanism for expressing significantly richer
query semantics using, e.g., the OPath grammar, by setting a Query string property.
As an example, for web services in UDDI, the Query string would specify the
required name and a required supported interface: filter.Query = "WebService[
name = 'Fabrikam' and Servicelnterface = uuid:acl04dcc-d623-452f-88a7-
f8acd94d9b2b' ]"
[0060] As a more expressive example to find printers in Active Directory
capable of printing more than 25 pages per minute where A4 paper is not available:
filter.Query = "Printer[ printPagesPerMinute > 20 + 5 and not( printmediaReady =
A41 )]".
[0061] Since the capabilities of the underlying protocols and stores are far
from identical, ranging from the basic NetBT to the rich Active Directory query
semantics, the ability to use the more expressive constructs of OPath will depend
upon the scope (protocol) selected.
Scopes
[0062] A scope identifies a query domain that can be searched, usually coarse
and by network location or administrative boundary. Discovery queries are directed
to one or more scopes, and the query result includes a subset of the services within
those scopes, i.e., the query result is the subset of all services within the scope that
match the given filter. Exemplary scopes include workgroup, localmachine, and
domain.
[0063] The service discovery API 214 accommodates concrete scopes and
abstract scopes. A concrete scope specifies a query domain in three pieces. A
Protocol identifier that identifies a specific protocol, e.g., mapping to a single
discovery module such as ConcreteScope.NetBtProtocol. or
ConcreteScope.ADProtocol, an Address (optional) identifier that specifies a server
to which to direct operations on this scope such as "http://intra-
uddi/uddi/inquire.asmx" for an intranet UDDI server, and a path identifier
(optional) that identifies a partition of the module's namespace, such as an LDAP
search base which could be set to "CN=joe-
dev,CN=Comρuters,DC=coφ,DC=fabrikam,DC=com", or a UPnPv2 scope name.
[0064] The service discovery request API 214 passes concrete scopes to
modules. The service discovery request API 214 does not preclude modules from
performing additional indirection on concrete scopes such as, e.g., transmitting the
concrete scope over the wire to a second machine and passing the concrete scope to
a corresponding API on that second machine. [0065] An abstract scope is a moniker for one or more concrete scopes and
possibly further abstract scopes. Abstract scopes provide a mechanism for targeting
a query across a logical predefined or configured concrete scope collection. This
provides an additional abstraction that allows the developer to target, for example,
an "enterprise" scope, without requiring explicit protocol, address, and connection
details for particular directory servers.
[0066] The mapping of abstract scopes to concrete scopes is machine-wide
and configurable. For example, an abstract scope AbstractScope.Enterprise might
map to include both of the concrete scopes in Table 1.
protocol = ConcreteScope.ADProtocol address = "ldap://dev.corp.fabrikam.com" path = null
protocol = ConcreteScope.UddiProtocol address = "ht ://uddi.fabrikam.com/inquire.asmx" path = null Table 1
[0067] Fig. 7 is a block diagram illustrating an exemplary relationship
between concrete scopes and abstract scopes. Concrete scopes 730-750 provide the
specification of the domain across which queries will be evaluated. Concrete
scopes 730-750 comprise protocol identification details and, as required, specifics
of a store or server to use, with the potential for further scoping within that store or
server. Within the service discover API 214, these are specified in the Protocol,
Address and Path properties respectively. [0068] Abstract scopes 710-725 provide a higher level hierarchical
abstraction over and above concrete scopes. Abstract scopes are configured to
include the concrete or abstract scopes that make them up. This scope mapping will
be available to system administrators, who can be able to configure exactly how, for
example, the AbstractScope.EnterpriseScope should be resolved.
[0069] Both concrete and abstract scopes can be used by a user of the service
discovery API 214. In the case where an abstract scope is provided, the service
discovery API 214 will resolve this down, through the hierarchy, to a number of
concrete scopes. [0070] Abstract scopes allow developers of application programs 210 to
work at a relatively high level and include scope identifying terms such as
"AbstractScope.Enterprise" in code. In this way, for example, the developer is not
required to hardcode the specifics of a particular UDDI server into his code. This
abstraction provides for greater reuse and portability of code. The same piece of
code can be used in a variety of enterprise environments without change or
recompilation. Only the abstract scope configuration would change between
environments.
[0071] There may be multiple hierarchies of abstract to concrete scope
mappings. In Fig. 7 AbstractScope.LocalMachine does not map up into
AbstractScope.AU even though all of its constituents are included.
[0072] In an exemplary implementation the scope map configuration may be
manipulated through group policy by a system administrator to control the use of the service discover API 214 in the enterprise. By way of example, an administrator could define one or more abstract scopes available in the enterprise computing environment, or in a portion of the enterprise computing environment. This permits a system administrator to regulate the discovery and use of resources by applications.
ServiceEntry Results
[0073] An application developer can select appropriate Scope and Filter expression, which may then be set as properties on a service finder object. The application can then use the FindOne or FindAll methods to execute a discovery request. The FindAll method returns all services matching the supplied criteria, whereas the FindOne method returns a single matching service. The methods may be executed using a synchronous or an asynchronous calling pattern.
[0074] Assuming that there are services that match the provided filter within the specified scope, the FindOne or FindAll methods will return one, or a collection of, service entry objects. The service entry object is an abstraction over the various representations of services that the underlying protocols can provide. Each service entry object corresponds to a single instance of a service and as such, offers descriptive and identifying properties including those set forth in Table 2.
Figure imgf000024_0001
Endpoints The set of endpoints at which the service instance can be accessed
Key The identifying key for the service instance
Scopes The scopes that an entity was discovered from or is to be published into
Credentials Specifies the credentials that will be used when publishing this service.
Provider References the "provider" (container) of the service, if any
Expiration Time at which the service entry will expire, based on a time-to-live Table 2 [0075] A public void Save() function is provided to create or update the
service entry representation in the scopes specified in the scopes collection.
[0076] A public void Delete() method removes this ServiceEntry object from
the scopes specified in the Scopes property. An exception will be thrown if the
service is not already published.
Pseudo-Code
[0077] Figs. 8-24 illustrate pseudo-code for performing various service
discovery, publication, and subscription functions.
[0078] Fig. 8 is pseudo-code illustrating how to use the C# programming
language to locate color printers that print 50 pages per minute using a SimpleFilter
object on the Active Directory protocol.
[0079] Fig. 9 is pseudo-code illustrating how to use the C# programming
language to locate Web services that implement the uddi-org:inquiry_v2 interface
and are named Fabrikam using the RichFilter object over the UDDI protocol. [0080] Fig. 10 is pseudo-code illustrating the use of the C# programming
language to find services supporting a specific tModel interface using a
SimpleFilter object and the UDDI protocol.
[0081] Fig. 11 is pseudo-code illustrating the use of Visual Basic.NET to find
services supporting a specific tModel interface using a SimpleFilter object and the
UDDI protocol.
[0082] Fig. 12 is pseudo-code illustrating the use of the C# programming
language to locate a printer with a name like Office Printer using the RichFilter
with Active Directory. [0083] Fig. 13 is pseudo-code illustrating the use of Visual Basic.NET to
locate a printer with a name like Office Printer using the RichFilter with Active
Directory.
[0084] Fig. 14 is pseudo-code illustrating the use of the C# programming
language to publish a service of a specific type, identified by a specific unique
identifier, using the SSDP protocol.
[0085] Fig. 15 is pseudo-code illustrating the use of Visual Basic.NET to
publish a service of a specific type, identified by a specific unique identifier, using
the SSDP protocol
[0086] Fig. 16 is pseudo-code illustrating the use of the C# programming
language to delete a service from the SSDP protocol.
[0087] Fig. 17 is pseudo-code illustrating the use of Visual Basic.NET to
delete a service from the SSDP protocol. [0088] Fig. 18 is pseudo-code illustrating the use of the C# programming language to use a SimpleFilter to register for events of a specific type that use the
SSDP protocol. The registered callback function will be invoked for every event that matches the filter and the corresponding ServiceEntry object will be provided to that handler.
[0089] Fig. 19 is pseudo-code illustrating the use of Visual Basic.NET to use a SimpleFilter to register for events of a specific type that use the SSDP protocol.
Exemplary OPath Syntax [0090] Table 3 provides exemplary OPath syntax for various discovery functions.
Figure imgf000027_0001
Figure imgf000028_0001
Table 3
[0091] Table 4 contains examples of OPath syntax that can be used on the UDDI protocol.
Figure imgf000028_0002
Table 4
[0092] Table 5 contains examples of OPath syntax that can be used on the
NetBT protocol.
Figure imgf000029_0001
Table 5
Discovery Persistence Service
[0093] As described briefly above, the discovery persistence service 212 manages a persistent data store for service information. Periodically, or at predetermined events, such as startup, the discovery persistence service registers to receive ad-hoc device/service announcements. As an example, when a new UPnP device is introduced it will generate a device announcement that will be handled by the UPnP protocol module. This module will then surface details of that event (the device and its services) to the discovery persistence service through the service discovery API 214.
[0094] Using its persistent data store, the discovery persistence service then determines whether this is a new device/service or a returning device/service. If it is a new device/service, the details of the device and its services will be registered in the persistent data store. When another consumer of the service discovery API 214 then attempts to find services, the service discovery API 214 will be able to return services for ad-hoc devices/services, even if the devices are not currently available. For the above example, in the case where the device/service is currently
available, depending upon the scope specified, both the UPnP protocol module and
the persistent data store module may return results for the device. In addition to
UPnP, this functionality applies to other ad-hoc discovery mechanisms. [0095] Thus, the discovery persistence service 212, the service discovery API
214, and the local database store 240 provide a layer of abstraction over the various
low-level protocols used for device and service discovery. This additional layer of
abstraction establishes a common and improved search semantic that application
developers may use in developing applications. [0096] In addition, the discovery persistence service 212, the service
discovery API 214, and the local database store 240 provide a consolidated
discovery model for services and devices on a local machine, a home network(s), an
enterprise network(s), and the internet. Thus, application developers can discover
services in a wide variety of locations by writing to a single, consistent API.
Conclusion
[0097] Although the described arrangements have been described in
language specific to structural features and/or methodological operations, it is to be
understood that the subject matter defined in the appended claims is not necessarily
limited to the specific features or operations described. Rather, the specific features
and operations are disclosed as preferred forms of implementing the claimed
present subject matter.

Claims

CLAIMS 1. A method for discovering services available in a computing
environment, comprising: in an application program: defining a discovery scope; defining a discovery filter; and initiating a search request to a first application programming
interface; in the first application programming interface: parsing the search request; retrieving service information corresponding to the requested
discovery scope and discovery filter; and returning the service information to the application program.
2. The method of claim 1 , wherein retrieving service information
corresponding to the requested discovery scope and discovery filter comprises
executing a call to at least one low-level API or protocol.
3. The method of claim 1 , wherein retrieving service information
corresponding to the requested discovery scope and discovery filter comprises
querying a persistent data store service.
4. The method of claim 1 , further comprising formatting retrieved
service information into a consistent service entry object data format.
5. The method of claim 2, further comprising saving information
received from the at least one low-level API or protocol in a persistent data store.
6. A method for publishing services available in a computing
environment, comprising: in an application program: defining a service entry object; defining a publication scope; assigning a unique key to the service; and assigning a service type; defining properties for the service; defining endpoints for the service; and initiating a publication request to a first application programming
interface; in the first application programming interface: parsing the search request; and executing at least one low-level API call to publish the service.
7. The method of claim 6, further comprising storing the service
information in a persistent data store.
8. A method for deleting a published service in a computing
environment, comprising: in an application program: defining a service entry object; specifying a key corresponding to the published service; defining a deletion scope; and initiating a deletion request to a first application programming
interface; in the first application programming interface: parsing the search request; and executing at least one low-level API call to delete the service.
9. The method of claim 8, further comprising deleting the service
information from a persistent data store.
10. The method of claim 8, further comprising registering the deleted
service information in a persistent data store.
11. A method of subscribing to service events in a computing
environment, comprising: in an application program: defining a scope; defining a filter; defining a callback function; and initiating a subscription request to a first application programming
interface; in the first application programming interface: parsing the search request; and executing at least one low-level API call to subscribe to service
events; and returning information from service events to the application program.
12. The method of claim 11 , further comprising formatting retrieved
service information into a service entry object data format.
13. The method of claim 12, further comprising saving information
received from the at least one low-level API in a persistent data store.
14. A system for managing information about services available in a
computing environment, comprising: a first application programming interface configured to accept service
queries from an application, wherein the first application programming interface
receives service queries in a first service query protocol, processes the service
queries, and launches at least one corresponding service query to a second protocol; a discovery persistence service communicatively connected to the first
application programming interface, wherein the discovery persistence service
receives service information from the first application programming interface and
stores the service information in a data store.
15. The system of claim 14, wherein the first application programming
interface provides an interface to at least one directory-based protocol and at least
one ad-hoc protocol.
16. The system of claim 14, wherein the first application programming
interface discovers services available on a local computing device.
17. The system of claim 14, wherein the first application programming
interface discovers services available on a remote computing device.
18. The system of claim 14, wherein the first application programming
interface implements a scope map, and wherein the scope map is configurable by a
system administrator.
PCT/US2004/023547 2003-10-24 2004-07-21 Service discovery and publication WO2005045563A2 (en)

Priority Applications (7)

Application Number Priority Date Filing Date Title
EP04778869A EP1676215A4 (en) 2003-10-24 2004-07-21 Service discovery and publication
CA2501718A CA2501718C (en) 2003-10-24 2004-07-21 Service discovery and publication
BR0406411-9A BRPI0406411A (en) 2003-10-24 2004-07-21 Service Discovery and Publishing
JP2006536562A JP2007509406A (en) 2003-10-24 2004-07-21 Service discovery and service publication
AU2004279194A AU2004279194B2 (en) 2003-10-24 2004-07-21 Service discovery and publication
KR1020117016088A KR101176757B1 (en) 2003-10-24 2004-07-21 Service discovery and publication
MXPA05006611A MXPA05006611A (en) 2003-10-24 2004-07-21 Service discovery and publication.

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/693,653 US7716357B2 (en) 2003-10-24 2003-10-24 Service discovery and publication
US10/693,653 2003-10-24

Publications (2)

Publication Number Publication Date
WO2005045563A2 true WO2005045563A2 (en) 2005-05-19
WO2005045563A3 WO2005045563A3 (en) 2005-07-14

Family

ID=34573201

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2004/023547 WO2005045563A2 (en) 2003-10-24 2004-07-21 Service discovery and publication

Country Status (11)

Country Link
US (2) US7716357B2 (en)
EP (1) EP1676215A4 (en)
JP (2) JP2007509406A (en)
KR (2) KR20060130479A (en)
CN (1) CN100481069C (en)
AU (1) AU2004279194B2 (en)
BR (1) BRPI0406411A (en)
CA (2) CA2501718C (en)
MX (1) MXPA05006611A (en)
RU (1) RU2365973C2 (en)
WO (1) WO2005045563A2 (en)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8234559B2 (en) 2006-03-31 2012-07-31 Microsoft Corporation Managing rich presence collections
US8356011B2 (en) 2005-07-26 2013-01-15 Microsoft Corporation Organizing presence information into collections of publications
US9275375B2 (en) 2006-03-31 2016-03-01 Microsoft Technology Licensing, Llc Managing rich presence collections in a single request
EP4149060A4 (en) * 2020-05-27 2023-07-12 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Information processing method and apparatus, and device and computer storage medium

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996492B2 (en) * 2002-02-20 2011-08-09 Hewlett-Packard Development Company, L.P. System for providing information regarding network resources
US7716357B2 (en) * 2003-10-24 2010-05-11 Microsoft Corporation Service discovery and publication
US7590713B2 (en) 2003-11-24 2009-09-15 Microsoft Corporation Presenting a merged view of remote application shortcuts from multiple providers
US7720906B2 (en) * 2003-11-24 2010-05-18 Microsoft Corporation Web service for remote application discovery
US7475125B2 (en) 2003-11-24 2009-01-06 Microsoft Corporation Seamless discovery of workstation-installed remote applications from an extranet
US8694532B2 (en) * 2004-09-17 2014-04-08 First American Data Co., Llc Method and system for query transformation for managing information from multiple datasets
US20060168320A1 (en) * 2004-12-30 2006-07-27 Kidd Nelson F Network topology discovery service
US20070005746A1 (en) * 2005-06-30 2007-01-04 Roe Bryan Y Enhanced network discovery service
US20080046435A1 (en) * 2006-08-18 2008-02-21 Microsoft Corporation Service discovery and automatic configuration
US20080082577A1 (en) * 2006-09-29 2008-04-03 Rockwell Automation Technologies, Inc. Module classification and searching for industrial control systems
US9217998B2 (en) * 2006-09-29 2015-12-22 Rockwell Automation Technologies, Inc. Management and development of an industrial environment
US9058032B2 (en) * 2006-09-29 2015-06-16 Rockwell Automation Technologies, Inc. Hosting requirements for services
US8265775B2 (en) * 2008-09-30 2012-09-11 Rockwell Automation Technologies, Inc. Modular object publication and discovery
US8078296B2 (en) * 2006-09-29 2011-12-13 Rockwell Automation Technologies, Inc. Dynamic procedure selection
US9261877B2 (en) * 2006-09-29 2016-02-16 Rockwell Automation Technologies, Inc. Multiple machine interface
US8732658B2 (en) * 2006-09-29 2014-05-20 Rockwell Automation Technologies, Inc. Layered interface in an industrial environment
US8818757B2 (en) * 2008-09-30 2014-08-26 Rockwell Automation Technologies, Inc. Modular object and host matching
US8776092B2 (en) 2006-09-29 2014-07-08 Rockwell Automation Technologies, Inc. Multiple interface support
US8041435B2 (en) * 2008-09-30 2011-10-18 Rockwell Automation Technologies, Inc. Modular object dynamic hosting
JP2010515338A (en) * 2006-12-28 2010-05-06 テレフオンアクチーボラゲット エル エム エリクソン(パブル) Method and apparatus for service discovery
US9021416B2 (en) * 2007-05-16 2015-04-28 Accenture Global Service Limited Recommended application evaluation system
US7904470B2 (en) * 2007-06-13 2011-03-08 Sap Ag Discovery service for electronic data environment
US20090119769A1 (en) * 2007-11-05 2009-05-07 Microsoft Corporation Cross-site scripting filter
US20090132685A1 (en) * 2007-11-21 2009-05-21 Motive, Incorporated System and method for provisioning and unprovisioning multiple end points with respect to a subscriber and service management system employing the same
US7987163B2 (en) * 2008-02-12 2011-07-26 Bae Systems Information And Electronic Systems Integration Inc. Apparatus and method for dynamic web service discovery
US9071443B2 (en) * 2008-08-25 2015-06-30 Novell, Inc. Automated service platform prospecting
US8788666B2 (en) * 2008-12-31 2014-07-22 Sap Ag System and method of consolidated central user administrative provisioning
US8949280B2 (en) * 2010-04-30 2015-02-03 International Business Machines Corporation Web service discovery via data abstraction model with input assistance
US8275806B2 (en) * 2010-04-30 2012-09-25 International Business Machines Corporation Web service discovery via data abstraction model and condition creation
US8583699B2 (en) * 2010-04-30 2013-11-12 International Business Machines Corporation Web service discovery via data abstraction model augmented by field relationship identification
US8250113B2 (en) * 2010-04-30 2012-08-21 International Business Machines Corporation Web service discovery via data abstraction model
US8793263B2 (en) * 2010-08-23 2014-07-29 International Business Machines Corporation Avoiding duplicate and equivalent data objects in service registries
US9262474B2 (en) * 2010-09-30 2016-02-16 Microsoft Technology Licensing, Llc Dynamic domain query and query translation
US9141411B2 (en) * 2010-09-30 2015-09-22 Microsoft Technology Licensing, Llc Model slicing and versioning
US8671416B2 (en) 2011-01-14 2014-03-11 Apple Inc. Dynamic service discovery
US20130080603A1 (en) 2011-09-27 2013-03-28 Microsoft Corporation Fault Tolerant External Application Server
US9652314B2 (en) * 2012-10-15 2017-05-16 Alcatel Lucent Dynamic application programming interface publication for providing web services
GB2509723A (en) * 2013-01-10 2014-07-16 Ibm Invoking web services that are determined at the time of execution
US10216812B2 (en) 2013-10-30 2019-02-26 Hewlett Packard Enterprise Development Lp Application programmable interface (API) discovery
EP3281168A4 (en) 2015-07-31 2018-03-14 Hewlett-Packard Enterprise Development LP Discovering and publishing api information
US10078562B2 (en) 2015-08-18 2018-09-18 Microsoft Technology Licensing, Llc Transactional distributed lifecycle management of diverse application data structures
US10341444B2 (en) * 2016-07-27 2019-07-02 Microsoft Technology Licensing, Llc Abstracted device service discovery
CN108989372B (en) * 2017-06-02 2021-04-09 华为技术有限公司 Service discovery method, registration center and equipment
US10831564B2 (en) 2017-12-15 2020-11-10 International Business Machines Corporation Bootstrapping a conversation service using documentation of a rest API
US10831772B2 (en) 2017-12-20 2020-11-10 International Business Machines Corporation Facilitation of domain and client-specific application program interface recommendations
US10803108B2 (en) 2017-12-20 2020-10-13 International Business Machines Corporation Facilitation of domain and client-specific application program interface recommendations
CN108647012A (en) * 2018-05-04 2018-10-12 山东汇贸电子口岸有限公司 A kind of management method and managing device of service-Engine
CN111161437A (en) * 2019-12-04 2020-05-15 江苏苏宁物流有限公司 General receiving, subscribing and distributing method and system for logistics box codes
JP7346745B2 (en) * 2020-02-14 2023-09-19 テレフオンアクチーボラゲット エルエム エリクソン(パブル) Method and network entity for service API publication
CN111865746B (en) * 2020-06-19 2022-08-19 苏宁云计算有限公司 System development method and device based on loop bus
CN113867976A (en) * 2020-06-30 2021-12-31 中兴通讯股份有限公司 Calling method and device of application program interface, storage medium and electronic device

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5423003A (en) 1994-03-03 1995-06-06 Geonet Limited L.P. System for managing network computer applications
US5893107A (en) * 1996-07-01 1999-04-06 Microsoft Corporation Method and system for uniformly accessing multiple directory services
US6067568A (en) 1996-12-10 2000-05-23 International Business Machines Corporation Automatic setup of services for computer system users
US6480836B1 (en) * 1998-03-27 2002-11-12 International Business Machines Corporation System and method for determining and generating candidate views for a database
US6463078B1 (en) * 1998-07-22 2002-10-08 Microsoft Corporation Method for switching protocols transparently in multi-user applications
US6487552B1 (en) * 1998-10-05 2002-11-26 Oracle Corporation Database fine-grained access control
US6584459B1 (en) * 1998-10-08 2003-06-24 International Business Machines Corporation Database extender for storing, querying, and retrieving structured documents
US6366934B1 (en) * 1998-10-08 2002-04-02 International Business Machines Corporation Method and apparatus for querying structured documents using a database extender
ATE294480T1 (en) * 1999-06-11 2005-05-15 Microsoft Corp GENERAL API FOR DEVICE REMOTE CONTROL
JP4335405B2 (en) 2000-03-28 2009-09-30 ブラザー工業株式会社 Printing system, network printer, and printing control method
JP2003534597A (en) 2000-05-09 2003-11-18 サン・マイクロシステムズ・インコーポレイテッド Remote function invocation using messaging in a distributed computing environment
US7171475B2 (en) * 2000-12-01 2007-01-30 Microsoft Corporation Peer networking host framework and hosting API
US20020099814A1 (en) * 2001-01-24 2002-07-25 International Business Machines Corporation Method and apparatus for providing automatic discovery of network protocols, configurations and resources
US7249100B2 (en) * 2001-05-15 2007-07-24 Nokia Corporation Service discovery access to user location
JP4096223B2 (en) 2001-09-19 2008-06-04 富士ゼロックス株式会社 Service search apparatus and method
JP2003223449A (en) * 2001-10-26 2003-08-08 Yasuhiro Tanaka Method for registration of terminal information and method of utilizing it
US7603469B2 (en) * 2002-01-15 2009-10-13 International Business Machines Corporation Provisioning aggregated services in a distributed computing environment
US20030140119A1 (en) * 2002-01-18 2003-07-24 International Business Machines Corporation Dynamic service discovery
US8135843B2 (en) 2002-03-22 2012-03-13 Citrix Systems, Inc. Methods and systems for providing access to an application
US7614059B2 (en) * 2002-07-11 2009-11-03 Topia Technology System and method for the discovery and usage of local resources by a mobile agent object
US7401338B1 (en) * 2002-09-27 2008-07-15 Symantec Operating Corporation System and method for an access layer application programming interface for managing heterogeneous components of a storage area network
US20040111525A1 (en) * 2002-12-09 2004-06-10 International Business Machines Corporation Dynamic web service implementation discovery and selection apparatus and method
US7188155B2 (en) * 2002-12-17 2007-03-06 International Business Machines Corporation Apparatus and method for selecting a web service in response to a request from a client device
US20040120344A1 (en) * 2002-12-20 2004-06-24 Sony Corporation And Sony Electronics, Inc. Device discovery application interface
US20040133896A1 (en) * 2002-12-20 2004-07-08 Sony Corporation And Sony Electronics, Inc. Network device application interface
US7774495B2 (en) * 2003-02-13 2010-08-10 Oracle America, Inc, Infrastructure for accessing a peer-to-peer network environment
US6959262B2 (en) * 2003-02-27 2005-10-25 Hewlett-Packard Development Company, L.P. Diagnostic monitor for use with an operating system and methods therefor
US20040210630A1 (en) * 2003-04-17 2004-10-21 Microsoft Corporation Systems and methods for discovering, acquiring and maintaining nodes in a logical network
US7444386B2 (en) * 2003-06-20 2008-10-28 Sun Microsystems, Inc. Application programming interface for provisioning services
US20050080768A1 (en) * 2003-10-10 2005-04-14 International Business Machines Corporation Methods and apparatus for dynamic service discovery from Web services representation chain
US7328282B2 (en) * 2003-10-23 2008-02-05 International Business Machines Corporation Aspect oriented web service invocation
US7716357B2 (en) * 2003-10-24 2010-05-11 Microsoft Corporation Service discovery and publication

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
KEMPF E. GUTTMAN: "An API for Service Location", SUN MICROSYSTEMS J., 1 June 1999 (1999-06-01), ISSN: 0000-0003
SEDOV I. ET AL.: "Time and Energy Efficient Service Discover in Bluetooth", 57TH IEEE SEMIANNUAL VEHICULAR TECHNOLOGY CONFERENCE, vol. 1, 22 April 2003 (2003-04-22), pages 418 - 422, XP010862160, ISBN: 978-0-7803-7757-8, DOI: doi:10.1109/VETECS.2003.1207574
See also references of EP1676215A4

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8356011B2 (en) 2005-07-26 2013-01-15 Microsoft Corporation Organizing presence information into collections of publications
US8234559B2 (en) 2006-03-31 2012-07-31 Microsoft Corporation Managing rich presence collections
US9275375B2 (en) 2006-03-31 2016-03-01 Microsoft Technology Licensing, Llc Managing rich presence collections in a single request
EP4149060A4 (en) * 2020-05-27 2023-07-12 Guangdong Oppo Mobile Telecommunications Corp., Ltd. Information processing method and apparatus, and device and computer storage medium

Also Published As

Publication number Publication date
US20050234873A1 (en) 2005-10-20
CA2501718A1 (en) 2005-04-24
JP5193280B2 (en) 2013-05-08
JP2011103131A (en) 2011-05-26
CA2501718C (en) 2012-10-02
AU2004279194B2 (en) 2010-03-04
JP2007509406A (en) 2007-04-12
MXPA05006611A (en) 2005-08-16
KR101176757B1 (en) 2012-08-23
CN100481069C (en) 2009-04-22
BRPI0406411A (en) 2005-10-04
CN1705947A (en) 2005-12-07
US7716357B2 (en) 2010-05-11
US8489759B2 (en) 2013-07-16
KR20060130479A (en) 2006-12-19
AU2004279194A1 (en) 2005-06-23
KR20110086193A (en) 2011-07-27
US20100217782A1 (en) 2010-08-26
AU2004279194A8 (en) 2008-10-02
EP1676215A4 (en) 2012-10-17
WO2005045563A3 (en) 2005-07-14
CA2782812A1 (en) 2005-04-24
EP1676215A2 (en) 2006-07-05
RU2005115975A (en) 2006-01-20
CA2782812C (en) 2015-09-08
RU2365973C2 (en) 2009-08-27

Similar Documents

Publication Publication Date Title
CA2501718C (en) Service discovery and publication
US8713089B2 (en) Dynamic lookup service in a distributed system
US6604127B2 (en) Dynamic lookup service in distributed system
US7467384B2 (en) Uniform resource discovery with multiple computers
US6687831B1 (en) Method and apparatus for multiple security service enablement in a data processing system
US20010002473A1 (en) Dynamic lookup service in a distributed system
JP2004334896A (en) Framework having plug-and-play function and its reconstruction method
US7702687B2 (en) Method and system of typing resources in a distributed system
US6931427B2 (en) Method and apparatus for discovering data services in a distributed computer system
US20070209042A1 (en) Grid computing architecture & associated method of invoking/registering network services for subscription
US7979789B2 (en) System and method of replacing a delegate component associated with a delegate modular software component at software execution time
US7734640B2 (en) Resource discovery and enumeration in meta-data driven instrumentation
US9118697B1 (en) System and method for integrating namespace management and storage management in a storage system environment
EP1999612A1 (en) Object-oriented discovery framework
WO2000077619A2 (en) Dynamic lookup service in a distributed system
Installation et al. ARIS and EGIIS
Detken et al. Service Discovery in mobile networks by a combination of UDDI and LDAP

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 2501718

Country of ref document: CA

WWE Wipo information: entry into national phase

Ref document number: 1817/DELNP/2005

Country of ref document: IN

WWE Wipo information: entry into national phase

Ref document number: 1020057008290

Country of ref document: KR

WWE Wipo information: entry into national phase

Ref document number: 2004778869

Country of ref document: EP

AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BW BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE EG ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NA NI NO NZ OM PG PH PL PT RO RU SC SD SE SG SK SL SY TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): BW GH GM KE LS MW MZ NA SD SL SZ TZ UG ZM ZW AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

WWE Wipo information: entry into national phase

Ref document number: 20048013241

Country of ref document: CN

WWE Wipo information: entry into national phase

Ref document number: 2004279194

Country of ref document: AU

ENP Entry into the national phase

Ref document number: 2005115975

Country of ref document: RU

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 2006536562

Country of ref document: JP

WWE Wipo information: entry into national phase

Ref document number: PA/A/2005/006611

Country of ref document: MX

WWP Wipo information: published in national office

Ref document number: 2004279194

Country of ref document: AU

121 Ep: the epo has been informed by wipo that ep was designated in this application
ENP Entry into the national phase

Ref document number: PI0406411

Country of ref document: BR

WWP Wipo information: published in national office

Ref document number: 2004778869

Country of ref document: EP