SORU
20 EKİM 2008, PAZARTESİ


İş nesneleri kullanarak Varlık Çerçevesi varlıklar?

Microsoft'tan Varlık Çerçevesi O/R eşleyici kullanarak ve ticari bir nesne olarak varlık sınıfları (DB nesneleri eşlenen oluşturulan sınıflar) kullanıyorum. Bu iyi mi? Eksileri veya artıları anlatın. Veri üyeleri olarak bu nesneleri göndermek için nasıl iş katmanı ve sunum arasında XML iletişimin bir durumda, ne yapmam gerek?

CEVAP
1 Temmuz 2011, Cuma


Öncelikle, ile 11 soru görüş anda bunu yazıyorum, biraz sürpriz olmaması cevapları ve tüm saygımla, kaliteli cevaplar, verilen oldukça basit bir soru.

Yani, şimdi gördüm bacalı biraz, istiyorum Adres bu soru(lar) çünkü bence bu geçerli daha çok bugün ile son sürümü Varlık Çerçevesi Kod-İlk.

"Kullanarak, Varlık Çerçevesi varlıklar olarak iş nesneleri?"

Birkaç puan başlamadan önce açıklama:

  • Ne zaman ki "iş nesneleri", ben altında izlenim bu nesneler sevk içeren kural veya mantık arasında değişen, örneğin, basit bir doğrulama (I. e gerekli alanlar) için daha karmaşık mantık (I. e. bir ödeme işleme vergi).

  • Takip soru XML hakkında cevap verebileceğimi sanmıyorum. Bu nedenle bu sadece çünkü gidiyorum objektif sorularınıza cevap hakkında EF olarak iş nesneleri o zaman öznel bir kuvvet beni bir duruş kanıtlayan çelişkili benim girişimi için samimi ve objektif cevap ver dedi ilk soru.

Bu iş nesneleri soru olarak, EF üzerine söyledi

"O/Varlık Çerçevesi kullanıyorum R eşleyici Microsoft ve varlık (oluşturulan dersleri eşlenen DB nesneler için) bir iş olarak nesneler. Bu iyi mi?"

Üzgünüm, sadece burada doğru veya yanlış cevap diye bir şey yok. Amacınız nedir tam olarak bunu yapmanın avantaj ve dezavantajları anlamak ise en makul tasarımı için-sonuç ne bağlıdır.

“Lütfen devlet eksileri veya artıları”

Sormana sevindim! Veririm seve seve cevap ve umarım burada olduğu göz önüne alındığında artıları ve eksileri vardır yapabilir bir karar olarak almamak size inanıyor kullanarak EF için iş nesneleri “TAMAM”. Genellikle isterdim patlak artıları ve eksileri yapmak kolay “sindirmek”, ancak sanmıyorum ki, burada çok uygun, çünkü bence olacaktık yapıyor haksızlık bu çok ilginç bir konu olan aynı zamanda yakın ve sevgili kalbime.

İlk olarak, teknik olarak üzerinde biraz duralım... iş nesneleri gibi EF nesneleri kullanmak mümkün bir şey teknik olarak bunu engelliyor. Aslına bakarsanız, EF Code-First (CF) yapar bu inanılmaz derecede kolay izin vererek size oluşturmak ve POCOs ' vererek uygulama becerisi veri açıklamaları için basit doğrulama ve uygulama İValidatableObject için daha karmaşık doğrulama. Oldukça serin, değil mi?

Burada bir tartışmanın merkezinde.

EF, ya da herhangi bir ORM, veri yönetimi desteklemek için tasarlanmıştır. Başlıca sorumluluğu, veri ve oluşturduğunuz nesnelerin veri merkezli bu nedenle. Ayrıca davranış ile nesneleri tasarlamak için çalışıyorsunuz o zaman yandan bir muamma biraz. Kısaca bu muamma denir empedans uyumsuzluğu. Bu resim; uygulamanızda iki gerekli durumlarda kullanmak için:

  1. Bir ekran kullanıcı düzenlemek için
  2. Bir kontrol kullanıcı bilgilerini okuma-yalnızca bir alt kümesini görüntülemek için

Eğer kullanarak EF (herhangi bir lezzet), ya da herhangi bir ORM için önemli olabilir çekilmek doğru kullanarak aynı “Kullanıcı” nesnesi için bir tanıtıcı yeteneği kaydetmek için bir kullanıcı olarak çekici bir kullanıcı çekme alt kümesi salt okunur alanları. Muhtemelen birkaç nedenden biri için:

  1. Gibi pek çok geliştirici var bu tohum ekilen beyinlerimiz sırasında eğitim “konsolide code” son derece önem ya da belki de daha iyi bilinen KURU – yaymayın Kendinizi, ve bu nedenle olabilir bak çoğaltılması kod, gibi özellikleri, olumsuz bir bağlam.
  2. ORMs, 4.1, teknik sınırlamaları var EF (ve hackish alternatif çözüm) birden fazla eşleme gibi aynı veritabanı tablo böylece inançları ne olursa olsun, seni zorlamak için/nesneleri POCOs'.
  3. Bir uygulamayı çalıştırmak için hızlı ve kolay bir yoludur
  4. Bu “hissetmek” yapılacak en doğru şey gibi

Bunu yapmanın avantajları ve dezavantajları vardır ve bu olumlu ya da olumsuz bir şekilde fikrini bağlı olarak bakabilirsin.

Eğer büyük başardığına göre bir davranış kodu normalleştirme inanıyorsan sanırım. Kod miktarını, potansiyel olarak zaman, verileri işlemek için tek bir nesne yazarak kaydetme sınırı başardık ve iş bu varlığın durumlarda kullanın.

Ve eğer sefil bir şekilde başarısız oldunuz daha kod üzerinde davranış normalleştirme inanıyorsan sanırım. Kod kaydederek sorumluluklarını potansiyel olarak yönetmek için zor hale getirerek nesneleri tasarlamak ve daha sonra korumak için maliyeti artan feda ettiniz.

Muhtemelen tüm bu iş nesnesi olduğunu kabul edebiliriz görüşünüz ne olursa olsun, birden çok sorumluluk ve davranış (veri!) aldı nesne ise, ikinci en iyi. Başlıca sorumluluğu, veri yönetimi ve ikincil sorumlulukları iş kuralları, hem basit ve kullanıcı düzenleme ve salt okunur kullanıcı bilgilerini görüntüleme ile ilgili karmaşık bir işlem. Nesne yönelimli tasarım (OOD), eğer tasarım bir nesne ile karakterizedir kimliğini ve davranış, daha bu nesne olabilir kafası karışık birey olarak değil uygun bir çok tanımı OOD.

Teknik açıdan da düşünmeliyiz, kullanıcı her zaman talep yükü önemli miktarda miras nesne. Bu sadece salt okunur bilgi kümesini görüntüleme özellikleri ve iş kuralları gibi şeyler içerebilir.

Bunların hepsi ya da EF iş nesneleri temsil etmek için kullanmalıyım olup olmadığı ile ne ilgisi var?

Evet. teknik olarak mümkün Olsa da, ya da EF, ya da herhangi bir ORM kullanmak gerekir olup olmadığını felsefeleri (iyi, kimisi kötü), iş nesneleri temsil etmek için farklı vardır. Bir özet yukarıda bu felsefelerin kalbini hedef verdim, ama Rocky Lhotka ve Martin Fowler gibi bireyler tarafından çok daha ayrıntılı bir şekilde belgelenmiştir.

Al yönünde büyük olasılıkla uygulamanın bağlıdır ve felsefi bir bakış açısıyla ne kadar bağlı olabilir. O, bir iş ya da nesneler için EF kullanarak veya basitçe bir etkisi olacak bu almak için değil, idealist ya da pragmatist ilişki bir varlık olduğunu ima etmiyorum. " dedi.

Bu yazı gibi, Microsoft tarafından endikasyonları EF iş mantığı işlemek için inşa edilir ve, doğru ya da yanlış, bu yönde daha hareketli görünüyor. EF sürekli gelişen ve bazı teknik SINIRLAMALAR Bu tür EF sonunda her iki dünyanın en iyi karşılamak için kullanılabilecek kaldırılıyor. Diğer bir deyişle, sonunda sizin pasta var ve çok yemek mümkün olabilir.

Bu yardımcı olur umarım.

Off ya bir ORM ile sebat cehalet bunun arkasındaki amacın, düşününce çok saçma olup olmadığı hakkında bir soruyu cevaplamak için verileri yönetmek için. :-) Kusura bakma, dayanamadım!

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Liam Underwood

    Liam Underwo

    19 Mayıs 2009
  • sghaff1

    sghaff1

    23 Mart 2009
  • theKGB65

    theKGB65

    24 Aralık 2007