eren selamlar. Projelerde çeşitli amaçlarla katmanlara ayırma işlemi yapılır. SambaPOS projesindeki amaç uygulama geliştirmeyi kolaylaştırmak için projeyi işlevsel bölümlere ayırmak ve bazı kurallar koymak. Örneğin veri yükleme, kaydetme (persistence) kodlarını barındıran katmandan görsel (presenatition) özellikleri içeren katman içindeki kütüphanelere referans bulunmaz. Veya görsel katman içinde veri iletişimini ilgiliendiren kodlar bulunmaz. Bu konuda DDD gibi güzel öneriler var ancak elbette bunlar yazılı kurallar değiller. İlk etapta örnekleri incelemek, önerileri takip etmek gerekir ancak zamanla tecrübenize göre üzerinde çalıştığınız projeyi gerekli gördüğünüz şekilde bölümlere ayırabilirsiniz.
ORM olarak entity framework kullandım. Bir code generator kullanmadım.
Bu bir restoran uygulaması olduğu için özel bir cache mekanizmasına ihtiyaç duymadık. Mesela ürün sayısı az olduğu için tüm ürünleri program açılışında yükleyip program çalıştığı sürece hafızada tutabilmek gibi bir avantajımız var. Ayrıca çalışma esnasında da ürünlerde veya fiyatlarda değişiklik yapılmıyor. Bunun haricinde verimliliği arttırmak adına programın bazı özelliklerini kullanırken uyguladığımız basit cache çözümleri de var ancak bunlar load balancing gibi uygulamalar yapmak için kullanılan standart cache mekanizmaları gibi değil.
İki terminalden aynı anda ödeme alınırsa adisyonu ilk kapatan kazanır. Eğer ödeme alınmadan yeni sipariş eklenirse ödeme iptal edilir ya da ödeme alındıktan sonra sipariş eklenirse sipariş iptal edilir. Ancak aynı anda aynı masaya iki terminalden birden sipariş alınırsa buna izin veriyoruz çünkü bazen 30,40 kişilik masalar oluyor ve iki, üç garson birden aynı anda aynı masaya el terminalinden sipariş alabiliyor. Duruma göre farklı sonuç üretmemiz gerektiği için bu tür kontrolleri veritabanı tarafında yapmadım. Tek tek olası bütün senaryolara farklı çözümler ürettik.
İşlevsel olarak henüz V2'nin özelliklerine sahip olmasa da yapısal olarak V3 sürümü daha iyi tasarlanmış bir sürümdür. Tabii her konuda detaylı bilgi vermek zor ama SambaPOS içinde standart bir iş uygulamasında karşılaşılabilecek hemen her tür problemin örnek bir çözümü bulunmaktadır. Yeni başlayan arkadaşlar için belki ilk bakışta karma karışık gelebilir ancak bu tür uygulamalar geliştirmek isteyen arkadaşların arada sırada bile olsa takip etmesi faydalı olacaktır.