6

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.

enter image description here

  • 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 May 12 '16 at 4:34
  • 2
    Where did you get this diagram from? – Robert Harvey May 12 '16 at 7:25
  • 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 May 12 '16 at 12:53
4

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 May 12 '16 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 May 12 '16 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 May 12 '16 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 May 12 '16 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 May 12 '16 at 13:47
0

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.