2013-03-17 24 views
6

WebApi & OData'yı bir test yatağı uygulamasına entegre etmeye başladım. Basit tutup bir alan adı olan Müşteri ile bağlantıya geçelim. Açıkçası bir MVC kontrol cihazına sahip olacağım. Arama, kendi görünüm modelini (bir Lucene indeksine dayanarak) alır, böylece ayrı bir kontrolör olacak, şu anda ODataController. Ancak, görünüm/düzenleme sayfalarının kendi görünüm modellerine sahip olacağından, kendi denetleyicileri olurlar. Bu overkill gibi hissetmeye başlar.WebApi ve Denetleyici overkill

Bu işi yapmak için iyi bir tasarım bulmaya çalışın ve yine de varlığı temsil eden URL fikriyle çalışın. URL'deki varlık Müşteri ise ve bir şekilde URL paramızlarına dayalı olarak farklı temsiller sağlıyor muyum? Veya Müşteri/Müşteri Arama/Müşteri Düzenlemesi farklı varlıklar olmalıdır (hangisi doğru gelmiyorsa)?

+0

Zengin, Şu anda OData ve Web API kullanmak istediğimiz bir proje üzerinde çalışıyorum, ancak esnek yapmak istiyorum (EF çağrıları gibi). Biz bu aşamada değiliz (doğrudan db'den hizmetlere geçmeyi amaçlıyoruz). Eğrinin önünde düşünüyorsun. Bu yüzden sana yardım edecek kimse olduğunu düşünmüyorum. OData artık yeni değil ama pek çok dükkanın bunu kullandığını sanmıyorum. Web API'lı evlilik sezgisel olarak bana açık görünüyordu, ben de bir araştırma yaptım. işte bu türden bir çözümü uygulayan videolarımız MS http://www.asp.net/web-api/overview/odata-support-in-aspnet-web-api –

cevap

0

Bu WebAPI uygulamasının, inşa edeceğiniz ASP.NET MVC çözümünden ayrı bir çözüm olacağını varsayıyorum. Özetle, WebAPI iş/etki alanı katmanı olacak ve MVC sunum katmanı olacaktır.

WebAPI çözümünü konuştuğunuzda, yukarıda belirttiğiniz Müşteri örneği için yalnızca tek bir ApiController gerekir. Görünüm/düzenleme isteğinin kendi görünüm modelleri olabilir ... veya olmayabilir. Görünüm modelini nasıl üreteceğinize bağlı olarak, müşteriler için tek bir görünüm modeline sahip olabilirsiniz veya temel görünüm modelinin aramaya ilişkin verileri tuttuğu ve alttan görünen görünüm modelinin ayrıntıları dışa aktardığı bir müşteri görünümü hiyerarşisi geliştirebilirsiniz. .

GET - /Customer/     retrieve multiple customers 
            (supplying OData parameters in query string) 
GET - /Customer/{id}    retrieve a single customer 
PUT - /Customer/{id}    edit customer 

Ne ihtiyacınız olacak gibi görünüyor iki güzergah, Müşteri için bir ApiController ve deyimiyle üç istek yöntemleri geçerli: gibi

Kişisel yönlendirme istekleri görünebilir. Ben işlevsellik bir varlığa bağlı olduğu için OData için ayrı bir ApiController önermiyorum.

+0

Bunu düşündükten sonra kesinlikle ODataController kullanarak değil, özellikle sadece Gets yapılacak ve kontrol etmek için beni sadece bir varlık türü için çalışan kilitler. Bu yönlendirmenin bir varyasyonu kullanıyorum. WebApi tabanını kullanarak "/ Müşteri" Arama modeli ve Modeli düzenle için sorgulanabilir işlevler ve/veya Model düzenleme "/ Müşteri/Görünüm/{id}" + "/ Müşteri/Düzenleme/{id}" – Rich

+0

Belki de yaklaşımınızı anlamıyorum . HTTP fiilleri yerine WebAPI tarafında eylemleri kullanacaksınız? –

+0

Muhtemelen her ikisine de ihtiyaç var. Sorun şu ki, sadece bir görünüm için model ve bir düzenleme için model tanım olarak farklı olacak. Örneğin, bir düzenleme modeli, müşterinin sahip olabileceği olası Rollerin bir listesine ihtiyaç duyabilir. Bakış modeli açıkçası buna sahip olmayacak. Ancak düzenleme modelinin hem GET hem de PUT/POST'a ihtiyacı olacaktır. – Rich