حيث يجب تثبيت MSDTC في حالة المعاملات الموزعة
سؤال
أحتاج إلى الحفاظ على المعاملات الموزعة في طلبي
افترض أن 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 صعبة للغاية لتكوينها بكل الإعدادات المختلفة الممكنة. آمل أن يساعدك ذلك في البدء.