SORU
30 EYLÜL 2009, ÇARŞAMBA


Nasıl depo desen doğru kullanmak için?

Merak ediyorum nasıl benim depoları gruplandırma olmalıdır? Bu örnekler gibi asp.net bu mvc üzerinde gördüm ve benim kitaplarda bunlar temelde veritabanı tablo başına bir depoyu kullanın. Ama alay ve eşyalar için depolar birçok depoları çağırmak için daha sonra giden bir sürü gibi görünüyor.

Onları grup etmem gerektiğini tahmin ediyorum. Ancak onları grup için nasıl emin değilim.

Şimdi kayıt bir Depo hepsi benim kayıt işini yaptım. Ancak güncellemem gerekiyor ve bunu yapmak için 3 depoları vardı önce 4 tablo gibi.

Örneğin bir tablo, bir lisans tablodur. Kayıt esnasında, kendi anahtarı bakıyorum ve eğer veritabanında olup olmadığını görmek için kontrol edin. Şimdi Eğer başka yere kaydı sonra diğer masada bu lisans anahtarı veya başka bir şey kontrol etmek istersem ne olur?

Tek nokta giriş(anahtar kontrol süresi değil) olabilir.

Ben bu durumda ne yapardı? Kodu tekrar(mola) KURU yeniden? Denemek merege bu 2 depoları ve birlikte umut yok yöntemlerdir gereken başka bir zaman(belki bir yöntemi denetler eğer kullanıcı adı kullanılır - belki ben gereken başka bir yerde).

Ayrıca eğer ben bunları birleştirin birlikte ederdim de 2 servis katmanları gidiyor aynı depoyu beri sanırım her mantık için 2 farklı parçaların bir site olur uzun ve ben olmalı adları gibi ValidateLogin(), ValdiateRegistrationForm(),ValdiateLoginRetrievePassword() vb.

Ya da Depoyu neyse ve sadece garip bir sondaj adı etrafında var diyorsun?

Sanki sabit bir depo olan bir general yeter ismi kullanabilirsiniz bunun için birçok noktalardan uygulama ve hala mantıklı ve sanmıyorum çağıran başka bir depo bir depo iyi bir uygulama mı?

CEVAP
13 EKİM 2009, Salı


Havuz deseni ile yaklaşık oynadı yanlış yaptığım bir şey - tıpkı senin gibi, o tablo 1:1 depo ile ilgilidir sanıyordum. Etki alanı Odaklı Tasarım bazı kuralları uygulayan - gruplandırma havuzları sorun genellikle kaybolur.

Depo Aggregate root başına ve tablo olmamalıdır. Bunun anlamı eğer varlık olmamalı canlı tek başına (yani - Registrant katılan özel Registration) - sadece bir kurumun değil bir depo olmalı güncellenen/oluşturulan/alınan depo ile toplam kök ait.

Elbette. birçok durumda, bu tekniğin azaltarak sayısı depoları (aslında daha çok bir teknik yapıya etki modeli) olamaz uygulanan çünkü her varlık olması gereken bir toplam kök (son derece bağlı etki, sağlayabilir kör tahmin sadece). Örnek - License Registration varlık, herhangi bir bağlam ile onları kontrol etmek mümkün olması gerekir, çünkü toplu bir kök gibi görünüyor.

Ama ardarda depoları (Registration depo gerekirse License depo referans verilir. bizi kısıtlamaz. Başvuru License depo (tercih - IoC) bize Registration nesne doğrudan kısıtlamaz.

Komplikasyonlar teknolojileri tarafından sağlanan tasarım kullanmamaya çalışıyorum falan sadece bir yanlış anlama. 2 havuzları inşa etmek istemezsin diye ServiceX depoları gruplandırma iyi bir fikir değil.

Çok daha uygun bir isim vermek olacaktır - RegistrationService yani

Ama hizmetleri genel olarak kaçınılmalıdır - genellikle anemic domain model yol nedenidir.

DÜZENLEME:
IoC kullanmaya başlar. Gerçekten bağımlılıkları enjekte ederek acıyı hafifletir.
Yazma yerine:

var registrationService = new RegistrationService(new RegistrationRepository(),  
      new LicenseRepository(), new GodOnlyKnowsWhatElseThatServiceNeeds());

yazmak mümkün olacak:

var registrationService = IoC.Resolve<IRegistrationService>();

P. s. common service locator sözde kullanmak için daha iyi olurdu ama bu sadece bir örnek.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Glove and Boots

    Glove and Bo

    1 ŞUBAT 2007
  • How It Should Have Ended

    How It Shoul

    5 Mart 2007
  • Tire Rack

    Tire Rack

    31 Mayıs 2007