ASP.NET MVC 4 Uygulamasını çağırmak Uzak WebAPİ
Geçmişte MVC uygulamaları ASP.NET bir çift yarattık, ama asla WebAPİs önce kullandım. Normal bir MVC denetleyicisi ile WebAPİ ile yerine basit CRUD şeyler yok basit MVC 4 uygulaması oluşturmak nasıl merak ediyorum. Hüner WebAPİ ayrı bir çözüm (ve, aslında, çok iyi etki/farklı bir sunucuda olabilir) olmalıdır.
Nasıl yapabilirim? Neyi kaçırıyorum? Sadece yolları WebAPİ bu server kurma işi mi? WebAPİs MVC kullanarak uygulama tüketmek gösteren bulduğum tüm örnekler, WebAPİ "aynı sunucuda MVC uygulama için, en azından." pişmiş olduğunu varsaymak gibi görünüyor
Oh, ve netleştirmek için, Ajax çağrıları jQuery kullanarak bahsetmiyorum... MVC uygulama denetleyicisi WebAPİ/veri koymak için kullanması gereken yani.
CEVAP
Yeni HttpClient HTTP API tüketmek için kullanmalısınız. Ayrıca aramalarınızı tamamen uyumsuz yapmak için tavsiye olabilir. ASP.NET MVC denetleyicisi eylemleri Görev tabanlı zaman Uyumsuz Programlama modeli destek olarak, çok güçlü ve çok kolay.
Burada aşırı basitleştirilmiş bir örnek. Aşağıdaki kod örneği, bir isteğin Yardımcı Sınıf
public class CarRESTService {
readonly string uri = "http://localhost:2236/api/cars";
public async Task<List<Car>> GetCarsAsync() {
using (HttpClient httpClient = new HttpClient()) {
return JsonConvert.DeserializeObject<List<Car>>(
await httpClient.GetStringAsync(uri)
);
}
}
}
O zaman, benim MVC denetleyicisi zaman uyumsuz olarak alttaki o tüketebilirim:
public class HomeController : Controller {
private CarRESTService service = new CarRESTService();
public async Task<ActionResult> Index() {
return View("index",
await service.GetCarsAsync()
);
}
}
ASP.NET MVC ile zaman uyumsuz G/Ç işlemleri etkilerini görmek için aşağıdaki yazıya bir göz olabilir:
My Take on Task-based Asynchronous Programming in C# 5.0 and ASP.NET MVC Web Applications
nasıl yerel makineden uzak db mysqldum...
Çek/birden çok uzak yerlerden itin...
ASP.NET WebApi vs MVC ?...
Nasıl bir yerel birinden uzak Git depo...
Çatışmaları çözümlemek Gıt uzak çekere...