Web Hizmeti vs WCF Hizmeti


Yanıtlar:


67

Bu cevap, artık mevcut olmayan bir makaleye dayanmaktadır:

Makalenin özeti:

"Temel olarak, WCF, çeşitli iletişim mekanizmaları kullanarak iletişim kurabilen uygulamalar oluşturmanıza olanak tanıyan bir hizmet katmanıdır. Bununla, Eşler Arası, Adlandırılmış Kanallar, Web Hizmetleri vb. Kullanarak iletişim kurabilirsiniz.

Bunları karşılaştıramazsınız çünkü WCF, birlikte çalışabilir uygulamalar oluşturmak için bir çerçevedir. İsterseniz, bunu bir SOA etkinleştirici olarak düşünebilirsiniz. Ne anlama geliyor?

WCF, ABC olarak bilinen bir şeye uygundur; burada A iletişim kurmak istediğiniz hizmetin adresidir, B bağlayıcıyı ve C sözleşmeyi temsil eder. Bu önemlidir çünkü kodu mutlaka değiştirmeden bağlamayı değiştirmek mümkündür. Sözleşme çok daha güçlüdür çünkü sözleşmenin uygulamadan ayrılmasını zorlar. Bu, sözleşmenin bir arayüzde tanımlandığı ve tüketicinin aynı sözleşme fikrini kullanarak bağlı olduğu somut bir uygulama olduğu anlamına gelir. Veri modeli soyutlanmıştır. "

... sonra ...

"Web Hizmeti yerine diğer iletişim teknolojileriyle (örn. Eşler Arası, Adlandırılmış Kanallar) iletişim kurmamız gerektiğinde WCF kullanmalıyız"


2
SOA yaklaşımına dayalı herhangi bir yeni proje için Geliştirici, web hizmetleri üzerinden WCF'yi seçmelidir. Çünkü gelecekteki kullanım için esneklik ve ölçeklenebilirlik sağlar. Tek bir istisna vardır: istemci wcf hizmetleriyle, yani Flash AS2 ile iletişimi desteklemiyorsa.
Lalit

WCF 1) Çok katmanlı bir mimaridir 2) Çeşitli ağ protokollerini kullanarak iletişim kurmak için Servis Odaklı Uygulama oluşturmak için tek bir birleşik platform (birlikte çalışabilir) veya çerçeve sağlar. 3) WCF, web hizmetleri veya ASMX hizmetlerine kıyasla daha iyi güvenlik ve güvenilirlik sağlar 4) Düz XML, Ajax ve REST Web Hizmeti Desteği 1) Basittir 2) Bir işlev yazın ve [WebMethod] özniteliğiyle bağlayın ve hizmet vermeye hazır
Arun Banik

Joe'nun yanıtladığı gibi -> Makale codeproject.com/Articles/139787/… adresinde
Bernhard

33

Gönderen WCF ve Web Hizmetleri arasında ki fark nedir?

WCF, Microsoft'un önceki tüm web hizmeti teknolojilerinin yerini almıştır. Ayrıca, geleneksel olarak "web hizmetleri" olarak kabul edilenden çok daha fazlasını yapar.

WCF "web hizmetleri", WCF aracılığıyla etkinleştirilen çok daha geniş bir uzaktan iletişim yelpazesinin parçasıdır. WCF'de bir şeyler yaparken geleneksel ASMX'e göre çok daha yüksek derecede esneklik ve taşınabilirlik elde edeceksiniz çünkü WCF, Microsoft tarafından sunulan tüm farklı dağıtılmış programlama altyapılarını özetlemek için sıfırdan tasarlanmıştır. WCF'deki bir uç nokta, TCP / ikili üzerinden olduğu gibi, SOAP / XML üzerinden de kolaylıkla iletişim kurabilir ve bu ortamı değiştirmek basitçe bir yapılandırma dosyası modudur. Teorik olarak, bu, iş ihtiyaçlarını, hedeflerini vb. Taşırken veya değiştirirken gereken yeni kod miktarını azaltır.

ASMX, WCF'den daha eskidir ve ASMX'in yapabildiği her şey WCF'yi (ve daha fazlasını) yapabilir. Temel olarak, WCF'nin Microsoft dünyasında iletişim kurmak için iki uygulamayı elde etmenin tüm farklı yollarını mantıksal olarak gruplandırmaya çalıştığını görebilirsiniz; ASMX bu pek çok yoldan sadece biriydi ve artık WCF yetenekler çatısı altında toplanıyor.

Web Hizmetlerine yalnızca HTTP üzerinden erişilebilir ve WCF'nin esnek olduğu durumsuz ortamda çalışır, çünkü hizmetleri farklı türden uygulamalarda barındırılabilir. WCF hizmetlerini barındırmaya yönelik yaygın senaryolar IIS, WAS, Kendi kendine barındırma, Yönetilen Windows Hizmeti'dir.

En büyük fark, Web Hizmetlerinin Kullanmasıdır XmlSerializer. Ancak WCF DataContractSerializer, performans açısından daha iyi olan kullanır XmlSerializer.


2
Rastgele not: DataContractSerializer ve XmlSerializer'ın büyük bir farkı, DCS'nin alan sıralaması gerektirmesidir - bu yüzden geçici olmayan serileştirme veya sözleşmeler için DCS kullanmıyorum! Böylece, müşteriler tarafından DCS'ye taşınırken (veya DCS'ye geçerken, ancak daha önce kullanılandan farklı bir sırada) sabit sıralamayı kullanmayan bir hizmeti kırmak mümkündür. Verilmiş, bu
Şemada

1
Ayrıca, kaynaklara atıfta bulunun / bağlantı verin ve alıntıları belirtin ve / veya orijinal bilgileri alın ve onunla yeni bir şeyler yazın. Çalmak kabalıktır. Bağlantıyı sizin için ekledim, ancak gereken yere atıfta bulunduğunuzdan emin olun! (Olumsuz oy verebilseydim, bu temelde olumsuz oy verirdim.)
user2246674

32

Web Hizmeti , SOAP'a dayanır ve verileri XML biçiminde döndürür. Yalnızca HTTP protokolünü destekler. Açık kaynak kodlu değildir ancak xml'yi anlayan herhangi bir istemci tarafından kullanılabilir. Yalnızca IIS'de barındırılabilir.

WCF ayrıca SOAP'a dayanır ve verileri XML biçiminde döndürür. Web hizmetinin (ASMX) evrimidir ve TCP, HTTP, HTTPS, Named Pipes, MSMQ gibi çeşitli protokolleri destekler. WCF ile ilgili temel sorun, sıkıcı ve kapsamlı yapılandırmasıdır. Açık kaynak kodlu değildir ancak xml'yi anlayan herhangi bir istemci tarafından kullanılabilir. Uygulamada veya IIS'de veya pencere hizmeti kullanılarak barındırılabilir.


WCF ayrıca JSON biçiminde ve SOAP / şemalar kullanmadan (günümüzde?) Http istek / yanıtlarını alabilir / gönderebilir.
Efrain

Ayrıntı noktası: SABUN, HTTPS'yi destekler. Kodlama aktarım katmanında gerçekleşir, bu nedenle istemci ona karşı bağımsızdır - müşteri XML isteklerinde bulunur ve XML yanıtları alır ve bunun düz-ol-http mi yoksa şifreli-https mi olduğunu ne bilir ne de umursar.
Jinlye

16

Temel ve birincil fark, ASP.NET web hizmetinin yalnızca HTTP üzerinden SOAP mesajlarını değiştirmek için tasarlanmıştır; WCF Hizmeti, herhangi bir aktarım protokolü (HTTP, TCP, MSMQ veya NamedPipes vb.) Üzerinden herhangi bir format (SOAP varsayılandır) kullanarak mesaj alışverişinde bulunabilir.


4

Web hizmeti ile WCF arasındaki fark nedir?

  1. Web hizmeti, verileri bir uygulamadan diğerine aktarırken yalnızca HTTP protokolünü kullanır.

    Ancak WCF, iletileri taşımak için ASP.NET Web hizmetlerinden daha fazla protokolü destekler. WCF, HTTP'nin yanı sıra İletim Kontrol Protokolü (TCP), adlandırılmış kanallar ve Microsoft Message Queuing (MSMQ) kullanarak ileti göndermeyi destekler.

  2. Web Hizmetinde bir hizmet geliştirmek için aşağıdaki kodu yazacağız

    [WebService]
    public class Service : System.Web.Services.WebService
    {
      [WebMethod]
      public string Test(string strMsg)
      {
        return strMsg;
      }
    }

    WCF'de bir hizmet geliştirmek için aşağıdaki kodu yazacağız

    [ServiceContract]
    public interface ITest
    {
      [OperationContract]
      string ShowMessage(string strMsg);
    }
    public class Service : ITest
    {
      public string ShowMessage(string strMsg)
      {
         return strMsg;
      }
    }
  3. Web Hizmeti mimari olarak daha sağlam değildir. Ancak WCF, mimari olarak daha sağlamdır ve en iyi uygulamaları destekler.

  4. Web Hizmetleri XmlSerializer'ı kullanır ancak WCF DataContractSerializer'ı kullanır. XmlSerializer ile karşılaştırıldığında performansta hangisi daha iyi?

  5. Dahili (güvenlik duvarının arkasında) hizmetten hizmete aramalar için, SOAP'tan çok daha hızlı olan net: tcp bağını kullanıyoruz.

    WCF, ASP.NET Web Hizmetlerinden% 25 —% 50 daha hızlı ve .NET Uzaktan Kumandadan yaklaşık% 25 daha hızlıdır.

Ne zaman birini diğerine tercih ederim?

  • WCF, diğer platformlarda geliştirilen ve diğer Teknolojileri kullanan diğer uygulamalar arasında iletişim kurmak için kullanılır.

    Örneğin, .net platformundan başka bir işletim sisteminde (Unix veya Linux gibi) çalışan başka bir uygulamaya veri aktarmam gerekiyorsa ve başka bir aktarım protokolü (WAS veya TCP gibi) kullanıyorsa, o zaman yalnızca veri aktarmak mümkündür WCF kullanarak.

  • Burada, bir uygulama arasında başka bir uygulamaya veri aktarılırken platform, uygulama protokolü konusunda herhangi bir kısıtlama yoktur.

  • Web servisine kıyasla güvenlik çok yüksektir


2

En büyük fark zaman aşımıdır, WCF Hizmeti yanıt olmadığında zaman aşımına uğrar, ancak web hizmeti bu özelliğe sahip değildir.

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.