SharePoint 2010 - أفضل الممارسات: كيفية التعامل مع المجالس [مناقشة]

sharepoint.stackexchange https://sharepoint.stackexchange.com//questions/36107

سؤال

هناك مناقشة تستمر لسنوات Serveral عند البرمجة مقابل SharePoint.

في Visual Studio، يمكنك إضافة محلول SharePoint، والتي سيتم تحويلها إلى ملف .wsp للنشر. سيحتوي ملف .wsp هذا على جميع ملفات التجميع المطلوبة.

كيف يمكنك أن تقوم رفاق بمسافات CodeBehind ل: مستقبل الحدث، جهاز استقبال ميزة، صفحة ASPX؟

هل تضع ملف .cs داخل مجلد SharePoint الخاص بك؟ (وبهذه الطريقة ستحتاج إلى نشر .dll منك Project SharePoint Aswell)

أو هل نقل كل منطق التعليمات البرمجية إلى واحد (أو أكثر) مشروع (مقالات) مختلفة (مكتبات الفصل)؟

ما تفعله على سبيل المثال في المثال الثاني:

  • انقر بزر الماوس الأيمن، إضافة عنصر جديد، مستقبل الحدث
  • حرك ملف .cs إلى مشروع مختلف
  • قم بتغيير معلومات التجميع داخل ملف Elements.xml

    في المثال الأول، لا نتحرك هذه الملفات، فقط احتفظ بها كما يضيفها VS2010.

    أنا لا أقول الطريقة التي أفضلها، أريد فقط الحصول على الكثير من المدخلات. لا تقول فقط "الخيار 2 سيء". أنا حقا أود أن أعرف لماذا ولماذا لا!

    شكرا

    تحرير:

    سؤالي هنا لا علاقة له بالملحقات وما إلى ذلك

    أنا أتحدث عن التأكد من عدم احتواء حل SharePoint الخاص بك أي ملف .cs. وبهذه الطريقة لا يجب أن تكون هناك تجميع في GAC لهذا الحل.

    مثال: لدي عميل .sps.intranet.solution (= الحل لتوليد WSP، لذلك عنصر فارغ مشروع فارغ).

    إذا قمت ببساطة بإضافة ميزة واستقبال ميزة، يتم إنشاء ملف .cs و (بعد النشر) يتم وضع ملف customer.sps.intranet.dll داخل ذاكرة التخزين المؤقت للتجميع العالمي.

    هذا هو ما لا يريده بعض الناس !!! (أنا لا أفهم لماذا، لهذا السبب أنا أسأل بعض الآراء).

    لحل هذا، يقومون بإنشاء مشروع داخل هذا الحل المسمى: "Customer.SPS.intranet.logic"، سيحتوي هذا الحل على جميع ملفات CodeBehind الميزات.

    هذا يعني أننا يتعين علينا تحرير ملف Template.xml الميزة لاستخدام فئة الاستقبال الموجودة في مشروع "المنطق". بهذه الطريقة نحافظ على "customer.sps.intranet.solution" ونحن لن نستخدمها فقط للتعبئة والتغليف. لذلك لن يكون هناك تجميع منتشر على GAC المسمى "customer.sps.intranet.sold.dll.dll" ... بدلا من ذلك، يتم نشر مجموعة Customs.Sps.intranet.logic.dll في GAC.

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

المحلول

AAAH، والسؤال الأبدية للحلول و DLL. :-) لماذا تقسيم، لماذا لا، ومتى؟ أنا لا أعمل أجهزة الصراف الآلي، أنا في عطلة، لكن كما طلبت مني إلقاء نظرة، سألخص فقط قليلا من أخذ بعيدا وأخذ بلدي. لذلك تعتمد إجابتي على تجربة شخصية وعرضها. (آسف stackexhange)

x لا تقسيم "رمز خلف" و UI يؤدي إلى الشفرة الصعبة للحفاظ عليها. شيء رأيته في مشاريع مختلفة هو أن المطورين الذين لا يقطرون لا يعاملون جيدا مع "رمز خلف" (C # (C # بجوار XML / ASPX) يميلون إلى كتابة المزيد من المنطق في التعليمات البرمجية الخارجة عند الوصول المباشر إلى UI. في مشروع معين، رأيت صفحة "جديدة" من 1500 خطوط (وهي ضخمة بالفعل) وتمثل صفحة "تحرير" في الأساس نسخة من الصفحة الجديدة. تأكد من أن هذه "البرمجة السيئة"، فهي ليست متأصلة لوضع التعليمات البرمجية وراء القطع الأثرية. لكن العادات السيئة من الصعب تغييرها وهذا النموذج من العمل يمكن أن يساعد في جعل الأمور أسوأ. في هذه الحالة، جعل فئة CS أولا كعنصر تحكم ولديها نوع من الطبقة الموروثة لفئة التحرير، كان من السهل الحفاظ عليها. بمجرد إنشاء، يمكنك جعل صفحات ASPS الخاصة بك يرث من هذه الفئات.

x لا تقسيم "رمز وراء" و UI يؤدي إلى فصول مع الكثير من المنطق. شيء آخر في هذا المشروع هو أن كل من الصفحة الجديدة مثل صفحة التحرير لديها اتصالات مباشرة بقواعد بيانات SQL الخارجية. استخدموا اتصالات SQL المباشرة التي أنشأت النفقات العامة في التعليمات البرمجية والصيانة. قد ساعد نهج الطبقات بشكل كبير.

x تطبيق الطبقات يحتاج إلى تجميعات منفصلة. حسنا، الطبقات جيدة! هل تحتاج إلى تجميع منفصل لذلك؟ ليس بالضرورة. يمكنك تجميع المنطق الخاص بك، ويقوم البيانات بطبقة، إلخ في مساحات / مساحات أسماء منفصلة داخل تجميعك. تلك هي طبقات كذلك. "ولكن لماذا يجب أن أقسيمها؟" يميل إلى أن تكون ممارسات جيدة. لماذا ا؟ حسنا، يمكنك تجنب الاستخدام العرضي لأكثر منطق أعمق (مثل اتصالات SQL)، حيث يتم الرجوع إلى هذا المنطق فقط في طبقة DA. ميزة أخرى هي أنه من المحتمل أن يسهل استبدال الطبقات العليا بطبقة أخرى. قل واجهة مستخدم أخرى أو واجهة متنقلة. يمكنك دفعها إلى أبعد من ذلك وتجعل الطبقات السفلية أكثر عام، حتى تتمكن من استخدامها لاحقا. هكذا يمكن إنشاء أطر أحمق و EF.

x "هذا لطيف، ولكن هذا مجرد تطوير ASP.NET." الحق، ولكن يمكن استخدام نفس المبادئ والأفكار عند تطوير القطع الأثرية SharePoint، مثل أجهزة الاستقبال. لماذا لا تعمل طريقك إلى أجهزة استقبال عامة يمكن أن تكون معلمة مع خصائص ميزة أو خصائص المجلد؟ يؤدي إعادة استخدام المنطق في الغالب إلى حلول أكثر استقرارا.

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

إذن لتلخيص 2C (والتغيير ؛-))، يمكنك استخدام التعليمات البرمجية وراء المد مباشرة إلى قطعة أثرية، لكنني أفضل ذلك. أنا بدلا من إعادة استخدامه، رمز عام واختباره، من وجود أجهزة استقبال مطابقة تلقائية ورمز القطع الأثرية (على الرغم من أنك لا تحتاج إلى تغيير قالب ميزة XML في الحالة اليدوية، كما يمكنك إضافة جهاز استقبال الميزة في الخصائص) و سهولة تحديد موقع (أستخدم الفورية للذهاب إلى VS2010) ولكن في النهاية، كل شيء عن ما يفضله أنت ومشروعك. : -)

نصائح أخرى

في الواقع، شخصيا، لم يواجه مطلقا حلا حيث تم نقل الملفات من محلول SharePoint خارج المشروع، باستثناء ربما للحالات التي حددتها القطع القابلة لإعادة الاستخدام: E.G. طرق التمديد، رمز معالج الأحداث الأساسية. هناك أيضا سبب لعدم نقله، على سبيل المثال عادة ما يستخدم VS 2010 GUID مع الفصول الدراسية التي يتم تزيينها للعمل الداخلي على ذلك يربط المعالج، لذلك يمكن أن تنشئ التبعيات بشكل صحيح. أيضا، جميع الثنائيات، التي بنيت على أي حال، لذلك رمز - بجانب (لا مزيد من التعليمات البرمجية في SP2010) هو بناء بالفعل. إلى جانب تسجيل SafeControls (أجزاء الويب، عناصر التحكم المخصصة، وما إلى ذلك) لن يتم تسجيلها بشكل صحيح، حيث يمكن أن يشمل Visual Studio التجميعات الخارجية في الحزمة الخاصة بك، لكنه لن يستكشف بالضرورة تلك التجمعات في الكود الفعلي - ستحتاج إلى القيام بكل ذلك يدويا - سيئة للإنتاجية.

هذه هي الأفكار الأولية، قد تعود مع بعض أكثر، ولكن القاعدة السفلية: أنت لا تعيد إعادة استخدام هذه القطع - ثم تركها أفضل حيث يقترح VS. بدلا من التخطيط للمستقبل ما نوع الوظائف التي تنشرها، ما التبعيات التي لديك، ميزة نطاقات، ترتيب التنشيط، إلخ.

آمل أن يساعد، C: \ Marius

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