2010-08-02 22 views

cevap

37

yerine onları çağıran POCO en i kalıcılık cahil nesneler demeyi tercih.

İşleri basit olduğundan, ne için kullanıldığına veya nasıl kullanıldığına bakmak zorunda değiller.

Şahsen, POCO'ların basit özellikleri olan bir genel sınıf için yalnızca bir başka sözcük (Web 2.0 gibi - beni bunun üzerine başlatma) olduğunu düşünüyorum.

Her zaman bu tür nesneleri iş durumuna bağlı tutmak için kullanıyorum.

POCO'ların temel yararı, havuz kalıbı, ORM ve bağımlılık enjeksiyonu gibi şeyleri kullanmaya başladığınızda gerçekten görülür. Başka bir deyişle

- Eğer yere (vb db, web hizmetinden) verileri geri çeker bir orm (en EF diyelim) yaratabilir, sonra proje nesnelerin içine bu verileri (POCO en).

Bu nesneler, uygulama yığınının altına servis katmanına ve daha sonra web katmanına iletilebilir.

Eğer bir gün nHibernate'e geçmeye karar verirseniz, POCO'larınıza hiç dokunmayacaksanız, değiştirilmesi gereken tek şey ORM'dir. Bu nedenle 'sebat edicidir' terimi - ne için kullanıldığının veya nasıl kullanıldığının umurunda değildir.

Yani yanlısı en Özetle:

  • , veriler için basit bir depolama mekanizması verir seri/katmanları
  • içinden etrafında geçen depedency enjeksiyonu, depo desen ve ORM en el ele Goes kolaylaştırır. Esneklik.
  • Diğer katmanlarda en aza indirilmiş karmaşıklık ve bağımlılıklar. (daha yüksek tabakanın sadece POCO'lara olan önemi var, POCO'nun hiçbir şey umurunda değil). Gevşek kaplin
  • Basit test edilebilirlik (etki alanı testi için gerekmediği sürece).

Yardım budur.

+2

Bu, mükemmel bir anlam ifade eder. "Buzz kelimesi" ifadesini kullanmanı seviyorum. Bunu projemde zaten kullanıyorum gibi görünüyor. Yaptığım kullanım, L2S'yi (temelde veritabanındaki 10 alanın 4'ü) kullanarak "bazı" Kullanıcı verilerini çekmek ve bunları çok basit bir "POCO" nesnesinde saklamaktır. Daha sonra bu nesneyi serileştirir ve ASP.NET Kimlik Doğrulaması Çerezinde 'UserData 'nesnesi olarak saklarım. Böylece veritabanına tekrar girmeden daha sonra geri alabilirim. –

+1

@rockinthesixstring - tam olarak benim nokta. POCO'ları yıllardır kullanıyoruz, bir şeyi etiketlemenin başka bir yolu. Şahsen, ben deposu/bağımlılık enjeksiyonu ve ORM'lerin kombinasyonunu sevdim - bu senaryoda POCO'ları kullanmamanın çılgınlığı olurdu. Her şey gevşek kaplinle ilgili. Tabii ki hangi teknolojiyi kullandığınızı bilmiyorum (.NET deneyimimden çizim yapıyorum) – RPM1984

+0

Evet, yorumumda belirttiğim gibi ASP.NET kullanıyorum - aslında MVC2 kullanıyorum. –

3

Böyle Eğer POCO kullanmayı planlıyorsanız hangi bağlam olarak daha fazla ayrıntı vermek gerekir. Ancak temel fikir, sadece gerekli olan verileri/kodu içeren basit nesneler oluşturacağınızdır. Bu nesneler, (örneğin) bir çerçeve tarafından gerekli olabilecek ek açıklamalar, ekstra yöntemler, temel sınıflar, vb. Gibi herhangi bir "bagaj" içermeyecektir. Bir POCO ait

+0

Ek açıklamalar, ek yöntemler, temel sınıflar C# dilinin temel özellikleridir.Bu yüzden onları POCO nesnelerine dahil etmemek için bir neden göremiyorum ... –

0

Örnek:

class Person { 

    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string EmailAddress { get; set; } 

} 
+7

Bunun rezerve edilebileceğinden şaşkına döndüm - bu yanlısı/con's, implemtnation, nasıl oluyor? – RPM1984

+0

haha ​​... ah iyi. RPM1984’ü "cevaplandır" ı geçtim. –