Recommended: I would suggest keeping projects as separate as possible. This allows more flexibility in how everything can be hosted if your application crashes and you need to split into different server / application pools, etc. In addition, separation of concerns is one of the principles of service-oriented architecture (SOA). This will force you to encode your service in such a way that it is "shared", which could facilitate reuse in the future. Forgive me if this is lower than you, but I have to say this: in the visual studio you can create an empty solution and add it to each of your individual projects so that you work in one copy of the visual studio.
Then in your IIS instance you will have something like this:
/ = root app /servicelayer/ = virtual application
But ... you have a goal: "The ability to run a thing using shared hosting (Gearhost) without multiple virtual IIS directories / applications." You cannot host individual asp.net applications in the default IIS directory without placing them as virtual applications. This means that you cannot simply paste the servicelayer application folder into the root folder of the application.
Due to this requirement, the only option you have is to add the service code to your asp.net mvc application. I would create a folder called "/ services /" that contains all your endpoints so that it spreads slightly. Then add the Ajax-enabled WCF service to this folder.
source share