2010-12-15 17 views
11

. Özellikle dağıtık bulut tabanlı altyapı üzerinde, basit ölçeklenebilirlik için desenleri üzerine araştırma büyük miktarda yapıyor ve CQRS du jour (çağrıldığını kadarıyla bu yüzden gidiş terim oldukça komik buluyorum "Mimarlık Bağımlıları Crack" gibi görünüyor). Faydaları ve tuzakları bir kenara bırakarak, Greg Young'ın yanı sıra bu fikri kapsamlı bir şekilde (ya da hiç) üretim uygulamalarında kullanan ve bunun için gerçek dünyaya rehberlik eden herhangi birini bulmak oldukça zordur.Çok Kiracı CQRS Mimarlık Ekibim çok kiracılığa gerekliliğiyle, bir yeşil alan uygulaması uygulanmasını başlıyor

İşte benim sorularım: 1. Bir CQRS mimarisi, normal çoklu kiracı uygulamanızı barındırır mı, yoksa daha büyük ölçekli şirket içi uygulamalar için daha uygundur. Sağ erken almak için özellikle şeylere ve hangi yönleri organik olarak gelişti edilmelidir - Eğer bu durumda kullanıldığını öneriyoruz 2. Eğer yaklaşımlara bazı dan-siperler rehberlik sağlayabilir. 3. Eğer herhangi biri çok zor çalıştıysa ya da fayda sağlamazsa ya da buna karşı güçlü argümanlar varsa (ve CRUD'a ve katmanlı tasarıma uymanızı öneriyorsa), bu deneyimleri de bilmek isterim.

Başvuru için, uygulama .NET olarak yazılacak ve ön uç, başlangıçta mobil ve kalın istemciler için genişletilen, web tabanlı (ASP.NET MVC) olacaktır. Eşzamanlılık, işlem etkinliği ve veri hacminin, uygulamanın ömrü boyunca nispeten düşük kalması beklenir (yüksek hacimli finansal uygulamalara ve benzerlerine kıyasla). Altyapı için Azure'u kullanmayı planlıyoruz.

+0

Henüz varsa, ben Udi'nın CQRS bir okuma sahip öneririm (bir cevap gerçekten sorunuzun özelliklerini ele almaz çünkü bir yorum olarak bu koyarak) Buraya makaleye açıklık http: // www.udidahan.com/2009/12/09/clarified-cqrs/ ve şurada üzerine yaptığı video izlerken: http://skillsmatter.com/podcast/open-source-dot-net/udi-dahan-command-query- sorumluluk-segregasyon/rl-311 –

+2

Ayrıca özellikle .NET Azure CQRS için için http://abdullin.com/ ve Lokad projesi http://code.google.com/p/lokad-cqrs/ –

+0

Michael sayesinde kontrol yorumlar. Gerçekten de bu kaynaklar dahil olmak üzere bu model üzerinde çok fazla miktarda bilgi okudum ve izledim. Eksik olan şey, bunu bir süredir kullananların, hatta şu an bunu gerçekleştirme sürecinde olanların sesidir. Ben teorik faydaları kucaklayan adımını atmadan önce , ben onlara eşlik gerçek dünya zorluklar çok büyük olmadığını doğrulamak istiyoruz. En sevdiğim alıntılardan biri olarak, "Teoride, teori ve uygulama aynıdır. Pratikte, nadiren vardırlar." – Mafuba

cevap

6

ben (biz hala iş fon için bekleyen) aynı başlangıç ​​fiili projeye başlamadan önce bir keşif perspektiften, kendimi işaret inceledik. Bu bağlamda, benim araştırma ve görüşüm, mimarlığın çok kiracılı ekseninin, kaba taneli hizmetin iç tasarımı için CQRS kullanımına büyük ölçüde dik olduğu yönündedir.Çok kiracılı gereklilik, uygulamanın kiracıları bir güvenlik, veri, sunum/kişiselleştirme, dağıtım/provizyon ve ölçeklenebilirlik açısından nasıl ayrıştırabileceği konusunda ek ek kısıtlamalar getirmektedir. CQRS bunu gerçekten daha iyi veya daha kötü yapmaz ve benim düşünceme göre Hizmetler için değerli mimari zorlukları ele almada hala bir değere sahiptir. Bununla birlikte, uygulamayı sağlamak için gevşek bir şekilde işbirliği yapan tüm Hizmetlerin, seçilen gevşek birleşik mimarinin kullanımını yasaklamaması koşuluyla, CQRS şablonunu da takip etmesi gerekmez.

2

ben çok kiracı sanmıyorum herhangi zor/kolay kullanılarak CQRS olduğunu. Mesajlaşmayı kullanırsanız çeşitli avantajlara sahipsiniz: komutlar ve olaylarda kiracı verileri olarak kiracı kimliğini gömebilir, kimliğe dayalı bir etkinlik mağazasını seçebilir, çoklu-kiracıyla çoklu kiracıyı birleştirebilirsiniz. Yine de, aksi takdirde

7
  1. çoklu kullanıcı tarafını okuma biraz CQRS değişecek ;-) komut /-geviş olayla sona ... Etki alanı son derece işbirlikçi ise kendinize sorun ve emrinde etki alanı uzmanı var . Görüntülemeleri filtrelemeniz ve yalnızca kiracıyla ilgili verileri geri göndermeniz gerekir. Ve başka bir mimariyi kullanarak aynı problemlerle karşılaşacaksınız. başvurunuzun bir görev tabanlı (dayanmayan bir CRUD) yapacak çünkü
  2. Ben CQRS öneriyoruz. Bu, UI'den alınan komutlara sahip olacağınız ve DTO'lardan daha anlamlı olacağınız anlamına gelir. Eğer DDD ilkelerine sizin çekirdek yazmak istiyorsanız sonra Anemik Alan Modeli (http://martinfowler.com/bliki/AnemicDomainModel.html) kaçınmaya çalışın. Bunu yapmak için yaklaşım - tüm etki alanına özgü mantığı etki alanı nesnelerine taşıyın. Komut işleyicileriniz çok basit olmalıdır (kimlik doğrulaması, toplama kökünü yükle, komut çağrısını komut çağrısına çevir), özel durumlar atılmadıysa değişiklikler uygulayın). Greg'in sınıf kaydını (6 saat bir buçuk) izlemeye değer: http://cqrsinfo.com/video/ Michael Shimmins, Azure'u platformunuz olarak kullanmayı düşünüyorsanız, Lokad.CQRS projesine bakmaya değer. Projelerimizden birini uygulamak için kullandım. Basit CRUD uygulamasına gerçekten ihtiyacınız varsa (görev tabanlı değil), CQRS uygun değildir. CQRS, yeni gelenler için ilkelerini anlamak için daha fazla zamana ihtiyaç duyar. Diğer taraftan, alan-çekirdek programcıları ile daha az deneyimli görüş-ötesi programcılar arasındaki dev görevlerin ayrılmasına izin verecektir.