SharePoint 2010 כלול פתרון חדש: Sandboxed Solutions ("פתרון ארגז החול"), המאפשר "בידוד" של הקוד בהיבט של אבטחה וצריכת משאבים, כדוגמת: CPU, זיכרון, שאילתות לבסיס הנתונים של ה SharePoint. משמעות הדבר שהקוד יכול לרוץ באופן בטוח, מבלי להשפיע על יציבות שרתי ה SharePoint, ומאפשר למנהלי החווה שליטה ובקרה על ה Sandbox solutions שמותקנים בחווה.
הקוד של Sandbox Solution, פועל ב Lower trust level, ודבר זה מגביל את הפעולות שהקוד יכול לבצע, לדוגמה:
- ה Sandbox solution מוגבל למספר מצומצם של Namespaces שניתן לעבוד איתם
- לא ניתן לגשת למשאבים מחוץ ל SharePoint - כדוגמה בסיסי נתונים מותאמים אישית, קריאות ל Web Services, כתיבה וקריאה מהדיסק ויומן האירועים של השרת ...
- ניתן לגשת לאובייקטים הנמצאים ברמה מתחת ל SPSite (כדוגמת SPWeb ו SPList), אבל לא ניתן לגשת לאובייקטים הנמצאים ברמה מעל ה SPSite (כדוגמת SPFarm)
לרשימה המלאה של האפשרויות: Sandboxed Solutions
האם ניתן לעקוף מגבלות אלו? כן!
ניתן לגשת למקורות מידע מחוץ ל SharePoint, בדרך פשוטה, באמצעות ה BCS שהינו חלק מ SharePoint 2010 Foundation. ה SharePoint מתייחס למקור נתונים זה, בדומה לכל רשימה אחרת הנמצאת ב Site Collection.
במידה ויש צורך לבצע פעולות מתקדמות, דוגמת קריאות ל Web Services, גישה למידע שנמצא ב Site Collection אחר מזה שה Sandbox Solution מותקן - גם לזה יש פתרון.
ניתן להריץ את הקוד מתוך Full trust proxies, לשם כך יש לבצע את הפעולות הבאות:
1) ליצור פרויקט SharePoint ריק ולבחור Deploy as farm solution
a. ליצור מחלקה שיורשת מ SPProxyOperation – מחלקה זו מבצעת את הקוד אותו רוצים להריץ מתוך ה Sandbox Solution
b. ליוצר מחלקה נוספת יורשת מ SPProxyOperationArgs – מחלקה זו תשתמש כאמצעי להעברת פרמטרים בין שני הפרויקטים/מודולים
c. להגדיר ב AllowPartiallyTrustedCallers בקובץ ה AssemblyInfo
2) לרשום את ה ProxyOperation ב SharePoint
3) ליצור פרויקטים נוספים לפי הצורך, מסוג SharePoint Sandbox solution, שיבצעו קריאות ל DLL הנ"ל
כל אחת מהשיטות הנ"ל מוסברת בהרחבה במאמר: Hybrid Approaches
מצ"ב תיאור התהליך וצילומי מסך מפרויקט דוגמה, בו יוצרים Webpart, הכותב נתונים לדיסק שבשרת (מה שלא ניתן לעשות באופן סטנדרטי בפרויקט Sandbox solution).
שלב 1) יצירת פרויקט SharePoint סטנדרטי, לדוגמה בשם Contoso.SP.FullTrustCode

שלב 2) הגדרת AllowPartiallyTrustedCallers בקובץ ה AssemblyInfo.cs

שלב 3) יצירת מחלקה בשם MyFullTrustCodeArguments שיורשת מ SPProxyOperationArgs

שלב 4) יצירת מחלקה נוספת בשם MyFullTrustCode שיורשת מ SPProxyOperation

שלב 5) פריסת ה Solution בשרת באמצעות STSADM או PowerShell

שלב 6) רישום המחלקה הנ"ל ב SharePoint, באמצעות פקודת ה PowerShell הבאה:
שלב 7) יצירת פרויקט Sandbox Solution
שלב 8) הוספת webpart לפרוייקט, שצורך את ה MyFullTrustCode. הדבר מתבצע באמצעות קריאה לשגרה בשם SPUtility.ExecuteRegisteredProxyOperation והעברת שלושת הפרמטרים הבאים: Assembly, Class Name ופרמטרים לאתחול

לפרטים נוספים:
יואל