سؤال

وأنا أبحث عن مواد أو منتدى أو بلوق وظيفة التعامل مع SharePoint وموضوع السلامة؟ أنا متأكد تماما أن هناك بعض الجوانب الخاصة فيما يتعلق بالسلامة موضوع التي يجب مراعاتها عند العمل مع نموذج كائن شير.

والحقيقة لم أجد الكثير من المعلومات حول هذا الموضوع، حتى الان.

ولذا فإنني أتطلع إلى إجاباتك.

وداعا، فلو

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

المحلول 3

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

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

في المثال التالي سوف web11.Update() التعليمات بطرح استثناء أقول لك أن SPWeb ممثلة من خلال web12 كائن تم تغيير الوقت نفسه.

SPSite siteCol1 = new SPSite("http://localhost");      

SPWeb web11 = siteCol1.OpenWeb();
SPWeb web12 = siteCol1.OpenWeb();                               

web12.Title = "web12";
web12.Update();

web11.Title = "web11";
web11.Update();

وهكذا يبدو أن السلامة خيطي ليتم التعامل معها من قبل نموذج الكائن نفسه. بالطبع كان لديك للتعامل مع الاستثناءات التي قد ألقيت بسبب ظروف السباق.

نصائح أخرى

وهناك مطبات أسوأ بكثير في شير OM من سلامة موضوع مجرد القديمة. إيلاء اهتمام خاص للعمل مع كائنات التي تم استردادها من الخصائص. يجب عليك <م> دائما الحفاظ على مؤشر إلى كائن أثناء العمل عليه. على سبيل المثال:

var list = web.List["MyList"]
list.Items[0]["Field1"] = "foo"
list.Items[0]["Field2"] = "bar"
list.Items[0].Update() // nothing is updated!

وقد تتوقع أن يتم تحديث Field1 وField2 بواسطة استدعاء تحديث النهائي ()، ولكن كلا. في كل مرة كنت تستخدم مفهرس، يتم إرجاع مرجع جديد إلى SPListItem.

والطريقة الصحيحة:

SPListItem item = list.Items[0]
item["Field1"] = "foo"
item["Field2"] = "bar"
item.Update() // updated!

ومجرد بداية. جوجل أيضا عن المخاطر التي تحيط نمط IDisposabe / التخلص.

و-Oisin

وهناك قضية واحدة أنني كثيرا ما واجهت: عند كتابة الخاصة الاستقبال قائمة البند الخاص بك، عليك أن تكون على بينة من حقيقة أن بعض الأحداث النار بشكل متزامن، على سبيل المثال ItemAdded() وهو ما يعني <م> التعليمات البرمجية قد تكون قيد التشغيل في مواضيع متعددة في نفس الوقت.

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