سؤال

الذي لديه المسؤولية


الذي يتحمل المسؤولية عن وحدة العمل وإنهاءها في بنية MVC؟

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

المحلول

انها ليست مسؤولية وحدة تحكم، فإنها تنتهك SRP.. وبعد يجب أن لا يعرف وحدة التحكم عن uow على الإطلاق. في شبكة الإنترنت، عادة ما يتم استخدام OOW لكل طلب إلى الخادم. في هذه الحالة، يجب التخلص من UOW في نهاية الطلب وبدأت في مكان ما بعد بداية الطلب (يجب أن يكون بداية من الناحية المثالية ل UOW كسول). أفضل مكان للقيام بهذا هو Global.asax (أو فئة httpapplication) باستخدام application_endrequest و Application_beginrequest.
يمكن تحقيق ذلك بسهولة مع إطار IOC (المفضل لدي هو Windsor)، انظر هذا السؤال للحصول على تفاصيل التنفيذ.

نصائح أخرى

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

أنا مؤمن بالهندسة المعمارية المتقدمة فضفاضة. تحكم الخاص بي لا يعرف شيئا عن المستودع أو السياق أو UnitoFwork. لقد قمت بإنشاء طبقة خدمة (غير متأكد من أن هذا هو المصطلح الصحيح) أن تحكم المكالمات. تعمل هذه الخدمة بعد ذلك مع المستودع (DLL) لاستمرار جميع البيانات.

كما قال Zihotki أنك تنتهك SRP إذا كنت تعطي هذه المسؤولية إلى وحدة التحكم. هذا هو نمط موجه نحو معالجة البيانات، وعلى هذا النحو لا ينبغي أن يكون مصدر قلق للتحكم ... من شأنه أن يجعلها انتهاكتين: واحدة من أجل SRP و ANOTHRT لمبدأ SOC.

أما بالنسبة لمن لديه المسؤولية، فهذا شيء يجب تعريفه بواسطة الهندسة المعمارية الخاصة بك. يبدو اقتراح StarTrequest / EndRequest قوي بما فيه الكفاية.

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