حيث يجب تثبيت MSDTC في حالة المعاملات الموزعة

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

  •  19-09-2019
  •  | 
  •  

سؤال

أحتاج إلى الحفاظ على المعاملات الموزعة في طلبي

افترض أن Service1 مثبت على Server1

[ServiceContract]
IService1
{
    [OperationContract]
    Operation1();
}

يتم تثبيت Service2 على Server2

[ServiceContract]
IService2
{
    [OperationContract]
    Operation2();
}

والعميل يستهلك الخدماتان

using (TransactionScope ts = new TransactionScope())
{
    Service1Proxy.Operation1();
    Service2Proxy.Operation2();
}

أين يجب أن أقوم بتثبيت MSDTC بالضبط، هل يجب تثبيته على Server1 و Server2 وعميل

هل يتطلب أي تكوين إضافي في هذه الحالة؟

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

المحلول

يجب عليك تمكين MSDTC على عملائك وخادمك 1، Server 2.

يجب أن تسمح للخارج في تكوين أمان MSDTC على عميلك.
يجب أن تسمح للبدء والخارج على الخوادم الخاصة بك.
إذا كان DB الخاص بك على جهاز منفصل، فيجب أن يسمح ذلك بالبدء.

مشكلة واحدة صادفت لاستخدام MSDTC، لا تنس السماح MSDTC في قائمة استثناء جدار الحماية الخاص بك.

بالنظر إلى مقتطف التعليمات البرمجية الخاصة بك، ستحتاج إلى إضافة عزلة TransactionFlow على واجهة التشغيل الخاصة بك أيضا.

هنا رابط جيد ل WCF مع المعاملات: المؤسسة: انتشار المعاملات

نصائح أخرى

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

وجد بحث Google forsory هذه الوثائق على MSDN: http://msdn.microsoft.com/en-us/magazine/cc163432.aspx.. وبعد تقول هذه الوثائق أنك تحتاج إلى سمات خاصة على واجهة الخدمة الخاصة بك لجعل حدود خدمة المعاملات الخاصة بك عبر الخدمة.

بقدر "تثبيت" MSDTC، لا تقوم بتثبيتها. يجب أن يكون بالفعل جزء من تثبيت Windows الخاص بك. ومع ذلك، لا تعمل MSDTC مع العملاء عن بعد على الشبكة بشكل افتراضي؛ هذا الإعداد هو لأغراض أمنية. إليك رابط يوضح كيفية تمكين MSDTC للعمل مع العملاء عن بعد في Windows Server 2003: http://support.microsoft.com/kb/817064.. وبعد للحصول على إصدارات أخرى من Windows، حاول googling عن "الوصول إلى شبكة MSDTC". أعتقد أنك ستحتاج إلى تعيين هذا التكوين على كل خادم يستضيف خدمة تريد تضمينها في معاملة عن بعد.

يمكن أن تكون خدمات WCF صعبة للغاية لتكوينها بكل الإعدادات المختلفة الممكنة. آمل أن يساعدك ذلك في البدء.

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