سؤال

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

لم أجد أي طريقة مدعومة للقيام بذلك وأنا عالق في البحث عن طريقة غير مدعومة :-)

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

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

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

تحرير 2:يجب أن تحتوي قاعدة بيانات Biztalk Management على المعلومات التي أحتاجها.إنه يعرف المضيفين الذين بدأوا على أي خادم و(ربما) معرف العملية لهذه العمليات المضيفة.إذا كان لدى شخص ما مؤشر حيث يمكنني البدء في البحث هناك، فمن شأنه أن يساعدني أيضًا.

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

المحلول

بقدر ما أعرف، لا توجد طريقة "بسيطة" للقيام بذلك.إحدى الطرق (الرجعية إلى حد ما) للحصول على هذه المعلومات هي استخدام ExplorerOM API للاستعلام عن بيانات تكوين الإدارة ومعرفة المكان الذي تقوم بالتنفيذ فيه والمضيف/المعالج الذي تعمل فيه.

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

من باب الفضول، لماذا تحتاج هذه المعلومات؟

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