ASP.NET WebApi vs MVC? [kapalı]


140

ASP.NET MVC denetleyicileri ile verilerinizi farklı biçimlerde gösterebilirsiniz. AspNetWebAPI açıkça API oluşturmak için tasarlanmıştır, ancak kolayca MVC denetleyicileri ile yapabilirsiniz, hangi durumlarda geleneksel MVC denetleyicilerinden daha iyi olurdu bana açık değil. WebApi'nin faydalarının açık olduğu senaryolarla ilgileniyorum ve uygulamalarıma başka bir karmaşıklık katmanı eklemeye değer.

Soru: MVC ile ilgili asp.net WebApi kullanmanın avantajları ve / veya dezavantajları nelerdir?



11
Bu "vs" sorularının ne kadar rasgele kapatıldığı ya da bu oylama seviyesine nasıl yükseldiği benim için komik.
cbmeeks

10
Grrr. O kadar "broard kadar kapalı" afişlerden nefret ediyorum. Birçok kez böyle harika sorular buluyorum. Ve daha sık değil, aynı zamanda harika cevapları var. Peki ya çok genişse. Uzmanlar tam burada ve wikipedia'da veya başka bir forumda değil. Öyleyse işlerini yapmalarına ve yoldan çekmelerine izin verin.
nharrer

Yanıtlar:


47

WebApi, WCF veya SOAP gibi resmi bir hizmet yerine HTTP üzerinden açığa çıkabilen hizmetler oluşturmanıza olanak tanır. Başka bir fark, WebApi'nin Http protokolünü nasıl kullandığı ve onu gerçekten birinci sınıf Http vatandaşı yapma biçimidir.

GÜNCELLEME: ASP.NET Core, Web API MVC proje türüne entegre edilmiştir. ApiControllerSınıf birleştirilir edilir Controllersınıfın. Daha fazla bilgi için: https://wildermuth.com/2016/05/10/Writing-API-Controllers-in-ASP-NET-MVC-6

Karşılaştırma, tartışma ve öğreticilerin alakalı bir bağlantısı:

resim açıklamasını buraya girin


20
Diğer gönderinin benzer olduğuna katılmıyorum. Diğer yazı aslında WCF ve WebAPI hakkında.
Shane Courtrille

Teknik olarak konuşursak, WCF Web API diyor, ancak ikinci satırda Asp.net web api'ye birleştirildiğinden ve kendi kendine barındırma özelliğini desteklediğinden bahsediyor. Bağlantıyı daha yeni biriyle zaten güncelledim. Umarım yardımcı olur.
Yusubov

Referanslar güncellendi.
Yusubov

23

WebAPI OData tükürür, böylece OData kullanmanın tüm avantajlarını elde edersiniz. Örneğin, WebAPI ile şunları elde edersiniz:

  • $ Filter, $ top, $ orderby vb. Gibi sorgu seçenekleri
    • Geleneksel MVC kontrolörleri ile bunları kendiniz uygulamanız gerekir.
  • Biçimin standardizasyonu
    • RESTful API'nizin temel biçimini anlayacak OData istemcileri vardır.

5
Bir çeşit. OData'yı destekleyebilirim, ancak eylemi en azından RC'den itibaren 'sorgulanabilir' özniteliğiyle dekore ederseniz.
EBarr

14

Asp.Net Web API VS Asp.Net MVC 1 . Asp.Net MVC, hem görünümleri hem de verileri döndüren web uygulamaları oluşturmak için kullanılır, ancak Asp.Net Web API, yalnızca görüntülenmeyen verileri döndüren kolay ve basit bir şekilde tam gelişmiş HTTP hizmetleri oluşturmak için kullanılır.resim açıklamasını buraya girin

2 . Web API, .NET Framework üzerinden REST-ful hizmetleri oluşturmaya yardımcı olur ve ayrıca içerik anlaşmasını da destekler (istemci tarafından kabul edilebilecek en iyi yanıt biçimi verisine karar vermekle ilgilidir. JSON, XML, ATOM veya diğer biçimlendirilmiş veriler olabilir ), MVC'de olmayan kendi kendini barındırma.

3 . Web API, istekte bulunan Accept üstbilgisine dayalı olarak JSON, XML veya başka herhangi bir formatta veri döndürmeye de özen gösterir ve bu konuda endişelenmezsiniz. MVC, verileri yalnızca JsonResult kullanarak JSON biçiminde döndürür.

4 . Web API'sında istek HTTP fiillerine dayalı eylemlerle eşleştirilir, ancak MVC'de eylem adı ile eşlenir.

5 . Asp.Net Web API yeni bir çerçeve ve temel ASP.NET çerçevesinin bir parçasıdır. Web API'de bulunan model bağlama, filtreler, yönlendirme ve diğer MVC özellikleri MVC'den farklıdır ve yeni System.Web.Http derlemesinde bulunur. MVC'de bu özellikler System.Web.Mvc dosyasında bulunur. Bu nedenle Web API, Asp.Net ile ve bağımsız bir hizmet katmanı olarak da kullanılabilir.

6 . JSON, XML veya başka herhangi bir biçimde veri döndürebilen ve tam gelişmiş bir HTTP hizmeti oluşturabilen gelişmiş AJAX isteklerini işlemek için Web API ve MVC denetleyicisini tek bir projede karıştırabilirsiniz. Genellikle buna Web API'sı kendi kendini barındırma denir.

7 . MVC ve Web API denetleyicisini karıştırdığınızda ve yetkilendirmeyi uygulamak istediğinizde, her ikisi de farklı olduğundan, biri MVC için diğeri Web API için iki filtre oluşturmanız gerekir.

8 . Dahası, Web API hafif bir mimaridir ve web uygulaması dışında akıllı telefon uygulamalarıyla da kullanılabilir.

Orijinal kaynak burada


13

benzerlikler

1) asyncrequest için her ikisi de ihhtphandler'den miras alır, bu nedenle temel olarak apicontroller veya mvc kontrolör her ikisi de web etrafındaki sarıcıdır.

Farklar: 1) mvc denetleyici çok ağırdır eğer tanımından geçebilirseniz, kaç arayüz ve kullandığı temel kodu görebilirsiniz, web api daha hafif denetleyicidir ve isteği geçirilen parametrelerle ayırt eder (evet, biz de değiştirebiliriz! )

2) MVC denetleyicisi görünümleri, eylem sonucu, javascript sonucu vb.Gibi çok fazla özelliğe sahiptir, ancak web api'de JSON veya XML vardır

3) API, görünümlere bağlı olmadan herhangi bir yerde bağımsız olarak barındırılabilen Restful (get, post, put, delete, options) hizmetlerini uygulamak içindir, MVC denetleyici, görünümlerle sıkıca entegre olduğu için bunu destekleyemez.


1
Yine de JSONResult, vb gibi mvc eylem sonuçlarını kullanarak MVC ile API gibi davranış elde edebilirsiniz kayda değer. Ancak işaret gibi MVC denetleyicisi ağır. Ayrıca, Web API denetleyicilerinin uygulanma şekli, API oluşturmak için MVC'den daha elverişlidir.
Grizzly Peak Software

12

Bu görüntü, konudaki farklılıkları ve benzerlikleri göstermektedir. Umarım bu yardım benim için ilginçtir.

resim açıklamasını buraya girin


10

Bir noktada ASP.NET MVC'yi hep birlikte unutmak isteyebilirsiniz. Bir .NET geliştiricisiyseniz ancak (örneğin Angular kullanarak) bir Tek Sayfa uygulaması oluşturmak istiyorsanız, ASP.NET MVC ile birlikte gelen tüm gereksiz şişkinlikler olmadan RESTful hizmetinin (WebAPI) faydalarını istersiniz.


5

ASP.NET MVC ve ASP.NET Web api ikisi de farklı amaçlar için kullanıyor

ASP.NET

ASP.NET, web uygulamaları oluşturmak için üç çerçeve sunar: Web Formları, ASP.NET MVC ve ASP.NET Web Sayfaları. Her üç çerçeve de kararlı ve olgun ve bunlardan herhangi biriyle harika web uygulamaları oluşturabilirsiniz. Hangi çerçeveyi seçerseniz seçin, ASP.NET'in tüm avantajlarından ve özelliklerinden her yerde yararlanabilirsiniz.

Her çerçeve farklı bir geliştirme tarzını hedefler. Seçtiğiniz, programlama varlıklarınızın (bilgi, beceri ve geliştirme deneyimi), oluşturduğunuz uygulamanın türüne ve rahat olduğunuz geliştirme yaklaşımına bağlıdır. Her üç çerçeve de ASP.NET'in gelecek sürümlerinde desteklenecek, güncellenecek ve geliştirilecektir.

MVC

ASP.NET MVC, endişelerin temiz bir şekilde ayrılmasını sağlayan ve keyifli, çevik bir geliştirme için işaretleme üzerinde tam kontrol sağlayan dinamik web siteleri oluşturmak için güçlü, desen tabanlı bir yol sunar. ASP.NET MVC, en son web standartlarını kullanan gelişmiş uygulamalar oluşturmak için hızlı, TDD dostu geliştirme sağlayan birçok özellik içerir.

Web API'sı

ASP.NET Web API, tarayıcılar ve mobil cihazlar da dahil olmak üzere çok çeşitli istemcilere ulaşan HTTP hizmetleri oluşturmayı kolaylaştıran bir çerçevedir. ASP.NET Web API, .NET Framework üzerinde RESTful uygulamaları oluşturmak için ideal bir platformdur.

buradan daha fazla form okuyabilirsiniz http://www.dotnet-tricks.com/Tutorial/webapi/Y95G050413-Difference-between-ASP.NET-MVC-and-ASP.NET-Web-API.html


3

ASP.NET MVC, HTML çıktısını kolaylaştırmaya odaklanmıştır. ASP.NET Web API, ham verilerin çıkışını kolaylaştırmaya odaklanmıştır.

WebForms dünyasında, ASP.NET MVC .aspx sayfalarına eşdeğer ve ASP.NET Web API'si .asmx olacaktır


2

Asp.Net MVC, hem görünümleri hem de verileri döndüren web uygulamaları oluşturmak için kullanılır, ancak Asp.Net Web API, yalnızca görüntülenmeyen verileri döndüren kolay ve basit bir şekilde tam gelişmiş HTTP hizmetleri oluşturmak için kullanılır.

Web API, .NET Framework üzerinden REST-ful hizmetleri oluşturmaya yardımcı olur ve aynı zamanda içerik anlaşmasını da destekler (istemci tarafından kabul edilebilecek en iyi yanıt biçimi verisine karar vermekle ilgilidir. JSON, XML, kendi kendine barındırma olabilir) MVC.

Web API, istekte bulunan Accept üstbilgisine dayalı olarak JSON, XML veya başka herhangi bir formatta veri döndürmeye de özen gösterir ve bu konuda endişelenmezsiniz. MVC, verileri yalnızca JsonResult kullanarak JSON biçiminde döndürür.


1

Genellikle, WebAPI, MVC'nin daha fazla çıktı türü üretebildiği veri hizmetleri için kullanılır.

WebAPI kesinlikle veri hizmetleri oluşturma yöntemimizi basitleştirir. Bu amaç için temiz ve kolaydır. MVC daha fazla araçla geliyor.

MVC WebAPI çıktısını üretebilir. Şablonlardan çıktı üretmek MVC'de kolayca elde edilebilir. WebAPI'de bunu yapmak için bir neden bulamıyorum. PHP geliştiricileri ve eski ASP programcısı, geçmişten bu tutumu bilebilir, burada içeride C # koduyla ilgili HTML dosyaları oluşturabilirsiniz.

WebAPI- VERİ MVC - VERİ, UI / HTML, XHTML, Dosyalar, Şablonlar vb.

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.