WCF ve ASP .Net Web API'si


93

Her teknolojiyi kullanmanın artıları ve eksileri nelerdir?

WCF Web Api artık Asp.net ile birleştirildi Asp.net web api artık kendi kendine barındırmayı destekliyor.

Aynı işlem için birden çok protokol şemasını açığa çıkarmak istersem, yine de WCF'ye eğilirim veya Mvc uç noktası bunu da yapabilir mi?

Yeni Asp.Net web api de Wsdl'yi açığa çıkarıyor mu? Değilse, müşteri hangi işlemin kendileri için uygun olduğunu nasıl anlayacaktır?

Muhtemelen Mvc'nin en iyi özelliği model ciltleyicidir. WCF eşdeğeri ne kadar sağlam?

Öyleyse birisi bana Asp.net web API'sinin masaya ne gibi avantajlar getirdiğini söyleyebilir mi? WCF, ezici bir çoğunlukla daha güçlü / ölçeklenebilir seçenek imo gibi görünüyor. Mvc Web Api'nin WCF modeline göre sahip olduğu tek şey, muhtemelen geliştirme kolaylığıdır, ancak bu, yolun sonunda ciddi bir tasarım sınırlaması haline gelirse çömelme anlamına gelir.


15
Bu sorunun başlığını biraz yanıltıcı buluyorum. Başlık "MVC 4 ve Wcf Web Api" dir, ancak soru WCF ve ASP .Net Web API ile daha çok ilgileniyor gibi görünüyor. Başlıktan bakıldığında, karşılaştırılanın standart MVC 4 çerçevesi (Denetleyiciler, Modeller, Görünümler) ile ASP .Net Web API çerçevesi olduğunu düşündüm. Bu başlığı yanıltıcı bulan başka kimse var mı?
BruceHill

Yanıtlar:


72

Öncelikle konuyla ilgili yazımı okumanızı öneririm: http://blogs.microsoft.co.il/blogs/idof/archive/2012/03/05/wcf-or-asp-net-web-apis-my- konu üzerinde iki sent.aspx

WSDL sorunuzla ilgili olarak - WebApi SOAP kullanmadığı için WSDL gerektirmez ve bir WSDL dışa aktarmaz. Olası etkinlik URL'lerinin bir listesiyle kaynakları döndürmek için Hypermedia'yı kullanabilirsiniz (bunu kendi kendini tanımlayan bir kaynak olarak düşünün)


6
Bu çok çok iyi bir yazı. Şimdiye kadar gördüğüm en iyisi. Ama şimdi kafam her zamankinden daha fazla karıştı. WebApi çok şey katıyor, ancak diğer uç noktaların açığa çıkarılamaması çok kısıtlayıcı görünüyor. Sabun kullanabilen bir müşteriniz varsa, sabun onlar için tüm içeriği oluşturabilecekken, artık eylemi oluşturmaya ve sonucu elle ayrıştırmaya zorlanacaktır. Ayrıca, onları güvenilir oturum ve Asit işlemi gibi daha gelişmiş Sabun özelliğinden de kilitleyeceksiniz ...
Alwyn

2
@Alwyn - Bahsettiğiniz tüm gerçeklerin doğru olduğunu ve bu nedenle sizi şaşırtmamalı, bunun yerine bir karar vermenize yardımcı olacağını düşünüyorum - Web API'nin kendi avantajları vardır, ancak hizmetinizin diğer protokoller de dahil olmak üzere birden fazla uç noktadan açığa çıkarılması gerekiyorsa, veya istemci otomatik oluşturma özelliğine veya gelişmiş özelliklere güçlü bir ihtiyacınız var - bunlar, Web API yerine
WCF'yi

@BornToCode: İstemci kodu WebAPI ile otomatik olarak oluşturulabilir. WebAPI kodunu kullanarak havalı bir json dosyası oluşturabilirsiniz. Bu json dosyası daha sonra çok sayıda hedef dilde müşteri kodu üretmek için swagger-codegen gibi bir kod oluşturucu tarafından kullanılabilir.
istemeden boş bırakıldı

@unintentionallyleftblank - IMHO İstemci kodunu WCF aracılığıyla otomatik olarak oluşturmak Web API'sinden daha "kullanıcı dostudur".
BornToCode

15

Seçim, ne yapmak istediğimize bağlıdır.

  1. ASP.NET Web API, yalnızca HTTP üzerinden SOAP tabanlı olmayan hizmetler oluşturmaya yönelik bir çerçevedir - bu nedenle bu çerçeveyi kullanan daha fazla aktarım protokolü yoktur.
  2. WCF / Windows Communication Foundation, SOAP tabanlı mesaj alışverişi için bir çerçevedir - burada birçok taşıma protokolü kullanıyoruz: HTTP, TCP, Adlandırılmış kanallar, MSMQ, vb.

Veri miktarı konusunda hangisinin daha iyi performans gösterdiğinden emin değilim, belki düşük protokoller kullanabildiğimiz için WCF olabilir. Herhangi bir yorum takdir edilmektedir.


2
Alınma ama HTTP sadece bir uygulama katmanıdır protokolüdür. Hangi taşıma katmanı protokollerinin kullanılabileceği konusunda doğal bir kısıtlaması yoktur .
smwikipedia

8

WCF Web API, öncelikle REST uygulamalarına odaklanır. Bir REST uygulaması kuruyorsanız, standart WCF bitleri arka tarafta biraz ağrılıdır. RESTful hizmetlerini kuruyorsanız, WCF Web API'sini çok daha hoş bir deneyim bulacaksınız. SOAP hizmetlerini kuruyorsanız, WCF Web API sizin en iyi arkadaşınız değildir ve hizmetleriniz için WCF kullanmanız daha iyidir.


2
Evet, konfigürasyonlar bir acıdır, ancak bir kerelik kurulum maliyeti. Bunu yaptıktan sonra, davranışı / uç noktayı hemen hemen kopyalayıp başka bir hizmete yapıştırabilirsiniz. Çoğu zaman yeni işlemleri WebGet ile etiketleyerek elde edersiniz. Öte yandan, Soap + Wsdl kullanmak isteyen bir müşteri alırsanız, kod + dağıtma + QA + geri kalanının aksine bu yalnızca bir yapılandırma değişikliğidir. Peki, Mvc Web Api nasıl daha iyi?
Alwyn

1
WCF konusunda zaten rahatsanız, bu yola devam edebilirsiniz. Bahsettiğim şeye ek olarak, WCF Web API'sinde REST ile ilgili bazı dahili iyileştirmeler var (önümde liste yok), ancak ya çalışabilir ve tonunuz varsa yeniden düzenleme yapmak için haftalar harcamam. özellikle çalışma hizmetleri. çünkü düşüncede biraz paradigma değişimi var. Bununla birlikte, gelecekteki çalışmalar için WCF Web API'sini düşünürdüm. Ancak bir süredir WCF Web API kullanıyorum, bu yüzden önyargılı olabilirim.
Gregory A Beamer

0

İntranet / B2B siteleri için WCF kullanın n B2C / C2C / internet siteleri için Web API ... SABUN / XML hala işletme içi iletişim için standarttır n kaybolmayacak !!!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.