$30 off During Our Annual Pro Sale. View Details »

You're Doing It Wrong: A New Developer's Primer...

You're Doing It Wrong: A New Developer's Primer for SharePoint

Avatar for Greg Hurlman

Greg Hurlman

January 12, 2013
Tweet

Other Decks in Programming

Transcript

  1. You’re Doing It Wrong: A New Developer’s Primer for SharePoint

    – or – Everything that you know is useful, but is still, somehow, very, very wrong. #spdev101
  2. Me: Technical Lead @ Planet Technologies Developer Father Community Organizer

    Virginia Tech Hokie Penny Arcade Expo Enforcer UNSC M12 FAV “Warthog” gunner World Famous Jungle Cruise Skipper (ret.) #spdev101
  3. SharePoint Development 101 • What do you get? • What’s

    the same? • What tools do I need? • Key dev concepts you need to know • 10 things every SharePoint developer should know • How to get your code rejected by your SharePoint Architect(s) • Resources #spdev101
  4. • You get a LOT of functionality for free –

    Federated Search – Excel Data Services – Business Connectivity Services – Single Sign-On – Etc. What do you get? • You get a lot of functionality for free – Authentication/Authorization – Page Templating – Workflow hosting/reporting – Data storage – Metadata management – Access Services – Scalable Service Hosting – Visio Workflow integration – Etc. #spdev101
  5. What’s different? • Website Structure – Web Application → Site

    Collection → S.C. Root Web → Subwebs • Deployment – Code → Assembly → Feature (usually) → Package (.WSP) • Fea⋅ture /ˈfitʃər/ -noun 1. A functional unit of SharePoint functionality, scoped at a Farm, Web Application, Site Collection, or Web level • Packages – First added to the server farm – Then, deployed to individual web applications (or globally) #spdev101
  6. What’s the same? • SharePoint is an ASP .Net app

    – Web.config – HTTPHandlers/HTTPModules – Authentication – Master Pages – Web Parts == Composite Server Controls • Inherit from System.Web.UI.WebControls.WebParts.WebPart – Postbacks/Event Lifecycle Model #spdev101
  7. What tools do I need? • Virtual Machine w/ Visual

    Studio, SQL Server, Active Directory, IIS, and MS Office running a server OS (64-bit for SP 2010) • Microsoft SharePoint 2010 SDK – Documentation – Code samples • SharePoint Visual Studio add-ins Windows SharePoint Services 3.0 Tools: Visual Studio 2008 Extensions, Version 1.2 (VSeWSS)  WSPBuilder (for VS 2008/SP 2007 or VS/SP 2010)  Visual Studio 2010 Tools for SharePoint Development (SP 2010 Only)  Microsoft Office Developer Tools for Visual Studio 2012 - Preview 2 (SP 2013 only, SP 2010 is OOB) #spdev101
  8. Add-Ins: SharePoint vs. Visual Studio WSPBuilder WSPBuilder NOPE :( WSPBuilder

    Visual Studio 2010 Tools for SharePoint Development NOPE :( NOPE :( Built-in :D Microsoft Office Developer Tools for Visual Studio 2012 - Preview 2 SharePoint 2007 SharePoint 2010 VS 2008 VS 2010 #spdev101 SharePoint 2013 VS 2012
  9. Key dev concepts you need to know • Memory management

    (IDisposable) • ASP .Net Web Forms page lifecycle (Page events) • Exception handling & process flow (try/catch/finally) • HTML & CSS (raw, not just thru server controls) • JavaScript (SharePoint Client-Side Object Model) • JavaScript (jQuery) • JavaScript (KnockoutJS, Modernizr, etc) • Regular Expressions (because SCIENCE)
  10. 10 Things Every SharePoint Developer Should Know 10. Whenever possible,

    avoid creating custom Site Definitions #spdev101 • Use Web Templates
  11. 10 Things Every SharePoint Developer Should Know 9. Solution packages

    are NOT side-by-side, versioned deployments #spdev101
  12. 10 Things Every SharePoint Developer Should Know 8. Web.config changes

    should be made in code, not by hand • SPWebConfigModification #spdev101
  13. 10 Things Every SharePoint Developer Should Know 7. Sandbox limitations

    are not enforced at compile time. You need: • Visual Studio 2010 SharePoint Power Tools • Office365 Sandbox FxCop Rules #spdev101
  14. 10 Things Every SharePoint Developer Should Know 6. Out of

    the box master & layout pages should never be modified #spdev101
  15. 10 Things Every SharePoint Developer Should Know 5. JavaScript and

    Publishing Content Pages do not play well together OK (In a Content Editor Web Part): <script type=“text/javascript">…</script> Not OK (CEWP or page content): <a href="#" onclick="javascript: …">link</a> List data is always stripped of JavaScript #spdev101
  16. 10 Things Every SharePoint Developer Should Know 4. Yes, you

    can have ASP .Net “yellow screen of death” callstacks on errors In your web.config file: 1. Set mode to “off” in the customErrors element 2. Set debug to “true” in the compilation element 3. Set CallStack to “true” in the SafeMode element In code! • SPWebConfigModification #spdev101
  17. 10 Things Every SharePoint Developer Should Know 3. There is

    a right and very wrong way to iterate through a SharePoint list OK: SPListItemsCollection items = myList.Items; for (int i = 0; i < items.Count; i++) { // loop } Not OK: foreach (SPListItem item in myList.Items) { // loop } #spdev101
  18. 10 Things Every SharePoint Developer Should Know 2. Many of

    the out-of-box web part classes are inheritable (but not all) You need: ILSpy #spdev101
  19. 10 Things Every SharePoint Developer Should Know 1. The rules

    for proper disposal of SharePoint objects isn’t cut & dry – but there is help. SPDisposeCheck (Write this down) #spdev101
  20. How to get your code rejected by your SharePoint Architecture

    Group • Don’t dispose of your SPSite and SPWeb (and related) objects properly – The SPDisposeCheck utility is invaluable for this • Use SPSecurity.RunWithElevatedPrivileges when unnecessary or just plain badly • Log errors to whatever’s handy at the time • Make changes to the web.config file without consideration for others #spdev101
  21. Resources • SPDisposeCheck Utility – http://code.msdn.microsoft.com/SPDisposeCheck • StackOverflow/SharePointOverflow – http://stackoverflow.com

    – http://sharepointoverflow.com • Twitter (#SPHelp) • Your local SharePoint User Group #spdev101
  22. Thanks for coming! • Don’t forget your evaluations • You

    can find me at: • Blog: http://greghurlman.com • Twitter: @ghurlman • Email: [email protected] • Princeton Area SharePoint User Group • SharePoint Saturday New York & New Jersey • Manticore Theatre @ PAX East #spdev101