ما هو كائن وكيل .NET في عكس التحكم/المعنى الموجه نحو الجانب؟

StackOverflow https://stackoverflow.com/questions/287479

سؤال

ما هو كائن الوكيل في عكس التحكم/المعنى الموجه نحو الجانب؟

هل هناك أي مقالات جيدة حول ما هو كائن الوكيل؟
لماذا تريد استخدام واحدة؟
وكيفية كتابة واحدة في C#؟

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

المحلول

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

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

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

بشكل عام، يتم استخدام مصطلح IOC مع ما يسمى حاوية اللجنة الأولمبية الدولية, ، وهي فئة مصممة خصيصًا لتكون مسؤولة عن إنشاء مثيلات الفئات التابعة بناءً على معلومات مترابطة بشكل فضفاض حول تلك الفئات (الأنواع) والتي تحصل عليها من مصدر آخر غير التبعيات الثابتة (في أغلب الأحيان، من نوع ما من ملفات التكوين) .بشكل عام، عند استخدام حاوية IOC، يمكنك إنشاء مثيل لها عند بدء تشغيل التطبيق، وبعد ذلك (من خلال قراءة بيانات التكوين أو أي شيء آخر)، يمكنك "تسجيل" كل فئة من الفئات (الأنواع) التي ستكون حاوية IOC مسؤولة عنها ، بقيمة أساسية.غالبًا ما يكون المفتاح هو النوع المجرد أو الواجهة التي يجب على جميع مثيلات هذا التسجيل تنفيذها).بعد ذلك، في العمليات العادية لتطبيقك، حيث قد يكون لديك مثيل جديد لأحد هذه الأنواع، يمكنك استدعاء حاوية IOC، وتطلب منها مثيلًا بدلاً من ذلك، باستخدام النوع/الواجهة المجردة كمفتاح .تستخدم حاوية IOC بعد ذلك التحميل الانعكاسي أو الديناميكي (أو أي شيء آخر)، لإنشاء مثيل من أي نوع تم "تسجيله" باستخدام هذا المفتاح.بهذه الطريقة، وببساطة عن طريق تغيير بيانات التكوين، يمكنك التحكم في الأنواع الفعلية التي يستخدمها التطبيق، وتغييرها في بيئة واحدة أو موقع نشر عن تلك المستخدمة في بيئة أخرى.

نصائح أخرى

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

وشرح تشارلز Bretana هو جيد جدا.

لا أستطيع أن أتخيل العلاقة بين وكيل واوب. يمكن للشخص أن يفسر ذلك هنا؟

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