Your SlideShare is downloading. ×
#SPSTCDC Just Freakin Work! Development Best Practices in SharePoint
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

#SPSTCDC Just Freakin Work! Development Best Practices in SharePoint

1,045

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
1,045
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
14
Comments
0
Likes
0
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
  • Things to take away from this session…
  • Transcript

    • 1. Just Freakin’ Work!Avoiding Common Hurdles in SharePoint Development
      Geoff Varosky (GraceHunt)
      Mark Rackley (Juniper Strategy)
      Welcome to SharePoint Saturday—The Conference
    • 2. Welcome to SharePoint Saturday—The Conference
      Thank you for being a part of the first SharePoint Saturday conference
      Please turn off all electronic devices or set them to vibrate.
      If you must take a phone call, please do so in the hall so as not to disturb others.
      Open wireless access is available at SSID: SPSTC2011
      Feel free to “tweet and blog” during the session
      Thanks to our Diamond and Platinum Sponsors:
    • 3. About the speakers…
      The Hillbilly
      Mr. Ackley
      Catcher of all things that flow downhill
      Solutions Architect for Juniper Strategy, LLC.
      www.juniper-strategy.com
      Speaker, Blogger, (soon to be) Author
      Blog: www.sharepointhillbilly.com
      Twitter: @mrackley
      E-mail: mrackley@gmail.com
    • 4. About the speakers…
      The Yankee
      Geoff Varosky
      Director, Development and Evangelism
      GraceHunt
      www.gracehunt.com
      Speaker, Blogger, (soon to be) Author
      Blog: www.sharepointyankee.com
      Twitter: @gvaro
      E-mail: gvarosky@gracehunt.com
    • 5. You might be a SharePoint Developer if…
    • 6. Agenda
      Introduction
      Development
      Deployment
      Resources
      Q&A
    • 7. Introduction
      Types of Development
      Development Tools
      Development Environment
      Developing to Deploy
    • 8. Introduction
      Types of Development
      Unmanaged Code
      Managed Code
      Customization
    • 9. Introduction
      Development Tools
      STSDEV (2007)
      stsdev.codeplex.com
      WSPBuilder (2007 & 2010)
      wspbuilder.codeplex.com
      CKS:DEV (2010)
      cksdev.codeplex.com
      SharePoint Designer
      Developer Dashboard (2010)
    • 10. Introduction
      Development Environment
      Physical?
      Virtual?
      Desktop?
      Dusty old PC under the desk?
    • 11. Introduction
      2007 or 2010
      64-bit (leaves room for upgrade)
      >= 4G of RAM
      Choice of Virtual Host
      HyperV, VMWare, VirtualBox
      Not much in the way of VirtualPC support
      Create a base virtual image
      SQL, Base SP install, Service Packs, Dev Tools
      Visual Studio, SPD, etc.
    • 12. Introduction
      Development Environment
      Follow the SDK (2010)
      64 bit
      Desktop
      Windows 7
      Vista (SP1+)
      Http://msdn.microsoft.com/en-us/library/ee554869.aspx
      Server 2008
    • 13. Introduction
      Development Environment
      Make sure your environment matches deployment targets!
      In Visual Studio
      CPU
      x86? x64? AnyCPU?
      .NET Framework
      Service Packs
      Same architecture
    • 14. Introduction
      Development Environment
      Don’t do everything as local admin!
      Follow proper account configuration from the SDK
      Developing to Deploy
      Use the least amount of privileges
      This will make admins happy
      Web application deployment (/bin)
      CAS policies
    • 15. Development
      General Development Practices
      Lists
      Event Receivers
      Web Parts
      Unmanaged Code
      Web Services
    • 16. Development
      General Development Practices
      Dispose of Objects!
      SPDisposeCheck
      Test with multiple accounts/privileges
      Strongly named assemblies
      Separate high and low privileged DLLs
      Do not mix .NET Framework versions
      64 bit code compatibility
    • 17. Development
      General Development Practices
      Stay away from the database
      USE THE API!
      Use resource & language files
      Do not hard code strings and labels
      Caching when and where possible
      msdn.microsoft.com/library/bb687949.aspx
      CAS Policies
      Safe Controls
    • 18. Development
      General Development Practices
      Use try{} catch{} finally{} blocks
      Check for nulls in finally{} blocks with disposable objects before disposing
      Change defaults
      Assembly Info
      Name it properly
      GraceHunt.SharePoint.WebParts.Stuff
    • 19. Development
      General Development Practices
      Sign Controls
      Do not password protect the SNK
      Elevating Privileges
      SPSecurity.RunWithElevatedPrivileges()
      Clean, Validated, Secure data
      Runs as System account
      Write operations?
      Preceeded by SPUtility|SPWeb.ValidateFormDigest
      Must use new SPSite or SPWeb – not SPContext.Current
    • 20. You might be a SharePoint Developer if…
    • 21. Development
      Lists
      Test queries before deployment!
      U2U CAML Query Builder
      Remove the <Query></Query> tags!
      http://www.spsprofessional.com/sqlcaml.aspx
      LINQ
      Batch queries when possible
    • 22. Development
      Lists
      Do not use SPList.Items
      Use SPList.GetItems(query)
      Paginate (2000 items) – RowLimit
      GetItemByID
      Use SPList.GetitemByID
      Not SPList.Items.GetItemByID
    • 23. Development
      Event Handlers
      Do not instantiate SPWeb, SPSite, SPList, or SPListItem
      Use what the properties give you
      properties.OpenWeb()
      properties.ListItem
      Bulk operations will not run event handlers
      Ex: New list created – FieldAdding will not run
    • 24. Development
      Event Handlers
      Connections
      Make sure you code for external systems not being available
      LOG ERRORS
      Make it known why something went wrong
    • 25. Development
      Web Parts
      Deploy to the Web Part Gallery
      Easy to add to a page from there
      AllowClose = false
      Closing web parts = bad
      X DOES NOT EQUAL DELETE
      Use Properties – avoid hard coded values
      HTMLEncode input values
    • 26. Development
      Web Parts – In Code
      EnsureChildControls
      Ensure that the controls have been loaded before using them.
    • 27. Development
      Unmanaged Code
      JavaScript
      Will this be used in more than one place?
      Central Script repository (easy access)
      Deployment to _layouts folder
      More of a “managed” approach, more secure
      Less flexible
    • 28. Development
      Unmanaged Code
      Content Editor Web Parts
      Awesome, flexible web parts!
      Use a library with versioning to link the WP to
      Easier to manage
      Versioning of “code”
      Publishing Sites
      Use content controls, not CEWPs!
    • 29. Development
      Unmanaged Code
      Ghosted v. UnGhosted pages
      Uncustomized v. customized
      Unghosted pages can have issues with upgrades
      i.e. site definitions change with upgrades
      Branding
    • 30. Development
      SharePoint Web Services
      Provide remote access to a range of object model functionality
      Run on all front-end web servers
      Heavily dependent on XML and CAML
      Reside in physical file system in the 12... Directory and in a virtual file system in /_vti_bin
    • 31. Development
      SharePoint Web Services – What They Do
      Provide programmatic access via .NET and SharePoint Designer
      Deliver relatively robust remote API functionality
      Expose SharePoint data repository to disconnected clients
    • 32. Development
      SharePoint Web Services – What They Do
      Permit inter-farm communication (geographic distribution)
      Integrate well with WinForms, WPF, and SilverLight
      Client Object Model (SP 2010)
    • 33. Development
      SharePoint Web Services – What they DON’T do
      Do not provide access to entire object model
      Do not permit manipulation of BLOB objects (documents)
      NTLM and Basic Authentication Only
      No SSO integration
      No extensibility (sealed classes)
      Limited data aggregation (no joins)
    • 34. Development
      SharePoint Web Services – When to use them
      Remote accessibility
      Integration with backend or legacy systems
      Retrieval of items and content as XML
      Perform large batch updates to lists
    • 35. Development
      SPServices – jQuery library utilized SharePoint Web Services
      http://spservices.codeplex.com/
    • 36. Development
      SharePoint Web Services Basics
      Add a Web Reference to any project type
      Must specify existing SharePoint site in URL + “/_vti_bin/” + ServiceName + “.asmx”
      Set URL to dynamic
    • 37. Development
      SharePoint Web Services Basics
      All column names are XML encoded and prefixed with “ows_”
      <rs:dataItemCount="1" xmlns:rs="urn:schemas-microsoft-com:rowset">
      <z:rowows_Title="Elmer@Fudd.com"
      ows_MetaInfo="4764;#"
      ows__ModerationStatus="0"
      ows__Level="1"
      ows_ID="4764"
      ows_owshiddenversion="5"
      ows_UniqueId="4764;#{2272A40C-0DA5-4C0D-938D-BFF3AF9C8ACF}"
      ows_FSObjType="4764;#0"
      ows_Created="2009-12-12 12:55:10"
      ows_FileRef="4764;#sps/Contact/test/Lists/Issues/4764_.000"
      xmlns:z="#RowsetSchema" />
      </rs:data>
    • 38. You might be a SharePoint Developer if…
    • 39. Development
      USE SOLUTION PACKAGES!
      USE SOLUTION PACKAGES!
      USE SOLUTION PACKAGES!
      USE SOLUTION PACKAGES!
      USE SOLUTION PACKAGES!
      USE SOLUTION PACKAGES!
      USE SOLUTION PACKAGES!
      USE SOLUTION PACKAGES!
    • 40. Development
      User Code Solutions (2010 & Office 365)
      When possible
      Forces better programming practices
      Keeps the farm safe
      Makes admins & managers happy
      Admins can control
      Makes them feel special
    • 41. Resources
      Development Tools
      Codeplex.com
      Search SharePoint & Development
      SharePointDevWiki.com
      www.sharepointdevwiki.com/display/public/SharePoint+Development+Tools
      SPDisposeCheck
      code.msdn.microsoft.com/SPDisposeCheck
    • 42. Resources
      SDKs
      2010
      Server and Foundation
      http://msdn.microsoft.com/en-us/library/ee557253.aspx
      2007
      WSS
      http://msdn.microsoft.com/en-us/library/ms441339(office.12).aspx
      MOSS 2007
      http://msdn.microsoft.com/en-us/library/ms550992(office.12).aspx
    • 43. Resources
      General Development
      Roger Lamb’s Blog
      blogs.msdn.com/rogerla/
      Patterns & Practices SharePoint Guidance
      msdn.microsoft.com/en-us/library/dd203468.aspx
      Using Disposable Objects
      msdn.microsoft.com/en-us/library/aa973248(v=office.12).aspx
    • 44. Resources
      General Development
      Working with Large Lists
      go.microsoft.com/fwlink?LinkId=95450
      SharePoint 2007 Best Practices Resource Center
      technet.microsoft.com/en-us/office/sharepointserver/bb736746.aspx
    • 45. You… BEFORE session…
    • 46. You… AFTER our session…
    • 47. Resources
      Q&A
    • 48. Thanks to Our Other Sponsors!
      Thanks to our Sponsors
    • 49. Session Evaluation
      Please complete and turn in your Session Evaluation Form so we can improve future events. Survey can be filled out at:
      http://app.fluidsurveys.com/surveys/spstc2011-
      and add the Session number to the URL
      Presenter: Geoff Varosky & Mark Rackley
      Session Name: Just Freakin’ Work!
      Session No.: FRI-S5A-110

    ×