Your SlideShare is downloading. ×
0
Best practices with SharePoint
2010 Sandboxed Solutions
Toni Frankola
SharePoint Services MVP, Croatia
http://www.sharepoi...
About speaker…
Agenda
• Intro to SharePoint SandBoxed solutions
• SandBoxed solutions for DEVs
• SandBoxed solutions for IT PROs
• Demo
The problem in v2007 (1)
• Case study:
– A Customer wants to use WSS 3.0 for group
collaboration in hosting environment…
–...
The problem in v2007 (2)
• In non-hosted environments:
– Using GAC or Full-trust for everything
– One webpart could jeopar...
The solution
SandBoxed Solutions
• Isolated SP process
(User Code Service)
• Exposes a subset of
Microsoft.SharePoint namespace
• Manag...
HELLO WORLD FROM
SANDBOXED SOLUTION
DEMO
SANDBOXED SOLUTIONS
- DEV PERSPECTIVE
How stuff works
Worker Service
(SPUCWorkerProcess.exe)
Host Services
(SPUCHostService.exe)
Execution Manager
(Inside Appli...
Supported in Sandboxed Solutions
• Web Parts (no Visual WPs)
• Lists
• List Templates
• Custom Actions
• Workflows
• Event...
Supported API
• All of the Microsoft.SharePoint namespace, except:
– SPSite constructor
– SPSecurity object
– SPWorkItem a...
BP1 – Proper Tools
• Visual Studio 2010 SharePoint Power Tools
– adds Visual Web Part
– SandBoxed solution validation (mus...
BP2 – VS2010 deployment configurations
• Generate SandBoxed/Farm solutions from
same code base (blog post):
BP 3 – How to detect if SandBoxed?
• No OOTB, but:
AppDomain.CurrentDomain.FriendlyName.Contains("Sandbox")
BP4 – „Sandboxed is default”
• When developing:
– Use Sandboxed whenever possible
• Faster deployment (no Recycling requir...
BP5 – Use it for „Small fixes”
• Auto apply theme
• Auto apply language settings
• JQuery loader
• UI adjustments (e.g. hi...
Sandboxed vs. JQuery copy/paste
• Version control (e.g. via VSTS)
• SharePoint Feature Versions
• Easy to deploy to differ...
Not supported
• Off-box connections, http, web services, etc
• ADO.net
• Enterprise features (Search, BCS, etc.)
• Threadi...
SANDBOXED SOLUTIONS
- ITPRO PERSPECTIVE
Very bad WebPart
• Infinite loop example:
• Farm solution = problem
• Sandboxed solution:
Monitoring 101
• Site Collection Admin
• Farm admin
Monitored Resources
Metric Name Description Units
Resources
Per Point
Hard
Limit
AbnormalProcessTerminationCount Process g...
BP6 – Resource usage
• Resource: SharePointDatabaseQueryCount
– Number of SharePoint DB Queries Invoked
– 20 = 1 point
• D...
Benefits for ITPROs
• Stability of SharePoint farm cannot be
jeopardized
• You can control which web parts will allowed
• ...
BP7 – for IT PROs
• Do not enable if not necessary
• Configure permissions
• In hosting env. (from business perspective):
...
BEYOND SANDBOX
Sandboxed solution limitations
• 3rd party .NET components do not work well
with Sandboxed Solutions
– Solutions: Revert b...
BP8.1 – Extending Sandbox
• Trusted proxies:
SPUCWorkerProcess.exe
BP8.1 – Extending Sandbox (2)
• Code sample:
public class FileProxy : SPProxyOperation {
public override object Execute(SP...
BP8.2 – Extending Sandbox
• Using SharePoint Client API:
SPUCWorkerProcess.exe
http://spservices.codeplex.com
Samples
Source: www.sharepointaccelerators.com
Source: www.21scrum.com
Active Resolved Closed
SandBoxed solution case study
Email Inbox Issues
Contacts
Confirmation Email
SANDBOXED SOLUTION
EXAMPLE
DEMO
Conclusion
• Use whenever possible…
• …But know the limits!
• Happy programming!
QUESTIONS?
THANK YOU!
Toni Frankola
SharePoint Services MVP, Croatia
http://www.sharepointusecases.com
Toni.frankola@acceleratio.hr
@...
Upcoming SlideShare
Loading in...5
×

Best practices with SharePoint 2010 sandboxed solutions

4,558

Published on


SharePoint 2010 sandboxed solutions changed the way how we can develop applications on top of SharePoint platform. This session will talk about sandboxed solutions architecture, do's and don'ts, types of solutions that should be built as sandboxed solutions. We are going to discuss tools that can help us develop solutions in a sandbox and tricks that can assist us to streamline code development and application life cycle. The session will be accompanied with series of demoes that are going to show some of best and worst practices with SharePoint solutions.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,558
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
100
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide
  • HUOJ
  • Resource Per Point is how much this contributes to the point limit per day for the site collection
    Hard Limit is how much of this resource a solution can use in a single invocation before it is terminated – a maximum use of quota in a single invocation
    Invocation count is used to measure the per-instance cost of a solution for purposes of reporting and assigning to run-time “tiers” for farms that want to separate solutions into multiple different sandbox processes – there is only one by default.
  • Source: http://blah.winsmarts.com/2009-12-SharePoint_2010_Sandboxed_Solutions__Full_Trust__Proxies.aspx
  • Transcript of "Best practices with SharePoint 2010 sandboxed solutions"

    1. 1. Best practices with SharePoint 2010 Sandboxed Solutions Toni Frankola SharePoint Services MVP, Croatia http://www.sharepointusecases.com Toni.frankola@acceleratio.hr @ToniFrankola
    2. 2. About speaker…
    3. 3. Agenda • Intro to SharePoint SandBoxed solutions • SandBoxed solutions for DEVs • SandBoxed solutions for IT PROs • Demo
    4. 4. The problem in v2007 (1) • Case study: – A Customer wants to use WSS 3.0 for group collaboration in hosting environment… – …with Custom permissions, views, web-parts • Your only option for hosted WSS 3.0: – SP Designer 2007 + Javascript (JQuery)
    5. 5. The problem in v2007 (2) • In non-hosted environments: – Using GAC or Full-trust for everything – One webpart could jeopardize entire farm • „Performance Issues” with entire farm
    6. 6. The solution
    7. 7. SandBoxed Solutions • Isolated SP process (User Code Service) • Exposes a subset of Microsoft.SharePoint namespace • Managed via Site Coll. Solutions gallery
    8. 8. HELLO WORLD FROM SANDBOXED SOLUTION DEMO
    9. 9. SANDBOXED SOLUTIONS - DEV PERSPECTIVE
    10. 10. How stuff works Worker Service (SPUCWorkerProcess.exe) Host Services (SPUCHostService.exe) Execution Manager (Inside Application Pool) IIS (WPW3.EXE) FRONT END BACK END Subset-Model RequestFull-Model Request
    11. 11. Supported in Sandboxed Solutions • Web Parts (no Visual WPs) • Lists • List Templates • Custom Actions • Workflows • Event Receivers • Content Types • Site Columns • … Source: http://msdn.microsoft.com/en-us/library/ff872402.aspx
    12. 12. Supported API • All of the Microsoft.SharePoint namespace, except: – SPSite constructor – SPSecurity object – SPWorkItem and SPWorkItemCollection objects – SPAlertCollection.Add method – SPAlertTemplateCollection.Add method – SPUserSolution and SPUserSolutionCollection objects – SPTransformUtilities object – Microsoft.SharePoint.Navigation namespace • All of the Microsoft.SharePoint.Utilities namespace, except – SPUtility.SendEmail method – SPUtility.GetNTFullNameandEmailFromLogin method – Microsoft.SharePoint.Workflow namespace • All of the Microsoft.SharePoint.WebPartPages namespace, except – SPWebPartManager object – SPWebPartConnection object – WebPartZone object – WebPartPage object – ToolPane object – ToolPart object Source: http://msdn.microsoft.com/en-us/library/ff872402.aspx
    13. 13. BP1 – Proper Tools • Visual Studio 2010 SharePoint Power Tools – adds Visual Web Part – SandBoxed solution validation (must have!) • CKSDEV add-on – Trusted proxy – Deployment options • Other must have stuff: – Visual Studio 2010 Productivity Pack – SP Dispose Checker (how to integrate with VS)
    14. 14. BP2 – VS2010 deployment configurations • Generate SandBoxed/Farm solutions from same code base (blog post):
    15. 15. BP 3 – How to detect if SandBoxed? • No OOTB, but: AppDomain.CurrentDomain.FriendlyName.Contains("Sandbox")
    16. 16. BP4 – „Sandboxed is default” • When developing: – Use Sandboxed whenever possible • Faster deployment (no Recycling required) – Separate farm/sandboxed solutions
    17. 17. BP5 – Use it for „Small fixes” • Auto apply theme • Auto apply language settings • JQuery loader • UI adjustments (e.g. hide or add something)
    18. 18. Sandboxed vs. JQuery copy/paste • Version control (e.g. via VSTS) • SharePoint Feature Versions • Easy to deploy to different environments • Can be deployed to site coll. level
    19. 19. Not supported • Off-box connections, http, web services, etc • ADO.net • Enterprise features (Search, BCS, etc.) • Threading • P-Invoke • IO • Other sites (site collections)
    20. 20. SANDBOXED SOLUTIONS - ITPRO PERSPECTIVE
    21. 21. Very bad WebPart • Infinite loop example: • Farm solution = problem • Sandboxed solution:
    22. 22. Monitoring 101 • Site Collection Admin • Farm admin
    23. 23. Monitored Resources Metric Name Description Units Resources Per Point Hard Limit AbnormalProcessTerminationCount Process gets abnormally terminated Count 1 1 CPUExecutionTime CPU exception time Seconds 3,600 60 CriticalExceptionCount Critical exception fired Number 10 3 InvocationCount Number of times solution has been invoked Count N/A N/A PercentProcessorTime Note: # of cores not factored in Percentage Units of Overall Processor Consumed 85 100 ProcessCPUCycles CPU Cycles 1E+11 1E+11 ProcessHandleCount Windows Handles 10,000 1,000 ProcessIOBytes (Hard Limit Only) Bytes written to IO Bytes 0 1E+08 ProcessThreadCount Number of Threads in Overall Process Threads 10,000 200 ProcessVirtualBytes (Hard Limit Only) Memory consumed Bytes 0 1E+09 SharePointDatabaseQueryCount SharePoint DB Queries Invoked Number 20 100 SharePointDatabaseQueryTime Amount of time spent waiting for a query to be performed Seconds 120 60 UnhandledExceptionCount Unhanded Exceptions 50 3 UnresponsiveprocessCount We have to kill the process because it has become unresponsive Number 2 1
    24. 24. BP6 – Resource usage • Resource: SharePointDatabaseQueryCount – Number of SharePoint DB Queries Invoked – 20 = 1 point • Default day limit 300 points • Best practice: Adjust the limits to the env.
    25. 25. Benefits for ITPROs • Stability of SharePoint farm cannot be jeopardized • You can control which web parts will allowed • Less administration required – Empowering Site Coll. owners
    26. 26. BP7 – for IT PROs • Do not enable if not necessary • Configure permissions • In hosting env. (from business perspective): – Gain competitive advantage:
    27. 27. BEYOND SANDBOX
    28. 28. Sandboxed solution limitations • 3rd party .NET components do not work well with Sandboxed Solutions – Solutions: Revert back to JQuery – JQuery charts (licensing!):
    29. 29. BP8.1 – Extending Sandbox • Trusted proxies: SPUCWorkerProcess.exe
    30. 30. BP8.1 – Extending Sandbox (2) • Code sample: public class FileProxy : SPProxyOperation { public override object Execute(SPProxyOperationArgs args) { if (args != null) { FileArgs fileArgs = args as FileArgs; FileStream fStream = new FileStream(@"C:PathSampleFile.txt", FileMode.CreateNew); fStream.Write(System.Text.ASCIIEncoding.ASCII.GetBytes(fileArgs.FileContents), 0, fileArgs.FileContents.Length); fStream.Flush(); fStream.Close(); return fileArgs.FileContents; } else return null; } } Source: http://blah.winsmarts.com/2009-12-SharePoint_2010_Sandboxed_Solutions__Full_Trust__Proxies.aspx
    31. 31. BP8.2 – Extending Sandbox • Using SharePoint Client API: SPUCWorkerProcess.exe http://spservices.codeplex.com
    32. 32. Samples Source: www.sharepointaccelerators.com Source: www.21scrum.com
    33. 33. Active Resolved Closed SandBoxed solution case study Email Inbox Issues Contacts Confirmation Email
    34. 34. SANDBOXED SOLUTION EXAMPLE DEMO
    35. 35. Conclusion • Use whenever possible… • …But know the limits! • Happy programming!
    36. 36. QUESTIONS?
    37. 37. THANK YOU! Toni Frankola SharePoint Services MVP, Croatia http://www.sharepointusecases.com Toni.frankola@acceleratio.hr @ToniFrankola
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×