سؤال

أنا منذ فترة طويلة ويندوز المطور, بعد أن قطع أسناني على win32 المبكر COM.لقد تم العمل مع .صافي منذ عام 2001 ، لذلك أنا بطلاقة جدا في C# و CLR.لم أسمع من قلعة وندسور حتى بدأت المشاركة في تجاوز سعة مكدس.لقد قرأت قلعة وندسور "الشروع في العمل" دليل, ولكن ليس من النقر.

تعليم هذا الكلب الحيل القديمة الجديدة ، قل لي لماذا يجب أن يكون دمج قلعة وندسور في تطبيقات المؤسسة.

هل كانت مفيدة؟

المحلول

قلعة وندسور هي انعكاس أداة التحكم.وهناك آخرون مثل ذلك.

يمكن أن تعطيك الكائنات مع بنيت قبل و قبل السلكية تبعيات هناك. كامل كائن الرسم البياني التي تم إنشاؤها عن طريق التفكير و التكوين بدلا من "الجديد" المشغل.

تبدأ هنا: http://tech.groups.yahoo.com/group/altdotnet/message/10434


تخيل أن لديك بريد إلكتروني إرسال الدرجة.EmailSender.تخيل أن لديك فئة أخرى WorkflowStepper.داخل WorkflowStepper تحتاج إلى استخدام EmailSender.

هل يمكن أن نقول دائما new EmailSender().Send(emailMessage);

ولكن هذا - استخدام new - يخلق ضيق اقتران أنه من الصعب تغيير.(هذا هو صغيرة مفتعلة سبيل المثال بعد كل شيء)

ماذا لو بدلا من newing هذا الصبي سيئة داخل WorkflowStepper لقد نجحت في البناء ؟

اذا ما كان جديد حتى EmailSender.

new WorkflowStepper(emailSender).Step()

تخيل لديك مئات من هذه الفئات التي لا تملك إلا واحدة المسؤولية (جوجل SRP)..و يمكنك استخدام عدد قليل منهم في WorkflowStepper:

new WorkflowStepper(emailSender, alertRegistry, databaseConnection).Step()

تخيل عدم القلق حول التفاصيل EmailSender عند كتابة WorkflowStepper أو AlertRegistry

أنت فقط تقلق بشأن القلق الذي كنت تعمل مع.

تخيل هذا كله الرسم البياني (شجرة) من الكائنات و تبعيات يحصل السلكية حتى في وقت التشغيل بحيث عند القيام بذلك:

WorkflowStepper stepper = Container.Get<WorkflowStepper>();

يمكنك الحصول على صفقة حقيقية WorkflowStepper مع كل التبعيات تلقائيا حيث كنت في حاجة إليها.

لا يوجد new

فقط يحدث - لأنه يعلم ما يحتاج ما.

و يمكنك كتابة عدد أقل من العيوب مع تصميم أفضل الجافة في قابل للتكرار و الطريقة.

نصائح أخرى

أعتقد أن اللجنة الأولمبية الدولية هو خطوة في الاتجاه الصحيح على الطريق نحو زيادة الإنتاجية و التمتع من فريق التطوير (بما في ذلك PM با أحد BOs).فإنه يساعد على إنشاء فصل المخاوف بين المطورين لاختبار.أنه يعطي راحة البال عندما يصمم الذي يتيح المرونة الأطر قد تأتي في.

أفضل طريقة لتحقيق الهدف الذي الأولمبية الدولية (CW أو Ninject الخ..) يأخذ طعنة في القضاء على السياسة #1 و #2 إزالة الحاجة إلى المطورين وضع على واجهة كاذبة فهم عندما النامية.هل هذه حلين لا تبدو مرتبطة IoC ؟ هم :)

مارك Seemann كتب كتاب ممتاز في دي (حقن التبعية) وهي مجموعة فرعية من اللجنة الأولمبية الدولية.كما يقارن عدد من الحاويات.لا أستطيع أن يوصي هذا الكتاب بما فيه الكفاية.الكتاب اسمه:"حقن التبعية في .صافي" https://www.manning.com/books/dependency-injection-in-dot-net

قلعة وندسور هي Dependency Injection container. يعني مع مساعدة من هذا يمكنك حقن التبعيات الخاصة بك واستخدامها دون خلق لهم مع مساعدة من كلمات رئيسية جديدة.على سبيل المثالتنظر كنت قد كتبت مستودع أو الخدمة التي ترغب في استخدامها في العديد من الأماكن ، تحتاج إلى التسجيل أولا الخدمة / المستودع و يمكنك البدء في استخدامه بعد عن طريق الحقن في المكان المطلوب.يمكنك أن تأخذ نظرة على البرنامج التعليمي أدناه والتي تابعت لمعرفة قلعة وندسور.

الرابط.

نأمل أن تساعدك.

ببساطة.تخيل أن لديك بعض الطبقة دفن في التعليمات البرمجية التي تحتاج بسيطة التكوين القيم للقيام بعملها.هذا يعني أن كل شيء إنشاء مثيل من هذه الفئة يحتاج إلى الحصول على تلك التبعيات ، لذا عادة في نهاية الأمر إلى ريفاكتور الكثير من الطبقات على طول الطريق إلى مجرد تمرير قليلا من التكوين إلى أسفل إلى حيث مثيل يحصل على خلق.

لذا إما أن الكثير من فئات داع تغيير لك مجموعة التكوين القيم في واحدة كبيرة التكوين الطبقي الذي هو أيضا سيئة...أو الأسوأ لا تزال تذهب خدمة محدد!

اللجنة الاولمبية الدولية يسمح الفئة الخاصة بك للحصول على جميع depencencies دون أن المتاعب ، ويدير أعمار من الحالات أكثر صراحة أيضا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top