2010-06-16 16 views
5

WCF'yi RESTful bir hizmet üzerinden kimlik doğrulama vb. Ekleme açısından nasıl özelleştireceğimizi öğrenmek için uzun zaman harcadım; Bazı özel hizmet ana bilgisayarları oluşturdum, daha sonra hizmet örneğini vb. Oluşturmak için bir IOC kapsayıcı kullanabilme özelliğini ekledim.MVC2 veya WCF?

Şu an kullandığımız iPhone/iPad uygulamaları ve diğer bazı gadgety türü şeyler (teknik terim!) Var. Bunlar (i-platformu üzerindeki XML, tarayıcı tabanlı JSON) ve performanstan ve yeni operasyonlar ekleyebileceğimiz kolaylıktan çok memnunuz.

DataContract serileştiricilerinin tüm özelliklerini öğrendim (ve şimdi onları WCF dışındaki nesneleri okumak/yazmak için yalıtılmış durumlarda kullanın) ve o dik öğrenme eğrisinden sonra, ama şimdi onlara sahip olduğumuzdan çok mutluyum.

Artık MVC kullanma şansını yakaladığım bir dizi yeni Web projemize sahibiz ve bununla uygun bir şekilde etkilendik; Özellikle model bağlama, gerçekten eşek vuruşunu yapıyor.

Şu anda bu web projeleri için benzer RESTful apis'e bakıyorum (hepsi benzer siteler olacak, ancak özel ihtiyaçlara bağlı olarak farklı markalaşma ve iş mantığında küçük değişiklikler olacak). Aslında, WCF'deki tüm bu çalışmaların bizi iyi bir şekilde yerine getirmesini bekledim - ancak MVC'nin RESTful XML/JSON için kendi geliştirme yolu var ve şimdi ikisi arasında yakalandım.

Bir MVC sitesi yazıyorsanız, REST API'sini uygulamak için WCF'yi hiç kullanır mıydınız?

WCF kullanmak için bir argüman atacağım - düzgün yazılmış, bir Web Sunucusu gerekmeden windows hizmeti olarak çalışmak için izole edilebilir. Ancak, bu umutsuz bir durum gibi görünüyor!

Güncelleme

ben şimdi MVC 2 & 3 kullanılarak 3 ayrı büyük DİNLENME hizmetlerini uyguladığınızı demeliyim ve çalışmak için bir keyif veriyor. WCF'nin XML için DataContractSerializer'ı etrafında sarmak için model bağlayıcılar yazdım ve elbette JSON desteği de gayet iyi. Şimdi geri gitmeyeceğim.

cevap

5

WCF'yi hiç kullanmadım, ancak şu anda bir REST API'si uygulamak için MVC2 kullanıyorum.

Çoğunlukla çok uygun, ancak bazı boşluklar var ve bu biraz bir öğrenme eğrisine dahil. Daha iyi XML desteği için MVCContrib'u kullanmam gerekiyor. Bir eylem yöntemine JSON nesnesini göndermeyi desteklemek için MVC futures'ı kullandım (bkz: http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx). Bunun için kaynak almam ve değiştirmem gerekiyordu, böylece XML'i destekleyebildim.

.NET MVC'nin üzerinde bulunan bazı REST çerçeveleri var, ancak bunları denemek için bir şansım olmadı.

WCF'ye aşina iseniz ve son zamanlarda iyi çalıştıysanız, o zaman bildiğiniz şeyle uğraşmak isterim.

+1

Evet, MVC'lerdeki boşluklar beni biraz rahatsız ediyor; WCF'de hiçbir gariplik bulamadım, sadece garip davranışlar. Ancak, API'yi aynı durum ve nesne modeli ile sitenin MVC kısmı olarak entegre edebilmek gerçek bir bonus olacaktır! Linkler için teşekkürler. –

+0

Bağlantılardan dolayı cevap verin. Ve sanırım sen ve Darrel'in her ikisi de MVC'yi önerebiliyorsunuz - ve böylece yapacağım. İkinize de teşekkürler! –

3

Uzun bir süre REST yapmak için WCF kullandım ve tavsiyem MVC kullanmaktı. Sadece XML ve Json ile uğraşmak istiyorsanız ve URI alanınız nispeten basitse, muhtemelen WCF ile başarabilirsiniz. Ancak, temel şeylerden çıktıktan sonra, WCF'nin varsayılan davranışı üzerinde çalışmasına çok aşina olmanız gerekir.

+0

REST deneyiminden en iyi şekilde yararlanmak için WCF hakkında iyi bir bilginin gerekli olduğunu kesinlikle kabul ediyorum. Özellikle sevmediğim bir şey (MVC ile karşılaşıncaya kadar sevdim) statik yönlendirme - özellik olarak URI şablon dizeleri ile: Rota Tablosu sadece çok daha iyi bir çözüm. –

+0

@Andras Bildiğim kadarıyla ikisi de aynı yönlendirme mekanizmasını kapakların altında kullanıyorlar. Tek fark, tabloyu doldurma şeklidir. Zamanla, farklı davranışlara neden olan bazı sürüm farkları olmuştur, ancak her ikisi de System.Web.Routing'i kullanır. –

+0

evet, üzgünüm, haklısın; ve benim düşünceme göre MVC doğru bir şekilde - ama sonra iki sistem farklı sorunları çözmek için tasarlandı. Ben WCF (başlangıçta olsa da) büyük bir hayranıyım, ve bence bu amaç için ona veda etme konusunda biraz gerginim! Ne kadar üzücü! –