But I thought we agreed earlier on that advertisement was
an important part of the SOA model - how would a dll advertise? Through
the registry of a given OS, but is it available to handle requests from outside
the given OS? (I'm obviously not an expert on dlls ; )

Intuitively, I am bothered by the idea that a dll can be a
service within an SOA. It is more of a gut thing. Since there is no
definitive SOA RM (that's what we are in the process of creating), I have no
basis for my feeling other than that all of the SOA implementations I have
looked at span process and machine boundaries.

I thought Microsoft considered the .net environment to be
SOA, but I have not heard them talk about dlls as SOA. Again, I am no
expert in .net, but I thought .net got into the cross-machine boundaries,
wherease .dlls are limited to the given OS.

I am balking at the idea that a service requires a request bearing
a message for either input or output. I am worried that by doing this we are
just defining WSDL without an XML binding :-)

-Matt

On
11-Apr-05, at 8:36 AM, Christopher Bashioum wrote:

But
doesn't this leave open an SOA being just a form of OO? Would a C++
library be an SOA? Could you elaborate on your use case- maybe that
will help me understand better. In particular, i'm wondering about the
"automatically perform" portion. This may be a difficult area, because
we don't want to get too concrete, but at the same time we shouldn't
try to be so abstract that anything goes. /smaller>/color>/fontfamily>/smaller>/color>/fontfamily> Maybe
we can put in a placeholder for the message or bus mechanism, and see if it
can drop out of the RM later or if it begins to show itself as an essential
part of the RM (at which time we can decide what to call it)./smaller>/color>/fontfamily>

A service is merely something
that performs some task(s) on behalf of / for a consumer. Defining the
mechanics of how the service knows what or when to do is, to me, not in
scope for SOA-RM.

I envision services residing within an SOA that
automatically perform services on behalf of a dynamic set of consumers based
on their own determination of the requirement for a service to be rendered.
I want this kind of use case to be recognized within the reference model
without needing to explicitly spell it out.

-Matt

On
11-Apr-05, at 7:27 AM, Christopher Bashioum wrote:

Ken and
Joe,

do all services have a 2-way communication mechanism, or
is it possible to have a service that just consumes messages (or just sends
messages)? The reason I am asking, is that it looks like all
the interactions mentioned so far involve a request and a
response, but I am wondering about the idea of events or
broadcasts.

A data resource is a source of content.
It accepts a request and returns a value or set of values in response. The
return can be an entity (such as a particular schema), an attribute of an
entity (such as when the schema was last modified), or any numerical or
textual value or set of values. The content can be static objects stored in
some repository or dynamically generated through the use of a processing
resource. Data about a missile that is stored in a database is content. The
weather forecast for tomorrow is content generated from a weather
simulation. In a net-centric environment, the requester does not know the
format from which the response is retrieved or how it is generated.

A
processing resource is one that accepts a task and return a status
indicating the extent to which the task was completed and information on how
the state of entities changed as a result of the processing. One or more
processing resources may be invoked as part of a process of submitting a
query and being returned a response. From the standpoint of a user (either
human or machine), it is unimportant what combination of data and processing
resources are invoked as long as the request is satisfied.

I wonder if the roles a service can play - or, perhaps one
can say, thegeneral types of services that can exist - have any bearing
on our RM atall, in an indirect way.

Put in simple terms, one may
say that there are - in general - 3overarching "types" of services.
These correspond to 3 of the layers ofthe general "integration stack"
(data, application, and process):

(1) Data-Oriented Service: Primary
role is to accept and process data,or provide data based upon a
request.

Two general types:

(a) Data Processor*: Accepts as
input a set of data, processes thatdata, and (optionally) sends a
response. The response may simply be anacknowledgement, or another set
of data to be processed by the servicerequester**.

Ex: Simple
form acceptance service, such as a loan application formservice acting
on behalf of multiple banks (routes to proper bank andsends back
acknowledgement to form submitter)

(b) Data Provider: Provides
streaming data, or a set of data uponrequest.

*need better term - using this for illustration
purposes only**using term "requester" for now since we have not
established ourperferred term

(2) Application-Oriented Service
(aka "Function-Oriented Service"):Primary role is to accept a command
and carry out processing based onthat command, in a singular fashion
(i.e. does not invoke otherservices).

Ex's: Inventory
verification service (accepts item #, responds withwhether or not it is
in inventory), shipment cost calculation service

(3) Process-Oriented
Service: Similar to Application-Oriented Service,but invokes other
services in carrying out its processing (i.e. itembodies the definition
of an overarching process).

When we talk about service
consumer vs. provider in thissense, I think we need to separate the
"static" entity fromthe dynamic role that said entity plays. A given
entity canbe both service provider (in which case it publishes
it'sservice description) and service consumer (in which case itbinds
to another service provider in order to accomplish itsown
service).

So...to re-word your statement a little: An entity that
bindswith a service is playing the role of service
consumer.

There is a distinction between the software
*entity*(agent/component/J2EE bean/.../) that interacts with
aservice in orderto achieve some goal, and the person or persons for
whom thatinteraction is taking place.

The reason that this
distinction is important is similar to thedistinction between a service
interface and the service itself:accessing your bank account from an ATM
or on-line will use differentinterfaces but ultimately all use the same
service.

Here is an example of why its important: the
appropriatebusiness logicto apply to a service request will depend
on many factors:the means bywhich the request was delivered, the
request itself and theperson (orpersons) for whom the request was
made. This last aspect iscompletelyindependent of mode of requesting
and is purely business/applicationspecific.

Incidentally, the
above definition: "an agent that interacts with aservice in order to
achieve a goal" seems to be a reasonabledefinitionof a service
requester.

On Apr 7, 2005, at 7:23 AM, Gregory A. Kohring
wrote:

Matthew,

OK, here a fewer other choices which might
be deemed more"respectful"...

Service Consumer:

1)
End-user of a service.

2) An agent which, acting on behalf of its
owner, uses a service.

3) An entity which utilizes a
service

4) An entity which consumes the product or information
produced by aservice.

Note all of these definitions depend
upon the definition of theterm "service". Have we agreed on this
already? Perhaps we shouldstart there first...