2008-09-23 11 views
5

WinForms kullanarak MVC desenine dayalı normal bir müşteri siparişi uygulaması düşünün. Görünüm kısmı çok fazla büyüdü (4000'den fazla dosya) ve daha küçük olanlara bölünmesi gerekiyor. Bu örnek için Döngüsel Bağımlılıklar


biz görünümü kısmı için 3 proje kullanacağız:

  • Ana - diğer 2 projelere bağımlılığı yoktur. Formları listelerle örneklendirir.
  • Müşteriler - müşteriler listesi ve müşteri ayrıntıları - 2 formları vardır.
  • Siparişleri - emir listesi ve sipariş ayrıntılarını - 2 formları vardır. Müşteri ayrıntıları üzerinde

bu müşteri için siparişlerin bir listesi de vardır oluştururlar. Listede OrdersController alındı, bu yüzden sorun değil. Kullanıcı bir sipariş seçtiğinde, liste bu kılavuzu alır ve Sipariş Ayrıntıları formuna referans olarak iletir.

Bu

biz Müşteriler Proje Siparişler Projesi bir başvuru olması gerekir anlamına gelir. (1)

Ayrıca sipariş detayları formunda, siparişi veren müşteriye bir bağlantı vardır. Tıklandığında Müşteri Ayrıntıları formunu açmalıdır.

Bu

biz Siparişleri Projesi Müşteriler Projesi bir başvuru olması gerekir anlamına gelir. (2) itibaren

(1) ve (2) biz Siparişler ve Müşteriler projeler arasında döngüsel bağımlılıkları olacak.


nasıl bu önlenebilir? Bir çeşit eklenti mimarisi? Proje zaten geliştirildi ve en iyi çözüm, mümkün olduğunca az kod değişikliği gerektirecektir.

+0

Projeler birbirleriyle nasıl etkileşime giriyor? –

cevap

5

Türlerden en az birini bir arabirime dönüştürün. Örneğin

bir ICustomer arayüzü ve bu arayüzü uygulayan bir müşteri türü var. Şimdi, sipariş verene ICustomer'ı ekleyin ve müşteri projesinden, siparişleri projeye referans olarak ayarlayın, böylece arayüzü uygulayabilirsiniz. Sipariş türü şimdi fiili uygulamayı bilmeden ICustomer türüne karşı çalışabilir.

Ve daha iyi bir çözüm için :-) Hem bir ICustomer hem de IOrder arabirimi oluşturun ve bunları üçüncü bir kütüphane projesine ekleyin.Ve bu projeyi diğer ikisinden de referans alın ve sadece arayüzler ile çalışın, asla uygulayıcı olmadan.

+1

Bunu nasıl çözüyorsunuz: Siparişler Müşterileri oluşturmaya ihtiyaç duyuyor, Müşteriler Siparişleri gerçekleştirebilmeli mi? –

2

onlar sıkıca belki bölünmüş olmamalıdır birleştiğinde o ise. Arabirimleri ayıklayın ve ayrı bir bölüme koyun.

0

MVC mimarisini kullandığınızdan bu yana zor olmamalı. Örnekler ve iyi uygulamalar için Microsoft Composite UI Applications bloğuna bir göz atın.

0

Ben senin asıl sorun uygulamanın mimarisi olmadığını düşünüyorum. Sınırları ve bunların arasındaki işlevselliği nasıl bölmeniz gerektiğini anlamanız gerekir. Sizinki gibi bölüm oldukça yapay, uygulamayı etki alanı nesnelerine göre ayırmaya çalışıyorsunuz. Kullanıcı rollerini veya işlevsel temaları kullanmayı deneyin ve sorun ortadan kalkabilir. Bana garip biraz sesleri - senin görüşlerin birbirini varlığından haberdar olması gerektiğini neden anlamıyorum bakış teknik açıdan

. Verilerinizi ve iş mantığınızı bölemezsiniz ve günün sonunda bir GUID, farklı yöntemleri kullanarak kolayca geçiş yapabileceğiniz bir şeydir.