#SPSTCDC Just Freakin Work! Development Best Practices in SharePoint

  • 1,009 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,009
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
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