Services… are they the evolution of components? And… “stateless” vs “stateful” again.

In a previous post I mentioned Jim‘s thoughts on the transition from objects, to components, and now services. His post generated some interesting comments and an entry in Stefan‘s blog. Stefan wrote that

…a component has a contract not only with the outside world, but also with the component platform into which it is deployed…

which is very interesting indeed. But couldn’t we say that services have a similar property too? Couldn’t we suggest that the contract for message interactions a service publishes could be used by consumers to create component-proxies that are appropriate for their own component platform? Hence, services have all the properties of traditional components but can also be (virtually) hosted on any component platform. Me thinking aloud here 🙂

Also the discussion touched on the terminology used by Jim who suggested that “services are stateless”. Jim explained that services are stateless as far as their consumers are concerned and that there is no suggestion that they are not allowed to maintain state for their intra-workings. Jim and I agree on what “stateless service” means in architectural terms but, unfortunately, some take this to mean that services are like functions in a functional programming environment and are not allowed to maintain state. Of course, this is far from what we mean.

As a result, I have stopped using the term “stateless service”. Instead, in my talks I talk about “stateless” and “stateful interactions”. People seem to understand this better. Services are, of course, allowed to have state (e.g., Google… lots of state behind the service boundary). Each message is supposed to carry enough information for the receiving service to reason about the interaction.

Recent Posts

The Beginning of CVOYA

There’s a unique energy that comes with starting something new — a blend of excitement,…

4 weeks ago

Enhancements in Graph Model: Dynamic Entities & Full-Text Search

As I continued work on BrainExpanded and its MCP service, I came to realize that…

4 months ago

GraphModel: A .NET Abstraction for Graphs

Just over a month ago, I published "Playing with graphs and Neo4j". Back then, it…

5 months ago

Playing with graphs and neo4j

After my initial implementation of some BrainExpanded-related ideas on top of dgraph using its GraphQL…

6 months ago

A Graph Model DSL

Say hello to the Graph Model Domain Specific Language (GMDSL), created with the help of…

6 months ago

BrainExpanded – Web app and Data Sources

As I wrote in previous posts, the manual recording of memories for BrainExpanded is just…

7 months ago