أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

كيفية تمرير كائنات مثل معلمات إلى COM + بقائمة الانتظار مكونات

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

اضغط هنا لرابط المقالة باللغة الانجليزية246627
تمت أرشفة هذه المقالة. وتظهر "كما هي" ولن يتم تحديثها بعد الآن.
الموجز
في قائمة الانتظار مكونات تمكنك من استدعاء وظائف الكائن يتم تسجيل ، توجيهها خلال Microsoft رسالة قائمة انتظار الملقم (MSMQ) ومن ثم ردها في الملقم حيث تم تكوين المكوّن في قائمة الانتظار. في بعض الحالات، قد يتضمن معلمات الدوال الجاري تسجيله الكائنات. يمكنك القيام بذلك مع المكونات الموضوعة في قائمة الانتظار ولكن يجب اتباع قواعد معينة إلى كائن الوسيطة إعادة إنشاء عند تشغيل استدعاء الأسلوب مرة أخرى في الملقم:
  • يجب أن يعتمد الكائن تمرير كوسيطة IPersistStream. في Visual Basic، يجب أن يتم وضع علامة على أنها "مستمرة" مع يجب تنفيذ وظائف Class_ReadProperties و Class_WriteProperties بشكل صحيح.
  • يجب تسجيل فئة الكائن تمرير كوسيطة بشكل صحيح على جهاز الكمبيوتر العميل وجهاز الكمبيوتر الملقم.
  • بشكل مستقل عن أعلاه, مثيل للمكون إنشاء كما في قائمة الانتظار قد يتم تمريرها كمعلمة للمكون المدرج في قائمة انتظار ثانية.
معلومات أخرى

كيفية عمل ذلك

ينتقل ما إلى عندما يتم إجراء مكالمة للمكون المدرج في قائمة انتظار تمرير كائن كوسيطة ؟

وفيما يلي مثال: افترض أن لديك استخدام إدارة معلومات العميل تسمى Customer.CCustomer كائن. هذا الكائن تطبيق في الملف Customer.dll ويكون التعليمة البرمجية التالية. لاحظ أنه تم وضع علامة مستمرة كما ولاحظ التنفيذ الخاص به من الطرق المناسبة:
'CCustomer Class. Marked as 'Persistable'Option ExplicitPublic Name As StringPublic Age As IntegerPublic Address As StringPrivate Sub Class_ReadProperties(PropBag As PropertyBag)    Name = PropBag.ReadProperty("Name")    Age = PropBag.ReadProperty("Age")    Address = PropBag.ReadProperty("Address")    MsgBox "Person read!!"End SubPrivate Sub Class_WriteProperties(PropBag As PropertyBag)    PropBag.WriteProperty "Name", Name    PropBag.WriteProperty "Age", Age    PropBag.WriteProperty "Address", Address    MsgBox "Person Written!!"End SubPrivate Sub Class_Initialize()    MsgBox "CCustomer Class_Initialize"End SubPrivate Sub Class_Terminate()    MsgBox "CCustomer Class_Terminate"End Sub				
هذه الفئة نموذج لا يقوم بأي شيء ما عدا معلومات ذاكرة التخزين المؤقتة. في سيناريو الواقع ولكن، فلديك على الأرجح أساليب أخرى (و لم مربعات رسائل في Class_Initialize!).

الآن افترض أن هناك كائن تم تصميمه من أجل الاستخدام الملقم. هذا الكائن يسمى Orders.COrder في ملف منفصل يسمى Orders.dll و يحتوي على دالة البرمجية بالتعليمة البرمجية التالية:
Public Sub AddOrder(ByVal ItemID As Long, ByVal Amount As Double, ByVal Customer As Customer.CCustomer)        MsgBox "Customer order for item '" & ItemID & "' for " & Customer.Name    End Sub				
لاحظ أن معلومات العميل الترتيب مباشرة تم تعيينها على أنها كائن من النوع Customer.CCustomer. الدخول في العالم الحقيقي، يمكنك من المحتمل أن يكون في مهاترات بعض الأنشطة قاعدة البيانات في هذا الأسلوب. ومع ذلك، فإن كل ما تقوم به رفع مربع رسالة في هذه العينة.

وهناك الأخير ولكن لا على الأقل تطبيق EXE للعميل. كافة لهذا هو نموذج زر أمر كتابة التعليمات البرمجية التالية:
    Dim oOrder As COrder        Dim oCust As CCustomer    Set oCust = New CCustomer    oCust.Name = "Eduardo A. Jezierski"    oCust.Age = 23    oCust.Address = "One Microsoft Way, Redmond, WA"        Set oOrder = New COrder        oOrder.AddOrder 123, 100, oCust    Set oOrder = Nothing        Set oCust = Nothing				
قل تكوين مكون "الطلبيات" الخاص بك داخل من COM + ، إضافة إلى تطبيق COM +. عند قيام مستخدم بالنقر فوق الزر الموجود على العميل, يحدث ما يلي:
  1. (رفع مربع الرسالة CCustomer Class_Initialize) إنشاء كائن CCustomer ويتم تعبئة العميل.
  2. يتم إنشاء كائن COrder.
  3. تم تنفيذ الأسلوب AddOrder في COM + التطبيق.
  4. يظهر مربع رسالة تفيد بأن "ترتيب العملاء العنصر '123' Eduardo Jezierski أ".
  5. إتلاف مثيل COrder.
  6. سيتم إتلاف مثيل CCustomer إحضار أعلى مربع الرسالة CCustomer Class_Terminate فرعية.

إحضار في قوائم الانتظار

ولذلك ماذا يحدث الآن إذا إحضار على المكونات ؟

لاختبار ذلك، أولاً تكوين مكون COrder كما في قائمة الانتظار. راجع مقالة قاعدة معارف Microsoft التالية للحصول على إرشادات:
246825كيفية تكوين تطبيق COM + عن المكونات
بعد ذلك تعديل تطبيق العميل بحيث المكونات إنشاء في قائمة الانتظار. للقيام بذلك، قم بتغيير خط حيث يتم إنشاء COrder أن كما يلي:
Set o = GetObject("queue:/new:Orders.COrder")				
هذا بشكل فعال يعطيك كائن COrder "stand-in" التي سيتم تسجيل لاستدعاءات الأسلوب سيتم إرسال هذه إلى كائن COrder تجلس في تطبيق COM +.

يبقى باقي التطبيق نفسه. عند اختبار أنه على الرغم من ذلك، يحدث مجموعة مختلفة جداً من الأحداث:
  1. أولاً، يتم إنشاء كائن العملاء مع تعبئة العميل.
  2. يتم إنشاء مثيل مسجل في قائمة انتظار COrder باستخدام دالة GetObject باللقب المحدد.
  3. تم استدعاء أسلوب AddOrder. مسجل QC الذي يعمل كـ COrder ، يأخذ في الكائن العملاء يحصل به Class_WriteProperties استدعاء الدالة بحيث الدائمة حالته ، مع كافة المعلمات الأخرى (ItemID و مبلغ).
  4. يتم تعيين مثيل مسجل COrder إلى أي شيء. عند هذه النقطة كافة يتم حزم المكالمات استدعاء عليها (فقط AddOrder في هذه الحالة) مع رمز أمان مميز العميل معلومات أخرى الملتفة في رسالة خادم انتظار الرسائل لـ Microsoft (MSMQ) ، وإرسال إلى الوجهة.
  5. الحاجة انتهاء المهمة الخاصة به من يلغي مثيل العميل والعميل انتهاء العمل بها.

    meanwhile...

  6. حالما يتم إرسال الرسالة التي تفترض أن تصل أخيراً قائمة انتظار التطبيق المقصود.
  7. لأن التطبيق قد تم تعيينه "الاستماع" لرسائل بالكشف عن وصول رسالة MSMQ مع figures ينتمي إلى COrder فئة المستخدمة من قبل المستخدم س. بعد القيام الوصول يتحقق بإنشاء مثيل COrder على الملقم.
  8. الآن يبدأ جزء "القراءة" من القصة. QC يبدأ اللاعب استدعاء الأساليب مسجل المخزنة في الرسالة.
  9. في هذه الحالة، تعتبر الطريقة AddOrder فقط. ومع ذلك، نظرًا لأن تتضمن المعلمات كائن العملاء ، أولاً إنشاء مثيل CCustomer و توجيه إلى "تحميل" نفسه خلال Class_ReadProperties الدالة.
  10. بمجرد تحميل المثيل المشغل بالفعل استدعاء الأسلوب AddOrder على كائن COrder حقيقي بحيث تعمل chores الخاص به. يمرر مثيل العملاء جديد كوسيطة استدعاء ثم بمجرد إجراء المكالمة فإنه يلغي هذا المثيل المؤقتة. ثم استدعاء أي استدعاءات المسجلة الأخرى بطريقة مشابهة ومن ثم بتحرير الكائن COrder ومثيلات CCustomer المؤقتة.
هو فعلاً التعليمات البرمجية COrder تنفيذها دون إدراك أن المثيل العملاء أنه تم استخدام مثيل آخر المحليون الكائن العملاء نفسه تم تخزينها في العميل قد دقائق أو ساعات منذ. بهذه الطريقة، يتم الاحتفاظ طراز بأكمله غير متزامن.
في قائمة الانتظار وسيطة المعلمة كائن QC تستمر MSMQ COM +

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 246627 - آخر مراجعة: 02/21/2014 00:39:05 - المراجعة: 2.7

Microsoft Visual Studio 6.0 Enterprise Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0

  • kbnosurvey kbarchive kbmt kbcomplusqc kbhowto KB246627 KbMtar
تعليقات