SlideShare a Scribd company logo
1 of 41
SharePoint Customization
Overcoming Hurdles and Avoiding Pain


         Geoff Varosky
         Mark Rackley
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
About the speakers…
 The   Yankee
   Geoff Varosky
    – MCP, MCTS
    – Senior Solutions Developer for Grace-Hunt, LLC.
        • www.grace-hunt.com
    – Speaker, Blogger, (soon to be) Author
    – Blog: www.sharepointyankee.com
    – Twitter: @gvaro
    – E-mail: gvarosky@grace-hunt.com
Agenda
 Introduction
 Development
 Deployment
 Resources
 Q&A
Introduction
 Types of Development
 Development Tools
 Development Environment
 Developing to Deploy
Introduction
 Types   of Development
   Unmanaged Code
   Managed Code
   Customization
Introduction
 Development    Tools
   STSDEV (2007)
    – stsdev.codeplex.com
   WSPBuilder (2007 & 2010)
    – wspbuilder.codeplex.com
   CKS:DEV (2010)
    – cksdev.codeplex.com
   SharePoint Designer
Introduction
 Development     Environment
     Physical?
     Virtual?
     Desktop?
     Dusty old PC under the desk?
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.
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
Introduction
 Development     Environment
   Make sure your environment matches
    deployment targets!
    – In Visual Studio
       • CPU
          » x86? x64? AnyCPU?
    – .NET Framework
    – Service Packs
    – Same architecture
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
Development
 General   Development Practices
 Lists
 EventReceivers
 Web Parts
 Unmanaged Code
 Web Services
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
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
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
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
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
Development
 Lists
   Do not use SPList.Items
     – Use SPList.GetItems(query)
     – Paginate (2000 items) – RowLimit
   GetItemByID
     – Use SPList.GetitemByID
     – Not SPList.Items.GetItemByID
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
Development
 Event   Handlers
   Connections
    – Make sure you code for external systems not
      being available
   LOG ERRORS
    – Make it known why something went wrong
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
Development
 Web   Parts – In Code
  EnsureChildControls
   – Ensure that the controls have been loaded before
     using them.
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
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!
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
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
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
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)
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)
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
Development
 SPServices– jQuery library utilized
 SharePoint Web Services
   http://spservices.codeplex.com/
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
Development
 SharePoint               Web Services Basics
   All column names are XML encoded and
    prefixed with “ows_”
  <rs:data ItemCount="1" xmlns:rs="urn:schemas-microsoft-com:rowset">
     <z:row ows_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>
Deployment
 USE SOLUTION PACKAGES!
 USE SOLUTION PACKAGES!
 USE SOLUTION PACKAGES!
 USE SOLUTION PACKAGES!
 USE SOLUTION PACKAGES!
 USE SOLUTION PACKAGES!
 USE SOLUTION PACKAGES!
Deployment
 User   Code Solutions (2010)
   When possible
   Forces better programming practices
   Keeps the farm safe
    – Makes admins & managers happy
   Admins can control
    – Makes them feel special
Resources
 Development    Tools
   Codeplex.com
    – Search SharePoint & Development
   SharePointDevWiki.com
    – www.sharepointdevwiki.com/display/public/Share
      Point+Development+Tools
   SPDisposeCheck
    – code.msdn.microsoft.com/SPDisposeCheck
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
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
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
Q&A
Please be sure to fill out your
    session evaluation!

More Related Content

More from Geoff Varosky

Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Geoff Varosky
 
Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010Geoff Varosky
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Geoff Varosky
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Geoff Varosky
 
The Ribbon UI and Custom Actions in SharePoint 2010
The Ribbon UI and Custom Actions in SharePoint 2010The Ribbon UI and Custom Actions in SharePoint 2010
The Ribbon UI and Custom Actions in SharePoint 2010Geoff Varosky
 
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...Geoff Varosky
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Geoff Varosky
 
Who? What? Where? Searching in SharePoint
Who? What? Where? Searching in SharePointWho? What? Where? Searching in SharePoint
Who? What? Where? Searching in SharePointGeoff Varosky
 
Planning and Configuring Extranets in SharePoint 2010 @ SharePoint Saturday N...
Planning and Configuring Extranets in SharePoint 2010 @ SharePoint Saturday N...Planning and Configuring Extranets in SharePoint 2010 @ SharePoint Saturday N...
Planning and Configuring Extranets in SharePoint 2010 @ SharePoint Saturday N...Geoff Varosky
 
Spsnh geoff varosky - jornata - planning and configuring extranets in share...
Spsnh   geoff varosky - jornata - planning and configuring extranets in share...Spsnh   geoff varosky - jornata - planning and configuring extranets in share...
Spsnh geoff varosky - jornata - planning and configuring extranets in share...Geoff Varosky
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Geoff Varosky
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Geoff Varosky
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Geoff Varosky
 
SharePoint Saturday Hartford - 01/29/11 - Creating Custom Actions in SharePoi...
SharePoint Saturday Hartford - 01/29/11 - Creating Custom Actions in SharePoi...SharePoint Saturday Hartford - 01/29/11 - Creating Custom Actions in SharePoi...
SharePoint Saturday Hartford - 01/29/11 - Creating Custom Actions in SharePoi...Geoff Varosky
 
SharePoint Saturday EMEA - The Ribbon UI and Custom Actions in SharePoint 2010
SharePoint Saturday EMEA - The Ribbon UI and Custom Actions in SharePoint 2010SharePoint Saturday EMEA - The Ribbon UI and Custom Actions in SharePoint 2010
SharePoint Saturday EMEA - The Ribbon UI and Custom Actions in SharePoint 2010Geoff Varosky
 
Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010Geoff Varosky
 
Just Freakin' Work - Overcoming Hurdles and Avoiding Pain
Just Freakin' Work - Overcoming Hurdles and Avoiding PainJust Freakin' Work - Overcoming Hurdles and Avoiding Pain
Just Freakin' Work - Overcoming Hurdles and Avoiding PainGeoff Varosky
 
Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010Geoff Varosky
 
From SharePoint Designer to Visual Studio - Prototyping and Deploying Solutio...
From SharePoint Designer to Visual Studio - Prototyping and Deploying Solutio...From SharePoint Designer to Visual Studio - Prototyping and Deploying Solutio...
From SharePoint Designer to Visual Studio - Prototyping and Deploying Solutio...Geoff Varosky
 
What's New for Developers in SharePoint 2010
What's New for Developers in SharePoint 2010What's New for Developers in SharePoint 2010
What's New for Developers in SharePoint 2010Geoff Varosky
 

More from Geoff Varosky (20)

Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010
 
Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010
 
The Ribbon UI and Custom Actions in SharePoint 2010
The Ribbon UI and Custom Actions in SharePoint 2010The Ribbon UI and Custom Actions in SharePoint 2010
The Ribbon UI and Custom Actions in SharePoint 2010
 
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...
Best Practices in SharePoint Development - Just Freakin Work! Overcoming Hurd...
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010
 
Who? What? Where? Searching in SharePoint
Who? What? Where? Searching in SharePointWho? What? Where? Searching in SharePoint
Who? What? Where? Searching in SharePoint
 
Planning and Configuring Extranets in SharePoint 2010 @ SharePoint Saturday N...
Planning and Configuring Extranets in SharePoint 2010 @ SharePoint Saturday N...Planning and Configuring Extranets in SharePoint 2010 @ SharePoint Saturday N...
Planning and Configuring Extranets in SharePoint 2010 @ SharePoint Saturday N...
 
Spsnh geoff varosky - jornata - planning and configuring extranets in share...
Spsnh   geoff varosky - jornata - planning and configuring extranets in share...Spsnh   geoff varosky - jornata - planning and configuring extranets in share...
Spsnh geoff varosky - jornata - planning and configuring extranets in share...
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010
 
Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010Planning and Configuring Extranets in SharePoint 2010
Planning and Configuring Extranets in SharePoint 2010
 
SharePoint Saturday Hartford - 01/29/11 - Creating Custom Actions in SharePoi...
SharePoint Saturday Hartford - 01/29/11 - Creating Custom Actions in SharePoi...SharePoint Saturday Hartford - 01/29/11 - Creating Custom Actions in SharePoi...
SharePoint Saturday Hartford - 01/29/11 - Creating Custom Actions in SharePoi...
 
SharePoint Saturday EMEA - The Ribbon UI and Custom Actions in SharePoint 2010
SharePoint Saturday EMEA - The Ribbon UI and Custom Actions in SharePoint 2010SharePoint Saturday EMEA - The Ribbon UI and Custom Actions in SharePoint 2010
SharePoint Saturday EMEA - The Ribbon UI and Custom Actions in SharePoint 2010
 
Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010
 
Just Freakin' Work - Overcoming Hurdles and Avoiding Pain
Just Freakin' Work - Overcoming Hurdles and Avoiding PainJust Freakin' Work - Overcoming Hurdles and Avoiding Pain
Just Freakin' Work - Overcoming Hurdles and Avoiding Pain
 
Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010
 
From SharePoint Designer to Visual Studio - Prototyping and Deploying Solutio...
From SharePoint Designer to Visual Studio - Prototyping and Deploying Solutio...From SharePoint Designer to Visual Studio - Prototyping and Deploying Solutio...
From SharePoint Designer to Visual Studio - Prototyping and Deploying Solutio...
 
What's New for Developers in SharePoint 2010
What's New for Developers in SharePoint 2010What's New for Developers in SharePoint 2010
What's New for Developers in SharePoint 2010
 

Recently uploaded

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Recently uploaded (20)

Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

SharePoint Customization: Overcoming Hurdles and Avoiding Pain

  • 1. SharePoint Customization Overcoming Hurdles and Avoiding Pain Geoff Varosky Mark Rackley
  • 2. 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
  • 3. About the speakers…  The Yankee  Geoff Varosky – MCP, MCTS – Senior Solutions Developer for Grace-Hunt, LLC. • www.grace-hunt.com – Speaker, Blogger, (soon to be) Author – Blog: www.sharepointyankee.com – Twitter: @gvaro – E-mail: gvarosky@grace-hunt.com
  • 4. Agenda  Introduction  Development  Deployment  Resources  Q&A
  • 5. Introduction  Types of Development  Development Tools  Development Environment  Developing to Deploy
  • 6. Introduction  Types of Development  Unmanaged Code  Managed Code  Customization
  • 7. Introduction  Development Tools  STSDEV (2007) – stsdev.codeplex.com  WSPBuilder (2007 & 2010) – wspbuilder.codeplex.com  CKS:DEV (2010) – cksdev.codeplex.com  SharePoint Designer
  • 8. Introduction  Development Environment  Physical?  Virtual?  Desktop?  Dusty old PC under the desk?
  • 9. 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.
  • 10. 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
  • 11. Introduction  Development Environment  Make sure your environment matches deployment targets! – In Visual Studio • CPU » x86? x64? AnyCPU? – .NET Framework – Service Packs – Same architecture
  • 12. 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
  • 13. Development  General Development Practices  Lists  EventReceivers  Web Parts  Unmanaged Code  Web Services
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. Development  Lists  Do not use SPList.Items – Use SPList.GetItems(query) – Paginate (2000 items) – RowLimit  GetItemByID – Use SPList.GetitemByID – Not SPList.Items.GetItemByID
  • 20. 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
  • 21. Development  Event Handlers  Connections – Make sure you code for external systems not being available  LOG ERRORS – Make it known why something went wrong
  • 22. 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
  • 23. Development  Web Parts – In Code  EnsureChildControls – Ensure that the controls have been loaded before using them.
  • 24. 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
  • 25. 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!
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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)
  • 30. 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)
  • 31. 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
  • 32. Development  SPServices– jQuery library utilized SharePoint Web Services  http://spservices.codeplex.com/
  • 33. 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
  • 34. Development  SharePoint Web Services Basics  All column names are XML encoded and prefixed with “ows_” <rs:data ItemCount="1" xmlns:rs="urn:schemas-microsoft-com:rowset"> <z:row ows_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>
  • 35. Deployment  USE SOLUTION PACKAGES!  USE SOLUTION PACKAGES!  USE SOLUTION PACKAGES!  USE SOLUTION PACKAGES!  USE SOLUTION PACKAGES!  USE SOLUTION PACKAGES!  USE SOLUTION PACKAGES!
  • 36. Deployment  User Code Solutions (2010)  When possible  Forces better programming practices  Keeps the farm safe – Makes admins & managers happy  Admins can control – Makes them feel special
  • 37. Resources  Development Tools  Codeplex.com – Search SharePoint & Development  SharePointDevWiki.com – www.sharepointdevwiki.com/display/public/Share Point+Development+Tools  SPDisposeCheck – code.msdn.microsoft.com/SPDisposeCheck
  • 38. 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
  • 39. 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
  • 40. 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
  • 41. Q&A Please be sure to fill out your session evaluation!