I read a lot of questions about this concern, and some of them are
Presentation VS Application layer in DDD
Application layer vs domain layer?
So my question is if the top layer is REST API and there is no need for any UI, is REST api considered as a presentation layer or application layer?
Update
Since I received some comments how this question has nothing to do with DDD and that there is no presentation layer in DDD etc, not to confuse application layer in OSI etc.., I decided to add this .
It appears that there is also an distributed interfaces layer that would actually handle this scope.
So basically presentation layer is a part of DDD architecture, just not the heart of this architecture. Also web services in a form of .net web api (rest) would exist in this distributed interfaces layer.
-
In the links you provided it is already said that DDD is about the domain. I am not sure your question has much to do with DDD. Can you rephrase your question reflecting that.simoraman– simoraman05/12/2016 04:34:38Commented May 12, 2016 at 4:34
-
3Where did you get this diagram from?Robert Harvey– Robert Harvey05/12/2016 07:25:09Commented May 12, 2016 at 7:25
-
joaopauloseixas.com/howtodoit.net/?p=2718, based on blogs.msdn.microsoft.com/marblogging/2011/05/23/…Dario Granich– Dario Granich05/12/2016 09:05:47Commented May 12, 2016 at 9:05
-
You have two questions. 1. Could REST api be considered as a presentation layer in DDD? 2. If there is no need for any UI, is REST api considered as a presentation layer or application layer? But you have failed to supply reasons you need to know the answers to these questions. This is causing confusion.Price Jones– Price Jones05/12/2016 12:53:33Commented May 12, 2016 at 12:53
2 Answers 2
REST is a protocol and convention that sits on top of HTTP. It is neither the Application Layer nor the Presentation Layer. It isn't considered part of the OSI model at all.
HTTP is considered the Application layer.
Don't confuse the Application Layer in DDD with the Application Layer in the OSI Model; they are not the same thing. DDD does not appear to have a Presentation Layer in practice.
A "Layer of Abstraction" is just that; a layer of abstraction. It's a place for you to put code and to establish API protocols. Your abstraction may differ from mine. There's no "one ring to rule them all," nor is there "The One True Way."
-
My question was about rest api not just rest in general . I was referring to DDD when using onion architecture example infoq.com/news/2014/10/ddd-onion-architecture , not just domain layer.Dario Granich– Dario Granich05/12/2016 06:32:12Commented May 12, 2016 at 6:32
-
In the diagram you provided, REST is part of the Distributed Interfaces Layer. The infoq article you linked has neither an Application Layer nor a Presentation Layer. Are you sure you're reading these diagrams properly? What, specifically, do you want to know?Robert Harvey– Robert Harvey05/12/2016 07:20:41Commented May 12, 2016 at 7:20
-
Isn't this article based on jeffreypalermo.com/blog/the-onion-architecture-part-1 ? What about layers defined here dddsample.sourceforge.net/architecture.html ?Dario Granich– Dario Granich05/12/2016 09:00:24Commented May 12, 2016 at 9:00
-
culttt.com/2014/09/29/creating-domain-services is mentioning "The Application layer is how the outside world communicates with the model. This could be through HTTP requests, an API or through an automated messaging service."Dario Granich– Dario Granich05/12/2016 09:09:53Commented May 12, 2016 at 9:09
-
1@DarioGranich" What exactly are you trying to figure out? The diagram is as plain as day. In that architecture, the REST interfaces live in the "Distributed Interfaces Layer." It would seem that you're reading a bit too much into this. If you told us why you need to know, we could probably better assist you. What specific, real-world problem are you trying to solve?Robert Harvey– Robert Harvey05/12/2016 13:47:27Commented May 12, 2016 at 13:47
In the OSI model? your REST api is running in a user application that talks to the application layer (layer 7).
In REST, the primary role of your api is hypermedia data transfer, which is to say converting domain concepts to/from hypermedia representations. That's probably best described as an application concern, rather than a presentation concern.
Put another way, the message that you are sending to the client is a representation of application state. So I think you can make a pretty compelling argument that you are sending that representation from the "application" layer.