31
You’re Doing It Wrong: A New Developer’s Primer for SharePoint – or – Everything that you know is useful, but is still, somehow, very, very wrong. #spdev10 1

SharePoint Development 101

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: SharePoint Development 101

You’re Doing It Wrong:A New Developer’s Primer for SharePoint

– or –Everything that you know is useful,

but is still, somehow, very, very wrong.

#spdev101

Page 2: SharePoint Development 101

Wake up!

Page 3: SharePoint Development 101

Gold Sponsors

Platinum Sponsors

Silver Sponsors

Please be sure to thank and visit our Sponsors!!

Page 4: SharePoint Development 101

Me:

Technical Lead @ Planet TechnologiesDeveloperFatherCommunity OrganizerVirginia Tech HokiePenny Arcade Expo EnforcerUNSC M12 FAV “Warthog” gunnerWorld Famous Jungle Cruise Skipper (ret.)

#spdev101

Page 5: SharePoint Development 101

Who are you?

Page 6: SharePoint Development 101

SharePoint Development 101

• What do you get?• What’s the same?• What tools do I need?• Key dev concepts you need to know• 10 things every SharePoint developer

should know• How to get your code rejected by your

SharePoint Architect(s)• Resources

#spdev101

Page 7: SharePoint Development 101

• You get a LOT of functionality for free– Federated Search– Excel Data Services– Business Connectivity Services– Single Sign-On– Etc.

What do you get?

• You get a lot of functionality for free– Authentication/Authorization– Page Templating– Workflow hosting/reporting– Data storage

– Metadata management– Access Services– Scalable Service Hosting– Visio Workflow integration– Etc.

#spdev101

Page 8: SharePoint Development 101

What’s different?

• Website Structure– Web Application → Site Collection → S.C. Root Web →

Subwebs

• Deployment– Code → Assembly → Feature (usually) → Package (.WSP)

• Fea⋅ture /ˈfitʃər/ -noun1. A functional unit of SharePoint functionality, scoped at a Farm,

Web Application, Site Collection, or Web level

• Packages– First added to the server farm– Then, deployed to individual web applications (or

globally)

#spdev101

Page 9: SharePoint Development 101

What’s the same?

• SharePoint is an ASP.Net app–Web.config– HTTPHandlers/HTTPModules– Authentication–Master Pages–Web Parts == Composite Server

Controls• Inherit from System.Web.UI.WebControls.WebParts.WebPart

– Postbacks/Event Lifecycle Model

#spdev101

Page 10: SharePoint Development 101

What tools do I need?

• Virtual Machine w/ Visual Studio, SQL Server, Active Directory, IIS, and MS Office running a server OS (64-bit for SP 2010)

• Microsoft SharePoint 2010 SDK– Documentation– Code samples

• SharePoint Visual Studio add-insWindows SharePoint Services 3.0 Tools: Visual Studio 2008 Extensions, Version 1.2 (VSeWSS)

WSPBuilder (for VS 2008/SP 2007 or VS/SP 2010) Visual Studio 2010 Tools for SharePoint Development (SP

2010 Only) Microsoft Office Developer Tools for Visual Studio 2012 -

Preview 2 (SP 2013 only, SP 2010 is OOB)#spdev101

Page 11: SharePoint Development 101

Add-Ins: SharePoint vs. Visual Studio

WSPBuilder WSPBuilder NOPE :(

WSPBuilder

Visual Studio 2010 Tools for

SharePoint Development

NOPE :(

NOPE :( Built-in :D

Microsoft Office Developer Tools

for Visual Studio 2012 - Preview 2

SharePoint 2007

SharePoint 2010

VS

2008

VS

2010

#spdev101

SharePoint 2013

VS

2012

Page 12: SharePoint Development 101

Key dev concepts you need to know

• Memory management (IDisposable)• ASP.Net Web Forms page lifecycle (Page

events)• Exception handling & process flow (try/catch/finally)• HTML & CSS (raw, not just thru server controls)• JavaScript (SharePoint Client-Side Object Model)• JavaScript (jQuery)

• JavaScript (KnockoutJS, Modernizr, etc)• Regular Expressions (because SCIENCE)

Page 13: SharePoint Development 101

10 things every developer should know

Page 14: SharePoint Development 101

10 Things Every SharePoint Developer Should Know

10.Whenever possible, avoid creating custom Site Definitions

#spdev101

• Use Web Templates

Page 15: SharePoint Development 101

10 Things Every SharePoint Developer Should Know

9. Solution packages are NOT side-by-side, versioned deployments

#spdev101

Page 16: SharePoint Development 101

10 Things Every SharePoint Developer Should Know

8. Web.config changes should be made in code, not by hand

• SPWebConfigModification

#spdev101

Page 17: SharePoint Development 101

10 Things Every SharePoint Developer Should Know

7. Sandbox limitations are not enforced at compile time.

You need:• Visual Studio 2010 SharePoint Power Tools

• Office365 Sandbox FxCop Rules

#spdev101

Page 18: SharePoint Development 101

10 Things Every SharePoint Developer Should Know

6. Out of the box master & layout pages should never be modified

#spdev101

Page 19: SharePoint Development 101

10 Things Every SharePoint Developer Should Know

5. JavaScript and Publishing Content Pages do not play well together

OK (In a Content Editor Web Part):

<script type=“text/javascript">…</script>

Not OK (CEWP or page content):

<a href="#" onclick="javascript: …">link</a>

List data is always stripped of JavaScript

#spdev101

Page 20: SharePoint Development 101

10 Things Every SharePoint Developer Should Know

4. Yes, you can have ASP.Net “yellow screen of death” callstacks on errors

In your web.config file:

1. Set mode to “off” in the customErrors element2. Set debug to “true” in the compilation element3. Set CallStack to “true” in the SafeMode element

In code!• SPWebConfigModification

#spdev101

Page 21: SharePoint Development 101

10 Things Every SharePoint Developer Should Know

3. There is a right and very wrong way to iterate through a SharePoint list

OK:SPListItemsCollection items = myList.Items;for (int i = 0; i < items.Count; i++){ // loop}

Not OK:foreach (SPListItem item in myList.Items){ // loop}

#spdev101

Page 22: SharePoint Development 101

10 Things Every SharePoint Developer Should Know

2. Many of the out-of-box web part classes are inheritable (but not all)

You need: ILSpy

#spdev101

Page 23: SharePoint Development 101

10 Things Every SharePoint Developer Should Know

1. The rules for proper disposal of SharePoint objects isn’t cut & dry – but there is help.

SPDisposeCheck(Write this down)

#spdev101

Page 24: SharePoint Development 101

How to get your code rejected by your SharePoint Architecture Group

• Don’t dispose of your SPSite and SPWeb (and related) objects properly– The SPDisposeCheck utility is invaluable for

this

• Use SPSecurity.RunWithElevatedPrivileges when unnecessary or just plain badly

• Log errors to whatever’s handy at the time

• Make changes to the web.config file without consideration for others

#spdev101

Page 25: SharePoint Development 101

Resources

• SPDisposeCheck Utility– http://code.msdn.microsoft.com/

SPDisposeCheck

• StackOverflow/SharePointOverflow– http://stackoverflow.com– http://sharepointoverflow.com

• Twitter (#SPHelp)• Your local SharePoint User Group

#spdev101

Page 26: SharePoint Development 101

Demo!

Page 27: SharePoint Development 101

Questions?

Page 28: SharePoint Development 101

One more thing…

Page 29: SharePoint Development 101

Right now: Downstairs, in the lunch place… Delicious Cake (really).

Page 30: SharePoint Development 101

Thanks for coming!

• Don’t forget your evaluations

• You can find me at:• Blog: http://greghurlman.com• Twitter: @ghurlman• Email: [email protected]• Princeton Area SharePoint User Group• SharePoint Saturday New York & New

Jersey• Manticore Theatre @ PAX East

#spdev101

Page 31: SharePoint Development 101

Photo Credits• http://www.flickr.com/photos/matthewebel/4542976737/• http://www.flickr.com/photos/photojonny/2268845904/• http://www.flickr.com/photos/damaradeaella/2822846819/• http://www.flickr.com/photos/yourdon/3890013824/• http://www.flickr.com/photos/tommarker/474596167/

#spdev101