3 min read

MVC mi, yoksa SPA mı seçmeli?

SPA mı, yoksa MVC mi? Hangisini seçmeli? Bu yazıda bu konuyu inceleyeceğiz.
MVC mi, yoksa SPA mı seçmeli?

Javascript framework'lerinin hızını alamayıp coştuğu son yılları saymazsak, geleneksel web uygulamaları işin ağır yükünü sunucunun kaldırdığı, tarayıcının sadece sunum amaçlı kullanıldığı bir mimari üzerinde çalışır (asp.net web forms, mvc, vb.). Fakat özellikle son yıllarda javascript framework'lerinin iş yükünün bir kısmını sunucudan alarak tarayıcı tarafında sırtlandığı SPA dediğimiz tek sayfalık uygulamalar artmaya başladı.

Sunucuyu rahatlattığı ve kullanıcı arayüzünde harikalar yaratabildiğinden SPA'lar daha da popüler olacak gibi görünüyor. Yalnız SPA ile kurulan mimariler gerçekten de uzmanlık isteyen bir karmaşıklığa sahip.

Peki durum böyleyken siz kendi uygulamanızı inşa ederken bu yaklaşımlardan hangisini seçmelisiniz?

MVC

Eğer çok basit iş mantığı gereksinimleri olan ve arayüz tasarımından büyük beklentileri olmayan bir uygulama yazıyorsanız, MVC tarzı mimariyle devam etmek işinizi kolaylaştırabilir. Kısa zamanda uygulamayı ayağa kaldırabilir ve kullanmaya başlayabilirsiniz. Çok ayağı olan karmaşık bir proje olmayacağından idare etmesi kolay olacaktır.

Javascript framework kullanımınız ne düzeyde?

Ayrıca javascript bilgim yetersiz veya güncel değil diyorsanız SPA'yı öğrenmek için çok vakit harcayacağınızdan şu aşamada MVC ile devam etmeniz mantıklı olur. Aksi halde SPA yapayım derken kendinizi Javascript ES6 çalışırken bulabilirsiniz.

Kullanıcı girişleri için API gerekli mi?

Bence bir diğer önemli konu da kullanıcı girişleri konusu. Uygulamanız sadece web içinse, yani mobil ayağı olmayacaksa, MVC ile beraber Identity kullanarak kullanıcı girişlerini Microsoft'un cookie bazlı Authentication sistemiyle yapabilirsiniz. Neredeyse hiç el değmeden uygulamanızda güvenli giriş konusu halledilmiş olur.

Versiyon kontrolünüz ne durumda?

MVC de tek bir projeniz olduğundan versiyon kontrolü de daha kolay olur. Arayüz için ayrı, API için ayrı projelerin versiyon kontrolünü yapmak iş yükünü artıracağından versiyon kontrolü konusunda kendine güvenmeyenler veya iş yükü istemeyenler tek proje üzerinden MVC ile gidebilirler.

SPA

Eğer kullanıcı arayüzünün detaylı ve çok çeşitli özellikleri olması isteniyorsa, ve halihazırda bir API'niz varsa veya yapabilecek durumdaysanız o zaman SPA seçmeniz daha faydalı olacaktır.

Javascript framework kullanımınız ne düzeyde?

Önemli bir nokta da SPA yapmak için javascript'i iyi seviyede bilmeniz gerektiğidir. Aksi taktirde arayüz tasarlarken kaybolabilirsiniz.

Javascript ES6'nın incelikleri de karşınıza mutlaka çıkacaktır. Bunları bilmiyorsanız "ne oluyor burda?" sorusunu sık sık soracaksınız demektir.

Kullanıcı girişleri için API gerekli mi?

SPA'larda pek bahsedilmese de bence en önemli konulardan biri de kullanıcı girişleri konusu. Arayüzü javascript'le yazacağınızdan form kullanılan bütün işlemleri (kullanıcı girişleri dahil) elle yapmaya hazır olun.

API ile devamlı konuşarak veri alışverişini yöneten, sunucu kaynaklı olsun olmasın bütün hataları da yöneterek kullanıcıya sorunsuz bir deneyim sunmanız çok önemli.
Bazı zamanlarda yaptığınız işe ara verip Fetch API, REST mimarisi, vb. konuları gözden geçirmeniz gerekebilir.

Versiyon kontrolünüz ne durumda?

API ve arayüz projelerini ayrı ayrı yürütmeniz gerekecek. Bunların versiyon kontrolünü yapabileceğiniz konusunda kendinize güveniyorsanız SPA ile ilerleyebilirsiniz.

Özellikle yeni branch'ler açmak, bir branch'i master branch'e merge etmek, belirli bir commit'e geri dönmek veya belirli bir commit üzerinden checkout etmek gibi işlemleri yapmak konusunda deneyiminiz yoksa kemerlerinizi bağlayın derim çünkü çok maceralı bir yolculuğa çıkmak üzeresiniz :).

Özetle

Bütün bu yazdıklarımın özetini çıkarmak gerekirse, eğer uygulamanızın kullanıcı arayüzünde yapılması istenen fazla ve karmaşık işlemler yoksa, ve javascript framework'leri konusuna, karmaşık versiyon kontrolü işlemlerine, API ile iş yapmaya aşina değilseniz, SPA mimarisine girmeseniz de olur. MVC işinizi görecektir.

Fakat uygulamanızın kullanıcı arayüzünde çeşitli işlemler yapılması isteniyorsa ve javascript framework'leri, REST işlemleri, versiyon kontrolü gibi konularda deneyiminiz varsa SPA sayesinde çıtayı çok yükseklere çıkaran uygulamalar yazabilirsiniz. Kullanıcıların çok beğenerek kullanacağı, kapsamlı, geliştirmesi ve yönetmesi uzmanlık isteyen fakat hem öğretici, hem de son derece kaliteli bir ürün çıkaracağınızdan emin olabilirsiniz.

Dünya çapında trend rüzgarları şu an SPA yönünde esiyor, bunu da bilmekte fayda var. Bu yüzden en azından öğrenmek amaçlı da olsa SPA mimarisine bir şans verin derim.

Microsoft'un bu konudaki önerilerini şu adresten okuyabilirsiniz:
https://docs.microsoft.com/tr-tr/dotnet/architecture/modern-web-apps-azure/choose-between-traditional-web-and-single-page-apps

Bu yazının yapacağınız bir sonraki uygulamanın SPA olup olmayacağı konusunda karar vermenizde bir nebze de olsa yardımcı olduğunu umuyorum. Bir sonraki yazıda görüşmek üzere, hoşçakalın.