SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

Más 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 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
 

Más 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
 

Último

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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 WorkerThousandEyes
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
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 WorkerThousandEyes
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
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...DianaGray10
 

Último (20)

Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
+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...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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...
 

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

Notas del editor

  1. Things to take away from this session…