Memilih teknologi yang tepat untuk membangun lapisan layanan di .NET

Saat mendesain lapisan layanan di aplikasi Anda, pilihan teknologi yang akan digunakan di lapisan layanan bergantung pada banyak faktor. Pada artikel ini, saya akan menyajikan diskusi tentang kapan dan bagaimana Anda dapat memutuskan untuk memilih teknologi yang tepat untuk mengimplementasikan lapisan layanan saat mendesain aplikasi di .Net.

Dua pesaing utama yang Anda miliki saat mendesain lapisan layanan di .Net adalah WCF dan Web API. WCF adalah platform pengembangan untuk SOA - ia menyediakan banyak fitur dan mendukung banyak protokol transport yang berbeda. Sementara WCF adalah kerangka kerja terpadu untuk membangun aplikasi berorientasi layanan, API Web adalah alternatif ringan untuk membangun layanan RESTful yang dapat digunakan oleh banyak klien yang berbeda. Layanan tenang menggunakan HTTP dasar dan sederhana dengan muatan yang jauh lebih sedikit dibandingkan dengan layanan SOAP. Anda dapat menggunakan WebHttpBinding di WCF untuk membangun layanan RESTful non-SOAP melalui HTTP. WCF jauh lebih serbaguna dalam arti dapat mendukung banyak protokol transport - HTTP, TCP, dll. Anda dapat memanfaatkan WCF untuk membangun layanan yang aman, andal, dan transaksional yang dapat mendukung pengiriman pesan, komunikasi dupleks, dan saluran transportasi cepat seperti, TCP ,Pipa Bernama atau UDP.

Jika Anda perlu membangun layanan ringan dan berorientasi sumber daya melalui HTTP yang dapat memanfaatkan fitur lengkap protokol HTTP, menggunakan versi, kontrol cache untuk browser, dan konkurensi menggunakan Etags, Web API adalah pilihan yang baik. Anda harus memilih API Web daripada WCF di lapisan layanan Anda ketika Anda ingin mengekspos layanan Anda ke berbagai klien yaitu, browser Web, ponsel, tablet, dll. API Web ringan dan cocok untuk perangkat yang terbatas bandwidth seperti ponsel pintar. Salah satu kendala utama yang saya hadapi saat menggunakan WCF adalah konfigurasinya yang ekstensif - API Web jauh lebih sederhana dan mudah digunakan. Saya akui bahwa WCF jauh lebih serbaguna dibandingkan dengan Web API tetapi, jika Anda tidak memerlukan fitur yang disediakan WCF dan yang Anda butuhkan hanyalah layanan RESTful melalui HTTP,Saya selalu lebih suka API Web karena ringan dan mudah digunakan.

Saya juga ingin menyajikan diskusi tentang perbedaan antara Web API dan ASP.Net MVC karena ada kesalahpahaman tertentu tentang kapan harus memilih salah satu dari yang lain. Pilihan antara ASP.Net MVC dan Web API bergantung pada banyak faktor. Ada beberapa pertimbangan yang perlu Anda ingat sebelum memutuskan untuk menggunakan salah satunya.

Perhatikan bahwa API Web menggunakan verba HTTP dan karenanya pemetaan berbasis verba HTTP untuk metode pemetaan ke rute masing-masing. Anda tidak dapat memiliki metode kelebihan beban untuk kata kerja HTTP yang sama untuk rute tertentu. Anda harus menyadari batasan desain ini (meskipun solusi tersedia) saat memilih antara ASP.Net MVC dan Web API. Tidak seperti ASP.Net MVC, API Web menggunakan perutean berdasarkan verba HTTP daripada URI yang berisi tindakan. Jadi, Anda dapat menggunakan API Web untuk menulis layanan RESTful yang dapat memanfaatkan protokol HTTP - Anda dapat merancang layanan yang lebih mudah untuk diuji dan dipelihara. Perutean di API Web jauh lebih sederhana dan Anda dapat memanfaatkan negosiasi konten dengan mulus. Model perutean di ASP.Net MVC menyertakan tindakan di URI.

Hal lain yang ingin Anda pertimbangkan adalah apakah Anda ingin fungsionalitas Anda diekspos untuk aplikasi tertentu atau apakah fungsionalitas tersebut harus generik. Jika Anda ingin mengekspos layanan Anda khusus untuk satu aplikasi saja, Anda akan ingin menggunakan ASP.Net MVC - pengontrol dalam aplikasi ASP.Net MVC adalah aplikasi khusus. Sebaliknya, Anda menginginkan pendekatan API Web jika kebutuhan bisnis Anda mengharuskan Anda untuk mengekspos fungsionalitas secara umum. Saya lebih suka menggunakan pendekatan API Web jika fungsinya lebih berpusat pada data dan pendekatan MVC ASP.Net jika fungsinya lebih berpusat pada UI.

Anda harus menggunakan API Web melalui ASP.Net MVC jika Anda ingin pengontrol Anda mengembalikan data dalam berbagai format seperti, JSON, XML, dll. Selain itu, menentukan format data dalam API Web itu sederhana dan mudah dikonfigurasi. API Web juga mendapat skor melebihi ASP.Net MVC dalam kemampuannya untuk dihosting sendiri (mirip dengan WCF). Anda akan membutuhkan pengontrol ASP.Net MVC untuk di-host di server web yang sama di mana aplikasi telah di-host karena pengontrol ASP.Net MVC adalah bagian dari aplikasi yang sama. Sebaliknya, Anda juga dapat menghosting pengontrol API Web di luar IIS - Anda dapat menghostingnya di host kustom yang ringan dan mengizinkan layanan untuk digunakan oleh banyak klien yang berbeda.