Neden cevaplıyorum:
Bu iki teknoloji arasındaki farkı anlamak için çok zaman aldım. "Bu yanıtı ararken merak ettiğim zamanlarda bu noktalara sahip olsaydım, gerekli teknolojimi seçmeye daha önce karar verdim" diye düşündüğüm tüm noktaları buraya koyacağım.
Bilgi kaynağı:
Microsoft® Visual Studio® 2015 Çıktı
ISBN-13: 978-0-672-33736-9 ISBN-10: 0-672-33736-3
Neden ASP.NET Web API ve WCF:
ASP.NET Web API ve WCF teknolojilerini karşılaştırmadan önce, aslında web hizmetleri oluşturmak için iki stil / standart olduğunu anlamak önemlidir: REST (Temsili Durum Transferi) ve SOAP / WSDL. SOAP / WSDL, web hizmetlerinin oluşturulduğu orijinal standarttı. Ancak, kullanımı zordu ve performansı düşüren hantal mesaj biçimlerine (XML gibi) sahipti. REST tabanlı hizmetler hızla alternatif oldu. Yazmak daha kolaydır, çünkü HTTP'nin temel yapılarından (GET, POST, PUT, DELETE) yararlanırlar ve genellikle daha küçük mesaj formatları (JSON gibi) kullanırlar. Sonuç olarak, REST tabanlı HTTP hizmetleri artık kesinlikle Web'i hedefleyen hizmetler yazmak için standarttır.
ASP.NET Web API'nin amacını tanımlayalım
ASP.NET Web API, Microsoft'un REST tabanlı HTTP web hizmetleri geliştirme teknolojisidir. (Uzun zaman önce Microsoft'un SOAP / WSDL tabanlı ASMX'in yerini aldı.) Web API, tüm tarayıcıların ve yerel aygıtların anladığı HTTP protokollerine dayalı sağlam hizmetler yazmayı kolaylaştırıyor. Bu, uygulamanızı destekleyecek hizmetler oluşturmanıza ve bunları diğer web uygulamalarından, tabletlerden, cep telefonlarından, PC'lerden ve oyun konsollarından aramanızı sağlar. Mevcut Web bağlantısından yararlanmak için bugün yazılan uygulamaların çoğu HTTP hizmetlerini bir şekilde kullanır.
Şimdi WCF'nin amacını tanımlayalım:
İnternet üzerinden iletişim kurmak her zaman en etkili yöntem değildir. Örneğin, hem istemci hem de hizmet aynı teknolojide (hatta aynı makinede) mevcutsa, iletişim için daha verimli bir yöntemle (TCP / IP gibi) genellikle müzakere edebilirler. Hizmet geliştiriciler kendilerini kaçınmaya çalıştıkları aynı seçimleri yaparken buldular. Artık verimli dahili hizmetler oluşturma ve İnternet üzerinden geniş erişime sahip olma arasında seçim yapmak zorunda kalacaklardı. Her ikisini de desteklemeleri gerekiyorsa, hizmetlerinin birden çok sürümünü veya hizmetlerine erişmek için en azından ayrı proxy'leri oluşturmak zorunda kalabilirler. Microsoft'un WCF ile çözdüğü sorun budur .
WCF ile sınırsız endişe duymadan hizmetinizi oluşturabilirsiniz. Ardından, WCF'nin arayan istemciye bağlı olarak hizmetinizi en verimli şekilde çalıştırma konusunda endişelenmesine izin verebilirsiniz. Bu görevi yönetmek için WCF uç noktalar kavramını kullanır. Hizmetinizin birden fazla uç noktası olabilir (tasarım zamanında veya dağıtımdan sonra yapılandırılmış). Her uç nokta, hizmetin arayan bir istemciyi nasıl destekleyebileceğini belirtir: uzaktan, Microsoft Message Queuing (MSMQ) ve daha fazlası aracılığıyla. WCF, servis işlevselliğinizi yaratmaya odaklanmanızı sağlar. Arayan müşterilerle en verimli şekilde nasıl konuşulacağı konusunda endişelenir. Bu şekilde, tek bir WCF hizmeti birçok farklı istemci türünü etkili bir şekilde destekleyebilir.
WCF örneği:
Örneği düşünün:
Müşteri verileri uygulamalar arasında paylaşılır. Her uygulama farklı bir platformda yazılabilir ve farklı bir konumda bulunabilir. Müşteri arayüzünü, paylaşılan müşteri verilerine ortak erişim sağlayan bir WCF hizmetine çıkarabilirsiniz. Bu, verileri merkezileştirir, çoğaltmayı azaltır, senkronizasyonu ortadan kaldırır ve yönetimi basitleştirir. Buna ek olarak, WCF'yi kullanarak, hizmet uç noktalarını arayan istemciye anlamlı olacak şekilde yapılandırabilirsiniz. Şekil, bir WCF hizmetindeki müşteri verilerine merkezi erişim ile önceki örneği göstermektedir.
Sonuç:
i) Web API'si ne zaman seçilir:
ASP.NET Web API kullanılarak oluşturulanlar gibi REST tabanlı HTTP hizmetlerinin web hizmetleri oluşturmak için standart haline geldiği inkar edilemez. Bu hizmetler, web geliştiricilerinin bina hizmetleri için kolay ve anlaşılır bir yaklaşım sunar. Web geliştiricileri HTTP GET ve POST'u anlar ve bu tür hizmetlere iyi uyum sağlar. Bu nedenle, kesinlikle HTTP'yi hedefleyen hizmetler yazıyorsanız , mantıklı seçim ASP.NET Web API'sidir.
ii) WCF ne zaman seçilir:
WCF teknolojisi, farklı protokollere ve mesaj formatlarına dayalı olarak birden fazla servis uç noktasını desteklemeniz gerektiğinde kullanışlıdır. Bununla birlikte, farklı makineden makineye configurations.If aracılığıyla hem Web üzerinden kullanılabilen sağlam hizmetler oluşturmak için Microsoft BizTalk kaldıraç WCF gibi ürünler, TCP / IP üzerinden iletişim kurduğu yerel bağlıyken bu uygulamayı yazma gereğini yapmak ağ ve ağ dışında olduğunda HTTP üzerinden çalışır, WCF cevabınızdır .
Uyarı alın:
Web geliştiricileri genellikle WCF'yi geliştirmesi daha zor ve karmaşık olarak görür. Bu nedenle, çok protokollü hizmetlere olan ihtiyacı öngörmezseniz, büyük olasılıkla ASP.NET Web API'sine bağlı kalabilirsiniz.