Alw1n
asked on
How can ASP.NET MVC4 use Web Services
Hi, I am fairly new to asp mvc, I have been through some walk-thoughs and understand the overall principal, what I am struggling to grasp is where web services fit in.
So lets say I want to build a web app that will run on browsers and mobiles (via a browser), this is all doable with straight mvc and some clever views that will serve pages properly for the target device - all fine.
Now if somewhere down the line I want to write dedicated mobile apps, my understanding is that these apps need to communicate with web services but now my whole backend is mvc controllers - so by my thinking I should really be creating an mvc patterned app that uses web services to drive its data and logic.
1. Am I reasoning this out correctly or am I mixing technologies that are unrelated?
2. What is the best way to approach an a dev project that will target a wide range of devices?
So lets say I want to build a web app that will run on browsers and mobiles (via a browser), this is all doable with straight mvc and some clever views that will serve pages properly for the target device - all fine.
Now if somewhere down the line I want to write dedicated mobile apps, my understanding is that these apps need to communicate with web services but now my whole backend is mvc controllers - so by my thinking I should really be creating an mvc patterned app that uses web services to drive its data and logic.
1. Am I reasoning this out correctly or am I mixing technologies that are unrelated?
2. What is the best way to approach an a dev project that will target a wide range of devices?
P.S.
In case it wasn't clear, RESTful services are easily consumed in a desktop environment as well.
In case it wasn't clear, RESTful services are easily consumed in a desktop environment as well.
ASKER
Your comment 'You have models and controllers, but no views' is really puzzling me. I have briefly looked into Web APi and IIUC it is just another way of creating a web service that provides xml/json data for any endpoint that may need it ie. I see it more closely related to the 'controller' in mvc, not the 'view'.
The two options I see are:
1. Have bunch of WebAPI's as a backend which can provide data to mobile apps and to web clients directly
2. Have an mvc architecture that is web only
but I still can't see how web api can be used in conjunction with mvc to serve mobile and web apps without duplicating controller logic in the web service
The two options I see are:
1. Have bunch of WebAPI's as a backend which can provide data to mobile apps and to web clients directly
2. Have an mvc architecture that is web only
but I still can't see how web api can be used in conjunction with mvc to serve mobile and web apps without duplicating controller logic in the web service
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I'll put together a sample project later this evening (EST).
ASKER
I sort-of get what you are saying, a sample project will be great to visualize, much appreciated.
As a side-line, I have seen very little on the web regarding this, is it too new or is it an uncommon problem, or am I just approaching this the wrong way?
As a side-line, I have seen very little on the web regarding this, is it too new or is it an uncommon problem, or am I just approaching this the wrong way?
ASKER
I loaded up my first Web API project to see what it's all about and was surprised to find a 'Views' folder and a regular 'mvc' contoller along with the ApiController.
To me this implies that a new Web Api project already has all the bits to provide an MVC web app + any web services associated with that app.
Now if I design my app with the API controller talking to EF and returning json, any mobile app could use those services + if my mvc controllers get their data from the api controllers I am home dry with an MVC styled web app that is ready for mobile apps to plug into.
Comments?
To me this implies that a new Web Api project already has all the bits to provide an MVC web app + any web services associated with that app.
Now if I design my app with the API controller talking to EF and returning json, any mobile app could use those services + if my mvc controllers get their data from the api controllers I am home dry with an MVC styled web app that is ready for mobile apps to plug into.
Comments?
ASKER
I didn't get the sample app from kaufmed but it looks like what I am saying above is viable so I will close thid quesiotn
You might consider looking into the Web API that is new in .NET 4.5 (and installed separately in 4.0). You can create a RESTful architecture that is patterned on the MVC architecture. You have models and controllers, but no views. There is built-in content negotiation that allows your clients to specify what format they would like the result returned in (e.g. JSON, XML) by simply including a Accept header in the request with the appropriate identifier.