hkucuk

Mimari Desenler ile Tasarım Desenleri Arasındaki Fark Nedir?

December 10, 2020 • ☕️☕️ 9 dk okuma • 🏷 bilgisayar, yazılım


Wikipedia’ya göre:

architectural pattern

is a general, reusable solution to a commonly occurring problem in software architecture within a given context. Architectural patterns are similar to software design pattern but have a broader scope.

“belirli bir bağlamda yazılım mimarisinde yaygın olarak ortaya çıkan bir soruna genel, yeniden kullanılabilir bir çözümdür. Mimari desenler, yazılım tasarım modeline benzer ancak daha geniş bir kapsama sahiptir.”

Bu yazıda, aşağıdaki 10 ortak mimari kalıbı, kullanımları, artı ve eksi yönlerini ele alarak açıklamaya çalışacağım.

  1. “Layered pattern”
  2. “Client-server pattern”
  3. “Master-slave pattern”
  4. “Pipe-filter pattern”
  5. “Broker pattern”
  6. “Peer-to-peer pattern”
  7. “Event-bus pattern”
  8. “Model-view-controller pattern”
  9. “Blackboard pattern”
  10. “Interpreter pattern”

1. Layered Pattern (tr: Katmanlı desen)

Bu desen, her biri belirli bir soyutlama düzeyinde olan alt görev gruplarına ayrıştırılabilen programları yapılandırmak için kullanılabilir. Her katman, bir sonraki üst katmana hizmet sağlar.

Bir sistemde genel olarak bulunan 4 katman şunlardır:

  • Presentation layer - Sunum katmanı (UI katmanı olarak da bilinir)
  • Application layer - Uygulama katmanı (hizmet katmanı olarak da bilinir)
  • Business logic layer - İş mantığı katmanı (etki alanı katmanı olarak da bilinir)
  • Data access layer - Veri erişim katmanı (kalıcılık katmanı olarak da bilinir)

Kullanım

  • E-posta, belge paylaşımı ve bankacılık gibi çevrimiçi uygulamalar.

Layered pattern


2. Client-server Pattern (tr: İstemci-sunucu kalıbı)

Bu model iki kısımdan oluşur; bir sunucu ve birden çok istemci. Sunucu bileşeni, birden çok istemci bileşenine hizmet sağlayacaktır. İstemciler sunucudan hizmet talep eder ve sunucu bu istemcilere ilgili hizmetleri sağlar. Ayrıca, sunucu istemci isteklerini dinlemeye devam eder.

Kullanım

  • Desktop uygulamaları
  • E-ticaret web uygulamaları.

Client-server pattern


3. Master-Slave Pattern (tr: Efendi-Köle kalıbı)

Bu model iki kısımdan oluşur; master(efendi) ve slaves(köleler). Ana bileşen, işi özdeş ikincil bileşenler arasında dağıtır ve ikincil bileşenlerin döndürdüğü sonuçlardan nihai sonucu hesaplar.

Kullanım

  • Veritabanı replikalarında, ana veritabanı yetkili kaynak olarak kabul edilir ve ikincil veritabanları onunla senkronize edilir.
  • Bir bilgisayar sistemindeki bir veri yoluna bağlı çevre birimleri (ana ve bağımlı sürücüler).

Master-Slave Pattern


4. Pipe-filter Pattern (tr: Boru filtre düzeni)

Bu model, bir veri akışı üreten ve işleyen sistemleri yapılandırmak için kullanılabilir. Her işlem adımı bir filtre bileşeninin içindedir. İşlenecek veriler borulardan geçirilir. Bu borular, arabelleğe alma veya senkronizasyon amacıyla kullanılabilir.

Kullanım

  • Derleyiciler. Ardışık filtreler, sözcük analizi, ayrıştırma, anlamsal analiz ve kod üretimi gerçekleştirir.
  • Biyoinformatikte iş akışları.

Pipe-filter Pattern


5. Broker Pattern (tr: Broker kalıbı)

Bu model, ayrıştırılmış bileşenlere sahip dağıtılmış sistemleri yapılandırmak için kullanılır. Bu bileşenler, uzaktan hizmet çağrılarıyla birbirleriyle etkileşim kurabilir. Bir broker bileşeni, bileşenler arasındaki iletişimin koordinasyonundan sorumludur.

Sunucular, yeteneklerini (hizmetleri ve özellikleri) bir brokera yayınlar. Müşteriler, aracıdan bir hizmet talep eder ve daha sonra aracı, istemciyi kayıt defterinden uygun bir hizmete yönlendirir.

Kullanım

Broker Pattern


6. Peer-to-Peer Pattern (tr: Eşler arası model)

Bu modelde, tek tek bileşenler eşler olarak bilinir. Eşler, diğer eşlerden hizmet talep eden bir istemci olarak ve diğer eşlere hizmet sağlayan bir sunucu olarak işlev görebilir. Bir eş, bir istemci veya bir sunucu veya her ikisi olarak hareket edebilir ve rolünü zamanla dinamik olarak değiştirebilir.

Kullanım

Peer-to-Peer Pattern


7. Event-Bus Pattern (tr: Olay veriyolu düzeni)

Bu model öncelikle olaylarla ilgilenir ve 4 ana bileşeni vardır; olay kaynağı, olay dinleyicisi, kanal ve olay veriyolu. Kaynaklar, bir olay veri yolundaki belirli kanallara mesajlar yayınlar. Dinleyiciler belirli kanallara abone olurlar. Dinleyiciler, daha önce abone oldukları bir kanala yayınlanan mesajlardan haberdar edilirler.

Kullanım

  • Android development
  • Bildirim hizmetleri

Event-Bus Pattern


8. Model-View-Controller Pattern (MVC =))

MVC kalıbı olarak da bilinen bu kalıp, etkileşimli bir uygulamayı şu şekilde 3 parçaya böler:

  1. model: temel işlevleri ve verileri içerir
  2. view: bilgileri kullanıcıya gösterir (birden fazla görünüm tanımlanabilir)
  3. controller: kullanıcıdan gelen girdiyi yönetir

Bu, bilginin dahili temsillerini, bilginin kullanıcıya sunulma ve kullanıcıdan alınma yollarından ayırmak için yapılır. Bileşenleri ayırır ve verimli bir şekilde kod yeniden kullanımına izin verir.

Kullanım

Model-View-Controller Pattern


9. Blackboard Pattern (tr: Karatahta deseni)

Bu model, deterministik çözüm stratejilerinin bilinmediği problemler için yararlıdır. Yazı tahtası deseni 3 ana bileşenden oluşur.

  1. blackboard: çözüm uzayındaki nesneleri içeren yapılandırılmış bir küresel bellek
  2. knowledge source: kendi temsilcileriyle özel modüller
  3. control component : modülleri seçer, yapılandırır ve yürütür

Tüm bileşenlerin tahtaya erişimi vardır. Bileşenler, tahtaya eklenen yeni veri nesneleri oluşturabilir. Bileşenler, tahtada belirli türde verileri arar ve bunları mevcut bilgi kaynağıyla örüntü eşleştirerek bulabilir.

Kullanım

  • Konuşma tanıma
  • Araç tanımlama ve izleme
  • Protein yapısı tanımlama
  • Sonar yorumlama sinyalleri

Blackboard Pattern


10. Interpreter Pattern (tr: Yorumlayıcı deseni)

Bu model, özel bir dilde yazılmış programları yorumlayan bir bileşen tasarlamak için kullanılır. Esas olarak, belirli bir dilde yazılmış cümleler veya ifadeler olarak bilinen program satırlarının nasıl değerlendirileceğini belirtir. Temel fikir, dilin her sembolü için bir sınıfa sahip olmaktır.

Kullanım

  • SQL gibi veritabanı sorgu dilleri
  • İletişim protokollerini tanımlamak için kullanılan diller

Interpreter Pattern


Mimari Desenlerin Karşılaştırılması

Aşağıda verilen tablo, her bir mimari modelin artılarını ve eksilerini özetlemektedir.

Mimari Desenlerin Karşılaştırılması


Kaynaklar