Layanan Web vs Layanan WCF

Jawaban:

67

Jawaban ini didasarkan pada artikel yang sudah tidak ada lagi:

Ringkasan artikel:

"Pada dasarnya, WCF adalah lapisan layanan yang memungkinkan Anda membangun aplikasi yang dapat berkomunikasi menggunakan berbagai mekanisme komunikasi. Dengannya, Anda dapat berkomunikasi menggunakan Peer to Peer, Named Pipes, Layanan Web, dan sebagainya.

Anda tidak dapat membandingkannya karena WCF adalah kerangka kerja untuk membangun aplikasi yang dapat dioperasikan. Jika Anda suka, Anda dapat menganggapnya sebagai pengaktif SOA. Apa artinya ini?

Nah, WCF sesuai dengan sesuatu yang dikenal sebagai ABC, di mana A adalah alamat layanan yang ingin Anda hubungi, B adalah singkatan dari binding dan C adalah singkatan dari kontrak. Ini penting karena dimungkinkan untuk mengubah pengikatan tanpa perlu mengubah kode. Kontrak tersebut jauh lebih kuat karena memaksa pemisahan kontrak dari pelaksanaan. Artinya kontrak didefinisikan dalam sebuah antarmuka, dan terdapat implementasi konkret yang terikat oleh konsumen dengan menggunakan gagasan kontrak yang sama. Model data diabstraksi. "

... nanti ...

"harus menggunakan WCF saat kita perlu berkomunikasi dengan teknologi komunikasi lain (misalnya Peer to Peer, Named Pipes) daripada Layanan Web"

rbrayb.dll
sumber
2
Untuk setiap proyek baru berdasarkan pendekatan SOA, Pengembang harus memilih WCF melalui layanan web. Karena memberikan fleksibilitas dan skalibilitas untuk penggunaan di masa mendatang. Hanya ada satu pengecualian: jika klien tidak mendukung komunikasi dengan layanan wcf yaitu Flash AS2.
Lalit
WCF 1) Ini adalah arsitektur multi-layered 2) Menyediakan platform tunggal terpadu (interoperable) atau kerangka kerja untuk membangun Aplikasi Berorientasi Layanan untuk berkomunikasi menggunakan berbagai protokol jaringan. 3) WCF memberikan keamanan dan keandalan yang lebih baik dibandingkan dengan layanan web atau layanan ASMX 4) Dukungan untuk Layanan Web Plain XML, Ajax dan REST 1) Sederhana saja 2) Tulis fungsi dan kaitkan dengan atribut [WebMethod] dan itu adalah siap memberikan layanan
Arun Banik
Seperti yang dijawab dari Joe -> Artikel ini direplikasi di codeproject.com/Articles/139787/…
Bernhard
33

Dari Apa Perbedaan antara WCF dan Layanan Web?

WCF adalah pengganti semua teknologi layanan web sebelumnya dari Microsoft. Ia juga melakukan lebih dari apa yang secara tradisional dianggap sebagai "layanan web".

"Layanan web" WCF adalah bagian dari spektrum komunikasi jarak jauh yang jauh lebih luas yang diaktifkan melalui WCF. Anda akan mendapatkan tingkat fleksibilitas dan portabilitas yang jauh lebih tinggi dalam melakukan berbagai hal di WCF daripada melalui ASMX tradisional karena WCF dirancang, dari bawah ke atas, untuk meringkas semua infrastruktur pemrograman terdistribusi berbeda yang ditawarkan oleh Microsoft. Titik akhir di WCF dapat dikomunikasikan dengan mudah melalui SOAP / XML seperti halnya melalui TCP / biner dan untuk mengubah media ini hanyalah mod file konfigurasi. Secara teori, ini mengurangi jumlah kode baru yang diperlukan saat memindahkan atau mengubah kebutuhan bisnis, target, dll.

ASMX lebih tua dari WCF, dan apa pun yang dapat dilakukan ASMX dapat dilakukan oleh WCF (dan lainnya). Pada dasarnya Anda dapat melihat WCF sebagai mencoba secara logis mengelompokkan semua cara berbeda untuk membuat dua aplikasi berkomunikasi di dunia Microsoft; ASMX hanyalah salah satu dari banyak cara ini dan sekarang dikelompokkan di bawah payung kemampuan WCF.

Layanan Web hanya dapat diakses melalui HTTP & bekerja di lingkungan tanpa negara, di mana WCF fleksibel karena layanannya dapat dihosting di berbagai jenis aplikasi. Skenario umum untuk menghosting layanan WCF adalah IIS, WAS, Self-hosting, Managed Windows Service.

Perbedaan utama adalah Penggunaan Layanan Web XmlSerializer. Tetapi Penggunaan WCF DataContractSerializeryang lebih baik dalam kinerja dibandingkan dengan XmlSerializer.

Joe
sumber
2
Catatan acak: Perbedaan besar antara DataContractSerializer dan XmlSerializer adalah DCS memerlukan pengurutan lapangan - itulah sebabnya saya tidak menggunakan DCS untuk serialisasi atau kontrak non-transien! Jadi, dimungkinkan untuk merusak layanan yang digunakan oleh klien yang tidak menggunakan urutan tetap saat pindah ke DCS (atau pindah ke DCS tetapi dalam urutan yang berbeda dari yang digunakan sebelumnya). Memang, ini harus diekspresikan dalam Skema, tetapi ..
user2246674
1
Juga, kutip / tautkan sumber dan tunjukkan ekstrak dan / atau ambil informasi asli dan tulis sesuatu yang baru dengannya. Mencuri itu tidak sopan. Saya telah menambahkan tautan untuk Anda, tetapi pastikan untuk memberikan kredit jika sudah waktunya! (Saya akan memberikan suara negatif atas dasar ini, jika saya dapat memberikan suara negatif sama sekali.)
user2246674
32

Layanan Web didasarkan pada SOAP dan mengembalikan data dalam bentuk XML. Ini hanya mendukung protokol HTTP. Ini bukan open source tetapi dapat dikonsumsi oleh klien mana pun yang memahami xml. Ini hanya dapat dihosting di IIS.

WCF juga didasarkan pada SOAP dan mengembalikan data dalam bentuk XML. Ini adalah evolusi dari layanan web (ASMX) dan mendukung berbagai protokol seperti TCP, HTTP, HTTPS, Named Pipes, MSMQ. Masalah utama dengan WCF adalah, konfigurasinya yang membosankan dan ekstensif. Ini bukan open source tetapi dapat dikonsumsi oleh klien mana pun yang memahami xml. Ini dapat di-host dengan dalam aplikasi atau di IIS atau menggunakan layanan jendela.

CSK
sumber
WCF juga dapat menerima / mengirim permintaan / tanggapan http dalam format JSON, dan tanpa menggunakan SOAP / skema (sekarang?).
Efrain
Poin detail: SOAP mendukung HTTPS. Pengkodean terjadi pada lapisan transport, sehingga klien agnostik terhadapnya - klien membuat permintaan XML dan mendapatkan tanggapan XML, dan tidak tahu atau peduli apakah selama proses itu plain-ol-http atau encrypted-https.
Jinlye
16

Perbedaan dasar dan utama adalah, layanan web ASP.NET dirancang untuk bertukar pesan SOAP melalui HTTP hanya sementara Layanan WCF dapat bertukar pesan menggunakan format apa pun (SOAP adalah default) melalui protokol transportasi apa pun yaitu HTTP, TCP, MSMQ atau NamedPipes dll.

Imran Ghani
sumber
4

Apa perbedaan antara layanan web dan WCF?

  1. Layanan web hanya menggunakan protokol HTTP saat mentransfer data dari satu aplikasi ke aplikasi lain.

    Tetapi WCF mendukung lebih banyak protokol untuk mengangkut pesan daripada layanan Web ASP.NET. WCF mendukung pengiriman pesan dengan menggunakan HTTP, serta Transmission Control Protocol (TCP), pipa bernama, dan Microsoft Message Queuing (MSMQ).

  2. Untuk mengembangkan layanan di Web Service, kami akan menulis kode berikut

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

    Untuk mengembangkan layanan di WCF, kami akan menulis kode berikut

    [ServiceContract]
    public interface ITest
    {
      [OperationContract]
      string ShowMessage(string strMsg);
    }
    public class Service : ITest
    {
      public string ShowMessage(string strMsg)
      {
         return strMsg;
      }
    }
    
  3. Layanan Web secara arsitektural tidak lebih kuat. Namun WCF secara arsitektural lebih kuat dan mempromosikan praktik terbaik.

  4. Layanan Web menggunakan XmlSerializer tetapi WCF menggunakan DataContractSerializer. Mana yang lebih baik dalam kinerja dibandingkan dengan XmlSerializer?

  5. Untuk panggilan layanan-ke-layanan internal (di belakang firewall) kami menggunakan net: tcp binding, yang jauh lebih cepat daripada SOAP.

    WCF 25% -50% lebih cepat dari ASP.NET Web Services, dan kira-kira 25% lebih cepat dari .NET Remoting.

Kapan saya akan memilih salah satu dari yang lain?

  • WCF digunakan untuk berkomunikasi antara aplikasi lain yang telah dikembangkan di platform lain dan menggunakan Teknologi lain.

    Misalnya, jika saya harus mentransfer data dari platform .net ke aplikasi lain yang berjalan di OS lain (seperti Unix atau Linux) dan mereka menggunakan protokol transfer lain (seperti WAS, atau TCP) maka hanya mungkin untuk mentransfer data menggunakan WCF.

  • Disini tidak ada batasan platform, protokol transfer aplikasi sambil mentransfer data antara satu aplikasi ke aplikasi lain.

  • Keamanan sangat tinggi dibandingkan dengan layanan web

Ali Azam
sumber
2

Perbedaan utamanya adalah waktu habis, Layanan WCF telah habis waktu saat tidak ada tanggapan, tetapi layanan web tidak memiliki properti ini.

pengguna5898334
sumber