2009-10-28 28 views
10

MVP kalıbı ve Winform'ları oldukça başarılı bir şekilde kullanıyoruz. Ancak, her zaman MVP hakkında bir soru açılır:MVP ve sunum tanecikliği

Sunucular için iyi iyi tanecikleri nedir?

Bununla demek istediğim şudur: Winforms ile, ince parçacıklılık genellikle kullanıcı denetimleri için oldukça iyi çalışır. Bu şekilde, kullanıcı kontrollerini yeniden kullanmak ve daha karmaşık GUI'leri tasarlarken bunları yapı taşları olarak kullanmak çok kolay. Bununla birlikte, sunum yapanlarla aynı (fine-) tanecikliğe sahip olmak bir problem gibi görünmektedir. iri taneli sunum sahip bir taraftan

kullanın "plug-in" kontrolleri için yeteneğini azaltmakta ve KURU ilke ihlal ait sıralar: Çoklu sunucuları genellikle (aynı mantık uygulamak müşterilerin listesini doldurmak gerekir Örneğin, birden fazla, daha karmaşık, kontroller tarafından kullanılan). Diğer yandan, ince taneli sunumcular, farklı durumlarda kontrolleri yeniden kullanma yeteneğini sınırlandırıyor gibi görünmektedir. Örneğin, bir düzenleme görünümünün bazen müşteriyi hemen kaydetmesi gerekebilir; bazen onu başka bir şeye bağlamak zorundadır; bazen sadece doğrulamak gerekiyor; ve bunun gibi. Genellikle daha karmaşık kontrole bağlıdır. Ama aynı zamanda da paylaşılan bir miktar adil davranış var.

Her iki durumda da, 1-sunum-1-görünümünün gerçekleştirilebileceğini unutmayın. "1-görünüm" olarak adlandırılan değişiklikler değişir.

MVP ve Winforms kullanarak sunucu tanecikleri için genellikle en iyi uygulamalar hangileridir?

  • İnce taneli sunum ve bu nitelikteki seçenekleri ya da bir şey aracılığıyla özelleştirilebilir davranış?
  • Kaba taneli sunumlar ve düşük sunucu yeniden kullanılabilirliği?
  • Başka bir şey?

Yasal Uyarı: Temel olarak Denetleme Denetleyicisini kullanıyoruz, ancak aynı zamanda Pasif Görünüm için de geçerli olduğunu düşünüyorum. Uzun soru için de üzgünüm.

cevap

1

Tüm müşterilerimize MVP kullanıyoruz ve bu kesinlikle birden fazla vesileyle gelen bir konuşma. Sınıflarımızın ve sunumcuların arkasındaki kodumuz ne kadar temiz olmalı? Bunu söyledikten sonra, kaba taneli sunum yaklaşımını kullanmayı seçtik. Temel olarak, her form kendi sunucusuna sahip olacak ve sadece kendi kontrollerini kullanarak belirli bir formdaki kontrollerin özelliklerini alacak ve ayarlayacaktır. Denetimleri doldurma - örneğin bir açılan kutuyu doldurmak için bir db çağrısı, genel hizmet sınıfında bulunur. Kullanıcı tarafından girilen verilerin herhangi bir şekilde doğrulanması, sunum yapanların herhangi biri ve/veya tamamı tarafından yeniden kullanılabilen bir BO sınıfında yer almaktadır. Umarım bu yardımcı olur.

2

CAD-CAM sistemimde sunum yapan kişilerim kullanıcı denetimlerini kullanmıyor. Kullanıcı denetimleri, sunum yapan kişinin kullandığı görünüm arabirimlerini uygulayan bir EXE düzeneğinde bulunan görünümde bulunur.

Bir müşteri listesini görüntülemek istediğimde DisplayCustomerList olan görünüme teslim ediyorum ve müşteri listesini görüntülemek için gereken kullanıcı denetimi kombinasyonlarını kullanır. Birden çok görünüm müşteri listesini aynı şekilde gösterirse, daha sonra ExE/Görünüm düzeneğinde bunu yapmak için bir kullanıcı denetimi veya sınıfı paylaşırlar. Bu sınıf o meclisin dışına çıkmaz.

Yazılımımız birçok farklı türde metal kesme makinesini çalıştırmak için uyarlanmıştır. Bu yüzden, UI'yi parçalayabilmek ve tamamen farklı bir UI ile değiştirebilmek için çok fazla önem veriyoruz (farklı bir makineye karşılık geliyor). Bu UI'lerin hepsi aynı ana takım dizisine başvurur.

hiyerarşi bu

Görüntüle EXE Sunucu Uygulama Komut Meclisi benziyor - komutlar tarafına Kapalı modeli Sunucu Arayüzler Modeli Meclisleri

değiştirmek sunucu tarafından yürütülür yüklenebilir montajlar olduklarını Dosya türleri yüklenebilir, raporlar, aygıt sürücülerinin kesilmesi, vb. gibi dinamik içeriği tanımlayın. Bunlar,

model meclislerinde bulunan çeşitli arabirimleri uygular.Yaptığım tek şey, her diyalog için bir görüş sunumu yapmamam. İletişim kutusu bir komutla sıkı sıkıya bağlıysa, komut sınıfı boyunca tanımlanır, oluşturulur ve kullanılır. Bazen bir grup ilgili komutlar bir iletişim kutusunu paylaşır (örneğin Dosya işleme).

MVP kullanırken sorduğum asıl soru "Formları başka bir şeyle tamamen değiştirmek isteseniz ne olur?". Bu sorunun cevabı, belirli bir kullanıcı kontrolüne veya form motoruna çok bağımlı olduğunuzu belirleyecektir.

Kurulumumun en büyük problemi (ve iyi bir cevabım olmadı), geçerli IDE'lerin ve langau'ların kullanıcı denetimlerini veritabanı kayıtlarına bağlamayı çok kolaylaştırmasıdır. Bu, diğer tüm kurulumlarla karşılaştırıldığında o kadar üretken bir yapıya sahip olma eğilimindedir. CAD-CAM uygulamasında bu konuyla uğraşmak zorunda kalmadım, bu yüzden veri setini görüntüye geçirmekten başka bir cevabım yok ve onu ele alsın. This site, bu durumda kullanılabilecek bazı kalıplara sahiptir.

+0

Sunumların doğrudan herhangi bir kullanıcı denetimi ile ilgili olmadığını anlamıyorum. İkilem, onların birçoğunun kendi sunucusuyla konuşup konuşmadığı ya da son şeklinin kendileri için "konuşan" olup olmadığıdır. Bu yine de yardımcı oldu, teşekkürler. –

+0

Kullanıcı denetimi veya kullanıcı grubu kontrolleri kendilerine tam bir görünüm oluşturduğunda bunu yapmamın tek zamanı. Örneğin, bir sekmeli UI'niz ve aynı verinin farklı görünümleri arasında geçiş yapmak için farklı sekmeyi tıkladığınızda. Bu durumda, her sekme, formu bir bütün olarak tutan görünümle ilgili bir görünüm olur. –

İlgili konular