سؤال

أحتاج إلى إنشاء عملية "معاملات" باستخدام واجهة برمجة تطبيقات خارجية لا تدعم معاملات COM+ أو .NET (نقطة المشاركة على وجه الدقة)

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

هل لدى أي شخص أي اقتراحات لأنماط التصميم أو الهياكل التي يمكن أن تكون مفيدة لهذا الغرض؟

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

المحلول

إذا تم إجراء التغييرات على نموذج كائن SharePoint، فيمكنك استخدام حقيقة أن التغييرات لم يتم الالتزام بها حتى تقوم باستدعاء Update() طريقة الكائن المعدل، مثل SPList.Update() أو SPWeb.Update().

وإلا فإنني سأستخدم يأمر نمط التصميم.الفصل 6 في رئيس أنماط التصميم الأول حتى أنه يحتوي على مثال ينفذ وظيفة التراجع.

نصائح أخرى

يدعم نمط أمر GoF العمليات غير القابلة للإلغاء.

أعتقد أنه يمكن استخدام نفس النمط للعمليات المتسلسلة (الأوامر المتسلسلة).

طريقة أخرى جيدة للتراجع/التراجع هي نمط تذكار.يتم استخدامه عادةً لالتقاط لقطة للكائن في وقت معين والسماح بإرجاع حالة الكائن إلى التذكار.

بجوار GOF نمط الأوامر قد ترغب أيضًا في إلقاء نظرة على البرنامج النصي للمعاملة نمط من ف من EAA.

ربما ينبغي عليك إنشاء أمر مركب (أو برنامج نصي للمعاملة) يتم تنفيذه بالتسلسل.

قد ترغب في إلقاء نظرة على مدير الموارد التعويضية:

http://msdn.microsoft.com/en-us/library/8xkdw05k(VS.80).aspx

إذا كنت تستخدم C++ (أو أي لغة أخرى مع تنفيذ المدمر الحتمي عند انتهاء النطاقات) فيمكنك إلقاء نظرة على حراس النطاق.من المحتمل أيضًا أن يتم تكييف هذه التقنية مع .NET من خلال جعل ScopeGuard ينفذ IDisposable ويرش عبارات "الاستخدام" حسب الحاجة.

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