Memilih teknologi yang tepat untuk membina lapisan perkhidmatan di .NET

Semasa merancang lapisan perkhidmatan dalam aplikasi anda, pilihan teknologi yang akan digunakan pada lapisan perkhidmatan bergantung pada banyak faktor. Dalam artikel ini, saya akan menyampaikan perbincangan tentang kapan dan bagaimana anda dapat memutuskan untuk memilih teknologi yang tepat untuk menerapkan lapisan perkhidmatan ketika merancang aplikasi di .Net.

Dua pesaing terkemuka yang anda miliki ketika merancang lapisan perkhidmatan di. Net adalah WCF dan Web API. WCF adalah platform pengembangan untuk SOA - ia menyediakan banyak ciri dan menyokong banyak protokol pengangkutan yang berbeza. Walaupun WCF adalah kerangka terpadu untuk membangun aplikasi yang berorientasi perkhidmatan, API Web adalah alternatif ringan untuk membangun perkhidmatan RESTful yang dapat digunakan oleh banyak klien yang berbeza. Perkhidmatan RESTful menggunakan HTTP asas dan mudah dengan muatan jauh lebih sedikit berbanding perkhidmatan SOAP. Anda boleh menggunakan WebHttpBinding di WCF untuk membina perkhidmatan RESTful bukan SOAP melalui HTTP. WCF jauh lebih serbaguna dalam arti bahawa ia dapat menyokong banyak protokol pengangkutan - HTTP, TCP, dll. Anda boleh memanfaatkan WCF untuk membina perkhidmatan yang selamat, boleh dipercayai, dan transaksi yang dapat menyokong pemesejan, komunikasi dupleks dan saluran pengangkutan cepat seperti, TCP ,Paip Dinamakan atau UDP.

Sekiranya anda perlu membina perkhidmatan yang ringan dan berorientasikan sumber melalui HTTP yang dapat memanfaatkan fitur penuh protokol HTTP, menggunakan versi, kawalan cache untuk penyemak imbas, dan serentak menggunakan Etag, Web API adalah pilihan yang baik. Anda harus memilih API Web berbanding WCF di lapisan perkhidmatan anda apabila anda ingin mendedahkan perkhidmatan anda kepada pelbagai klien iaitu, penyemak imbas Web, telefon bimbit, tablet, dll. API Web adalah ringan dan sangat sesuai pada peranti yang mempunyai had lebar jalur seperti telefon pintar. Salah satu kekangan utama yang saya hadapi semasa menggunakan WCF adalah konfigurasi yang luas - API Web jauh lebih mudah dan senang digunakan. Saya mengakui bahawa WCF jauh lebih serba boleh berbanding dengan Web API tetapi, jika anda tidak memerlukan ciri-ciri yang disediakan oleh WCF dan semua yang anda perlukan hanyalah perkhidmatan RESTful melalui HTTP,Saya lebih suka API Web kerana ringan dan mudah digunakan.

Saya juga ingin menyampaikan perbincangan mengenai perbezaan antara API Web dan ASP.Net MVC kerana terdapat kesalahpahaman tertentu ketika memilih satu daripada yang lain. Pilihan antara ASP.Net MVC dan Web API bergantung pada banyak faktor. Terdapat pertimbangan tertentu yang perlu anda ingat sebelum anda memutuskan untuk menggunakan salah satu daripadanya.

Perhatikan bahawa API Web menggunakan kata kerja HTTP dan dengan itu pemetaan berdasarkan kata kerja HTTP untuk kaedah pemetaan ke laluan masing-masing. Anda tidak boleh mempunyai kaedah yang terlalu banyak untuk kata kerja HTTP yang sama untuk laluan tertentu. Anda harus menyedari kekangan reka bentuk ini (walaupun ada jalan penyelesaian) semasa memilih antara ASP.Net MVC dan Web API. Tidak seperti ASP.Net MVC, API Web menggunakan perutean berdasarkan kata kerja HTTP dan bukan URI yang mengandungi tindakan. Oleh itu, anda boleh menggunakan API Web untuk menulis perkhidmatan RESTful yang dapat memanfaatkan protokol HTTP - anda boleh merancang perkhidmatan yang lebih mudah untuk diuji dan dijaga. Perutean dalam Web API jauh lebih mudah dan anda dapat memanfaatkan perundingan kandungan dengan lancar. Model penghalaan di ASP.Net MVC merangkumi tindakan dalam URI.

Perkara lain yang ingin anda pertimbangkan adalah sama ada anda mahu fungsi anda didedahkan untuk aplikasi tertentu atau adakah fungsi tersebut harus bersifat umum. Sekiranya anda ingin mendedahkan perkhidmatan anda khusus untuk satu aplikasi sahaja, anda ingin menggunakan ASP.Net MVC - pengawal dalam aplikasi ASP.Net MVC adalah khusus untuk aplikasi. Sebaliknya, anda mahukan pendekatan API Web sekiranya perniagaan anda memerlukan anda untuk mendedahkan fungsi secara umum. Saya lebih suka menggunakan pendekatan API Web jika fungsinya lebih berpusatkan data dan pendekatan ASP.Net MVC jika fungsinya lebih berpusat pada UI.

Anda harus menggunakan API Web melalui ASP.Net MVC jika anda mahu pengawal anda mengembalikan data dalam pelbagai format seperti, JSON, XML, dll. Juga, menentukan format data dalam API Web adalah mudah dan mudah dikonfigurasi. Web API juga mendapat skor lebih tinggi daripada ASP.Net MVC dalam kemampuannya menjadi tuan rumah sendiri (serupa dengan WCF). Anda memerlukan pengawal ASP.Net MVC untuk dihoskan di pelayan web yang sama di mana aplikasi telah dihoskan kerana pengawal ASP.Net MVC adalah sebahagian dari aplikasi yang sama. Sebaliknya, anda juga boleh menghoskan pengawal API Web anda di luar IIS - anda juga boleh menghoskannya dalam hos khusus yang ringan dan membenarkan perkhidmatan tersebut dimakan oleh banyak pelanggan yang berbeza.