top | item 4825426

Client-Server Domain Separation

22 points| aliostad | 13 years ago |byterot.blogspot.com

13 comments

order
[+] csense|13 years ago|reply
As of this writing, this article is only a couple spots away from the front page. It's clearly not front page material, though.

Separating a large, complicated task into multiple orthogonal pieces, and assigning each of these pieces to its own component, has been a fundamental part of software engineering for many decades.

Separation of concerns is what OO does. Separation of concerns is what UNIX does. Separation of concerns is what TCP/IP does. Separation of concerns is why global variables are considered "bad." Separation of concerns is not a new idea.

This jargon-filled, somewhat poorly worded article is merely repeating a fundamental principle that should be obvious to anyone who's ever written any program larger than a couple hundred lines.

What is meant by "[the] client is free to have full coherence of server's public domain including all its public API, domain objects and schemata"?

"CSDS regards hypermedia an important aspect of REST; it is a semantic web of interconnected resources. Client will have full coherence of the axes of such relationships and can effectively use to navigate the semantic web - since it is part of the public domain. But for it to become the engine of the application is server dominance." These sentences are a long string of big words, but I'm not sure that there's actually anything meaningful in them.

Reading this article makes me really wish I had enough karma to downvote.

[+] aliostad|13 years ago|reply
I am really happy if you think all of this is common sense. In fact a lot of software best practices are common sense but they do not necessarily consistent with each other. Even in life, "Always help others" and "Set your goals and run for them" are common sense but they will make a different person out of you. There comes a time when you are at a fork and need to make a decision and then it is down to which one is really what you believe in.

Decision to separate domains of client and server is a big one and has its implications. CSDS is common sense as is HATEOAS but they are not consistent. ROCA is also common sense but does not agree with CSDS.

[+] PaulHoule|13 years ago|reply
mediocre systems are encapsulated; great systems are codesigned.
[+] DenisM|13 years ago|reply
On the other hands, mediocre systems often times win in the market due to their greater predictability. Working with isolated system is iterative, if inefficient, but working with integrated system requires deep insight which is not always available.
[+] secoif|13 years ago|reply
Co-design is unrelated to encapsulation.
[+] lucian303|13 years ago|reply
Please explain as the sentence makes no sense. The two things have nothing to do with each other.
[+] ivix|13 years ago|reply
Surely this is the only sane way to design a REST API? Of course taken to extremes, things can get silly.

As I see it, the point of encapsulation is that you don't know what your system might be asked to do next. Keeping things reasonably generic allows you to respond without a major redesign being required.

[+] hizanberg|13 years ago|reply
Keeping the client and server separate is a new thing? Isn't that what most of the world is doing already?

Since the purpose of a service is to provide a service, why would you be limiting it to specific clients in the first place?