SlideShare une entreprise Scribd logo
1  sur  49
Just Freakin’ Work!Avoiding Common Hurdles in SharePoint Development Geoff Varosky (GraceHunt) Mark Rackley (Juniper Strategy) Welcome to SharePoint Saturday—The Conference
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:
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 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
You might be a SharePoint Developer if…
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 Developer Dashboard (2010)
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 Event Receivers 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
You might be a SharePoint Developer if…
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 2.. 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: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>
You might be a SharePoint Developer if…
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!
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
Resources Development Tools Codeplex.com Search SharePoint & Development SharePointDevWiki.com www.sharepointdevwiki.com/display/public/SharePoint+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
You… BEFORE session…
You… AFTER our session…
Resources Q&A
Thanks to Our Other Sponsors! Thanks to our Sponsors
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

Contenu connexe

Plus de Geoff Varosky

Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010Creating Custom Actions in SharePoint 2010
Creating Custom Actions in SharePoint 2010
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 2010
Geoff Varosky
 
Who? What? Where? Searching in SharePoint
Who? What? Where? Searching in SharePointWho? What? Where? Searching in SharePoint
Who? What? Where? Searching in SharePoint
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
 

Plus de Geoff Varosky (20)

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
 
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
 
Creating Custom Actions within SharePoint
Creating Custom Actions within SharePointCreating Custom Actions within SharePoint
Creating Custom Actions within SharePoint
 
SharePoint Saturday Boston 2/27/10 - Whats New For Developers In SharePoint 2010
SharePoint Saturday Boston 2/27/10 - Whats New For Developers In SharePoint 2010SharePoint Saturday Boston 2/27/10 - Whats New For Developers In SharePoint 2010
SharePoint Saturday Boston 2/27/10 - Whats New For Developers In SharePoint 2010
 

Dernier

Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 

Dernier (20)

Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 

Just Freakin’ Work! Overcoming Hurdles and Avoiding Pain in SharePoint Custom Development

  • 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 2.. 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
  • 46. You… AFTER our session…
  • 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

Notes de l'éditeur

  1. Things to take away from this session…