asp.net-mvc-ve-asp.net-core-mvc-nin-ferqleri

ASP.NET MVC və ASP.NET CORE MVC-nin fərqləri

      Bu məqaləmizdə klassik MVC ilə (MVC 5  daxil olmaqla) ASP.NET CORE MVC arasındakı fərqləri izah etməyə çalışacağıq.


PS: Klassik MVC-nin OWIN Spesifikasiyası daxil edilməmişdən əvvəlki variantı əsas götürülür çünki OWIN MVC-yə sonradan əlavə olunub.

           Bir çox intervyularda proqramçıya MVC CORE haqqında sual verilən zaman, ilk soruşulan suallardan biri “Sizə görə klassik MVC ilə MVC Core arasında fərq nədən ibarətdir?” olur.


İlk öncə detallı formada kontekst daxilində bu texnologiyaları fərqləndirib sonra yekun icmal aparacağıq.


           Klassik MVC-nin klassik ASP.NET texnologiyasına əsaslanması onun əsas minuslarından biri olaraq qəbul edilir. Beləki həm WebForm həm də klassik MVC ASP.NET texnologiyasına daha dəqiqi System.Web.dll-ə əsaslanır. Beləki, bu dll –də köklü və ya hər iki tərəfin istifadə edəcəyi dəyişiklik edilməsi hər iki texnologiyada funksional dəyişikliyə gətirib çıxardır. ASP.NET CORE MVC isə ASP.NET MVC-nin infrastruktur baxımından tam yenidən dizayn olunmuş(redesign) formasıdır. Yəni,texnoloji vahid olaraq özündə belə bir problemi saxlamır.


         Klassik MVC yalnızca Windows və buna uyğun yalnızca IIS SERVER vasitəsilə işləyə bilir. Amma ASP.NET CORE MVC krosplatformalı olduğuna görə, həm Linux,həm MAC həm də Windows platformasında host oluna bilir.

           Klassik MVC bir növ atomar vahiddir,onu kiçik hissələrə parçalayıb “modul” aspektli istifadə etmək olmur.Çünki əsas funksionallıqlar toplusu System.Web.dll üzərində gəlir amma CORE MVC tam bir atomar parça formasında yox, kiçik və ya meqa servislər vasitəsilə istifadəyə verilib.Bu o deməkdir ki, biz MVC CORE-u istifadə üçün bütün assembly fayllarını yükləməyə ehtiyac yoxdur,yalnız lazım olan servisləri qoşub işimizi görə bilərik.


           Klassik MVC standard ASP.NET proqramlarının keçdiyi həyat dövrü prosesini keçir.(lifecycle) Beləki proqramın həyat dövrünü idarə etmək yalnız event-based development əsasında olur. Biz sadəcə verilən eventlara registrasiya olaraq request-response prosesinə manipulyasiya edə bilərik.Eventların çağırılma ardıcıllığı frameWorkun məsuliyyətində qalır.Buna HTTP Modullar deyilir.

 ASP.NET CORE MVC Owin spesifikasıyasının standard olaraq integrasiyası əsasında Middleware məntiqi ilə işləyir. Biz request-response prosesini klassik MVC-dən fərqli olaraq özümüz yazır və özümüz ardıcıllığını müəyyən edirik .

           Beləliklə klassik MVC ilə CORE MVC arasındakı fərqləri yekun aşağıdakı kimi toplaya bilərik:

1)CORE MVC krosplatformalıdır,amma klassik MVC yalnız Windows platforması üçün işləyir.


2)Klassik MVC System.Web.dll-nə dayandığına görə application lifecycle prosesi framework tərəfindən verilən fiks hadisələrə əsaslanır amma CORE MVC-də application lifecycle prosesini özümüz middlewarelər vasitəsilə yerinə yetiririk və çağırılma ardıcıllığını özümüz idarə edirik.(Təbii ki, middlewarelərin növlərinə görə çağırılma ardıcıllığına riayət etməklə)


3)Klassik MVC vahid atomar servis olaraq verildiyi halda , CORE MVC kiçik və ya meqaservislər formasında verilir.Bu isə imkan yaradır ki, yalnız lazım olan modul-servisləri qoşub istifadə edək.


4)CORE MVC-nın əsaslandığı ASP.NET CORE platforması klassik ASP.NET-in redesign olunmuş, daha optimal,daha sürətli variantıdır.


5)ASP.NET CORE 2.x versiyalarında həm .NET həm də .NET CORE ilə işləyə bilirdisə,ASP.NET MVC yalnız .NET platforması ilə işləyir.(3.0 versiyasından sonra Asp.NET CORE yalnız .NET core ilə işləyir)


6)Microsservice-lər və DOCKER sevərlər üçün yaxşısı .NET core və buna uyğun ASP.NET CORE-dur.


7)Bir kompyuterdə bir proqramın bir neçə versiyası üçün (Side by side versioning) ASP.NET CORE(.NET CORE) istifadə etmək lazımdır.


PS: OWIN spesifikasıyasının realizasiyasından sonra artıq klassik MVC üçün də middleware məntiqi ilə proqram lifecycle-nı idarə etmək olur, bu isə Global.asax-dan imtina edib middleware zəncirvari çağırılma prosesini istifadə etməyə köməklik edir. Misalçün, klassik MVC-də SignalR və İdentity sistemləri Owin əsasında işləyir.

Tural

Tural Süleymani

Süleymani Tural Microsoft-un MCSD statuslu mütəxəssisidir, 2008-ci ildən bu yana proqramlaşdırma üzrə tədris aparır

Müəllifin bu dildə ən son postları

Bu yazıları da bəyənə bilərsiniz