title: How to implement the Application Layer in DDD and its Project Structure in Visual Studio
body: <p>I am into DDD for a couple of months now and most books emphasize the <code>Domain Layer</code> but not much about Application. They are just saying that <code>Application Layer</code> is the glue code between UI and Domain which <code>mainly is a procedural code</code>.</p>
  
  <p>By <code>"procedural code"</code> what I am thinking is its a <code>concrete implementation</code> and Application Layer should not provide <code>Interfaces</code>.</p>
  
  <p>One example I've read for Application Layer is Web Service (WebAPI).</p>
  
  <p>DOes it mean if I have ASP MVC application, it is considered as my Application Layer wtih the Presentation on the same project? And all application services will live inside the MVC project?</p>
  
  <p>And if I want to provide a Web API, I should create another implementation of application services in the same project as the Web API?</p>
  
  <p>How about the Commands? Where should I put them? As far as I know Commands are the USE CASE. But USE CAE of what? Domain or Application? If I changed something on my Application Layer implementation, should the Commands also change? or Commands are affected only when Domain requirements changes?</p>
  
  <p>If Commands are affected if Application Layer changes, then Commands and Application Service should live on the same project. If they will only be affected by DOmain changes, then they should live in another project to serve as Contract of the Domain and the Application Layer project will reference the Contract. and by that being said, if we have Web API and MVC project, they both have reference to the Contract(the commands project).</p>
  
  <p>Basically the answer I am looking for is what is the FOlder and Project structure of the Application Layer?</p>
  
  <p>What's inside it? and what the dependencies.</p>
  
  <p>What are the things that affects the Application Layer for modification.</p>
  
  <p>Cocrete example of Application Layer would be very much appreciated.</p>