The first method is the most sensible.
From your details, I assume the DataWebServer
is "publicly" accessible; at least as much as your WebApp
would be. There is little value in having WebApp
data requests go to a different server, DataWebServer
, as this introduces an unnecessary delay while one web server calls another. Instead of re-using the HTTP services from DataWebServer
, add the WebApp
functionality to the DataWebServer
and re-use the LinqToEntities context.
If you desperately want the third option, you should consider creating your WebApp
in a way that the JavaScript in the app calls the DataWebServer
for data from the client's browser. Importantly, this approach avoids WebApp
web server calling to DataWebServer
for data.