Your SlideShare is downloading. ×
Best practices with SharePoint 2010 sandboxed solutions
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Best practices with SharePoint 2010 sandboxed solutions

4,330
views

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,330
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
97
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
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

    • 1. Best practices with SharePoint 2010 Sandboxed Solutions Toni Frankola SharePoint Services MVP, Croatia http://www.sharepointusecases.com Toni.frankola@acceleratio.hr @ToniFrankola
    • 2. About speaker…
    • 3. Agenda • Intro to SharePoint SandBoxed solutions • SandBoxed solutions for DEVs • SandBoxed solutions for IT PROs • Demo
    • 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. 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. The solution
    • 7. SandBoxed Solutions • Isolated SP process (User Code Service) • Exposes a subset of Microsoft.SharePoint namespace • Managed via Site Coll. Solutions gallery
    • 8. HELLO WORLD FROM SANDBOXED SOLUTION DEMO
    • 9. SANDBOXED SOLUTIONS - DEV PERSPECTIVE
    • 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. 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. 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. 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. BP2 – VS2010 deployment configurations • Generate SandBoxed/Farm solutions from same code base (blog post):
    • 15. BP 3 – How to detect if SandBoxed? • No OOTB, but: AppDomain.CurrentDomain.FriendlyName.Contains("Sandbox")
    • 16. BP4 – „Sandboxed is default” • When developing: – Use Sandboxed whenever possible • Faster deployment (no Recycling required) – Separate farm/sandboxed solutions
    • 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. 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. 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. SANDBOXED SOLUTIONS - ITPRO PERSPECTIVE
    • 21. Very bad WebPart • Infinite loop example: • Farm solution = problem • Sandboxed solution:
    • 22. Monitoring 101 • Site Collection Admin • Farm admin
    • 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. 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. 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. BP7 – for IT PROs • Do not enable if not necessary • Configure permissions • In hosting env. (from business perspective): – Gain competitive advantage:
    • 27. BEYOND SANDBOX
    • 28. Sandboxed solution limitations • 3rd party .NET components do not work well with Sandboxed Solutions – Solutions: Revert back to JQuery – JQuery charts (licensing!):
    • 29. BP8.1 – Extending Sandbox • Trusted proxies: SPUCWorkerProcess.exe
    • 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. BP8.2 – Extending Sandbox • Using SharePoint Client API: SPUCWorkerProcess.exe http://spservices.codeplex.com
    • 32. Samples Source: www.sharepointaccelerators.com Source: www.21scrum.com
    • 33. Active Resolved Closed SandBoxed solution case study Email Inbox Issues Contacts Confirmation Email
    • 34. SANDBOXED SOLUTION EXAMPLE DEMO
    • 35. Conclusion • Use whenever possible… • …But know the limits! • Happy programming!
    • 36. QUESTIONS?
    • 37. THANK YOU! Toni Frankola SharePoint Services MVP, Croatia http://www.sharepointusecases.com Toni.frankola@acceleratio.hr @ToniFrankola