Temiz bir şekilde çalışıyorum ve sonuç olarak, yazılımı nasıl tasarladığım ve yazdığım konusunda büyük ölçüde yeniden düşünüyorum.
Hala güreştiğim bir şeyim var, "bazı öğelere yapılan güncellemeleri kaydetme, ilk yükleme" gibi görüntüleme / düzenleme iznine sahip olduğum öğelerin tüm listesi, bu öğenin listede olduğunu onaylayın, ve öğe kategorisinin şu anda kullanımdan kilitli olmadığından (ve diğer kurallar vb.) ".. çünkü bu (karmaşık ancak atipik olmayan) bir iş kuralıdır ve bu nedenle iş mantığını zorlamak yerine uygulama etki alanında ele alınmalıdır. db / süreklilik katmanı.
Ancak bana öyle görünüyor ki verimli bir şekilde bu koşulları kontrol etmek için en iyi uygulama etki alanına tüm verileri yüklemek yerine, iyi hazırlanmış bir db sorgusu ile ele alınacaktır ...
Erken optimizasyon olmadan, önerilen bir yaklaşım veya bu soru ile ilgili Bob amcası makaleleri nelerdir? Yoksa "bir sorun haline gelene kadar etki alanında doğrulama" derdi ??
En temel kullanım durumlarından başka herhangi bir şey için iyi örnekler / örnekler bulmakta gerçekten zorlanıyorum.
Güncelleme:
Merhabalar, cevaplar için teşekkürler. Daha net olmalıydım, uzun süredir (çoğunlukla web uygulaması) yazılım yazıyordum ve toplu olarak tanımladığınız tüm konuları kesinlikle deneyimledim ve katılıyorum (arka uçla doğrulayın, müşteri verilerine güvenmeyin, genel olarak konuşursak) ham verimliliği sadece gerektiğinde kovalayın, ancak mevcut olduğunda db araçlarının gücünü vb. onaylayın) ve "N-katlı uygulamalar ile dev bir yağ kontrolörü oluşturmak" kod trendlerini geliştirmek için "hepsini bir araya getirin" ve şimdi temiz / tek sorumluluk tarzını vb. gerçekten sevmek ve araştırmak, temel olarak son zamanlarda projeler geliştikçe ve daha fazla müşteri gereksinimleri ortaya çıktıkça oldukça karmaşık ve yaygın olarak dağıtılmış iş kurallarına dönüşen birkaç projenin sonucu olarak.
Özellikle, iş kurallarının çoğunun temelde gördüğünüz her örnekten çok daha karmaşık olabileceği müşteriye yönelik ve dahili kullanım işlevselliği için REST apisleri oluşturma bağlamında Temiz stil mimarisine bakıyorum (Clean / Hex mimarisi adamları tarafından bile).
Bu yüzden gerçekten temiz ve bir REST api birlikte nasıl oturup, bu günlerde gördüğünüz çoğu MVC şeyler gelen istek doğrulayıcıları (örn. .NET FluentValidation kitaplığı) nerede, ama nerede çoğu hakkında soruyordu (ve açıkça belirtmek için başarısız) sanırım "doğrulama" kurallarım çok fazla değil "bu 50 karakterden daha az bir dizedir" ama daha fazla "ilgili kullanıcı nesnesini / etkileşimi çağıran bu kullanıcı, ilgili bazı nesnelerin şu anda Takım X tarafından kilitlendiği göz önüne alındığında bu veri toplama üzerinde bu işlemi gerçekleştirebilir mi? ayın sonlarına kadar vs vs "... iş alanı nesnelerinin ve alan adı kurallarının LOTS'unun geçerli olduğu bu türden derinlemesine doğrulamalar.
Bu kuralları her bir usecase-interaktörüne (FluentValidator projesinden esinlenerek ancak daha fazla iş mantığı ve veri erişimi dahil) eşlik etmek için belirli bir Validator-nesne türüne çevirirsem, doğrulama işlemini bir Ağ Geçidi gibi ele almalı mıyım? Bu doğrulamaları bir ağ geçidine (yanlış olduğunu düşünüyorum) vb.
Başvuru için ben gibi çeşitli makaleleri kapalı gidiyorum bu , ama Mattia çok doğrulama ele almaz.
Ama sanırım sorumun kısa cevabı, kabul ettiğim cevaba çok benziyor: "Asla kolay değil ve duruma bağlı".