Aklımda Kalası Kelimeler

* давайте работать вместе
* Zarf ve Mazruf, Zerafet(xHoyratlık) ile aynı kökten(za-ra-fe) gelir
* Bedesten
* Suç subuta ermiştir - Suç sabit olmuştur

5 Ocak 2017 Perşembe


- N-Tier uygulamaların gelişimi
- Data-Centric N-Tier mimari
- Domain-Centric N-Tier mimari

N-Tier Uygulamalar

- N-Tier tanımlamak
- Logical - Physical Seperation
- Typical Tiers

Tier ve Layer Nedir?

LAyer, mantıksal ayrım olup Tier ise fiziksel ayrım için kullanılır.
Örneğin programınızı yazarken UI(Kullanıcı Arayüz) katmanı, BUSINESS(İŞ) katmanı ve DATA(Veri) katmanı olarak 3 dll geliştirdiğinizi ve tüm bunları ayrı projelerde kodladığınızı düşünün. Artık 3 Layers bir uygulamanız var demektir. Layerlarınızın her birini 3 farklı makinede/sistemde barındırırsanız N-Tier ile tanımlanacak N sizin için 3 olur. Yani 3-Layers olarak geliştirdiğiniz projenizi 3-Tiers sunuyor olursunuz. Bu layer'ların 3'ünü de tek bir bilgisayarda hizmete sunuyorsanız 1 Tier'ınız oldu demektir. Yani MVC uygulamanızda M, V ve C için 3 farklı proje(namespace, assembly, SOFTWARE DESIGN PATTERN'e göre vs.) geliştirdiniz ve bu layerlarınızı tek bir IIS sunucusunda(1-Tier) barındırdınız. Uygulamanızı en basit olacak şekilde windows form olarak geliştirdiniz(tek process ya da tek assembly) ve istemciye yükleyerek çalıştırdınız 1-Layer ve 1 Tier. Uygulamanızın parçaları eğer farklı process, makine, cihaz vs de çalışıyorsa bunlar fiziksel ayrımlar olacaktır ve sebebi bu kez SOFTWARE ARCHITECTURE.

Monolithic Application

Access ile yazılmış bir uygulama monolitik olacaktır. DB ve KOD içinde ve mantıksal ya da fiziksel bir ayrım yapılamayacaktır. Aynı şekilde konsol uygulamaları da monolitiktir. Eğer fiziksel olarak bölümlere ayırmış olsaydık yani data servislerini ayrı, uygulama servisini ayrı fiziksel katmanlara ayırsaydık; ölçeklendirme, güvenlik, hata toleransı ve yük dengesini dağıtmak gibi konularda faydalar üretebilirdik.

  1. Önceleri tüm kodu tek bir assembly olarak yazar aynı makinedeki veritabanı sunucusuna bağlanarak iş yapardık.
  2. Sonra uygulama içindeki katmanları keşfettik, UI, BLL(business logic layer), DAL(data access layer).
  3. Sonra database sunucusunu ayrı bir makinede kurduk.
  4. Sonra data ve iş katmanını ayırarak bir servis içinde tutarak ayrı bir makinede tutarak farklı uygulamaların(UI katanların) uygulama servislerini(BLL, DAL) kullanarak Data Servislerine(db tier'ına) erişmelerine imkan verdik.

N-Tier ile:
  1. Tekrar kullanımları sağladık(mobil, masaüstü, browser vs. uygulama arayüzlerinin application services(BLL,DAL...) katmanlarını kullanarak arkalarındaki data services katmanlarına erişmesi gibi)
  2. Takımların ayrımlarını ve bu sayede geliştirme verimliliğini yakaladık
  3. Katmanlara bölünmüş(tier ve/veya layer) yapıların bakımı daha kolay oldu
  4. Birbirine daha esnek bağlanan yapılara sağladık (loose coupling)

End Runs'dan kaçınmak

Eğer bir katmanınız sonraki katman yerine daha ötedeki katmanları çağırıyor ya da aşağıdaki katman çok yukarıdaki katmanlara veriyi aradaki katmanları atlayarak gönderiyorsa bu yapı sorunlu olacaktır.


Data-Centric N-Tier Dizayn