SlideShare a Scribd company logo
1 of 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

More Related Content

More from Geoff 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
 
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
 
Creating Custom Actions within SharePoint
Creating Custom Actions within SharePointCreating Custom Actions within SharePoint
Creating Custom Actions within SharePointGeoff Varosky
 
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 2010Geoff Varosky
 

More from 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
 

Recently uploaded

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
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
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
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 

Recently uploaded (20)

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
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
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
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 

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

Editor's Notes

  1. Things to take away from this session…