SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
An Odyssey Into the
SharePoint 2010 Development World


Nik Patel
Lead Solutions Architect, Slalom Consulting, Chicago Practice
About Me


           Nik Patel
               •   Lead Solutions Architect, Slalom Consulting
               •   Working with SharePoint 2010 since Summer 2009
               •   Working with SharePoint since SharePoint 2003 days

           Contact Info
               •   Email – patenik2@yahoo.com
               •   Blog – Nik Patel’s SharePoint World -
                   http://nikspatel.wordpress.com/
               •   Twitter - @nikxpatel
               •   LinkedIn - linkedin.com/in/nikspatel
               •   Slideshare - slideshare.net/patenik2




                                                                        2
Session Goals
Setting stage for future sessions

 This is introductory session
      Provides sweeping overview of features, No deep dives, Get ready for fast ride
      Focus on both entry-level and experienced SharePoint developers
 Setting stage for future deep dive sessions
 Lots of practical tips and lessons I have learned from last 3 years of SharePoint 2010
  product lifecycle
 Provide 1000 ft. view of SharePoint Development landscape in 1 Hour.. It’s tricky but not
  impossible. 




                                                                                              3
Session Agenda
Nik’s 6 Steps into SharePoint Development Nirvana

   Step 1 - Understanding SharePoint Developer Role
   Step 2 - Understanding & Configuring SharePoint 2010 Development Environment
   Step 3 - Understanding Core SharePoint 2010 Development Concepts
   Step 4 - Understanding Visual Studio Tooling Support (SP2010 Developer Productivity)
   Step 5 - Developing SharePoint 2010 Building Blocks and Artifacts
   Step 6 - Understanding of SharePoint 2010 Data Access Strategies
   Questions and Answers




                                                                                           4
Step 1 – Nik’s 6 Steps into SharePoint Development Nirvana

         Understanding SharePoint Developer Role




                                                             5
Anatomy of SharePoint Developer Role
It is demanding, because SharePoint will challenge you like you never been

 SharePoint Developer is very complex role
     SharePoint Developer should be proper End User
       Understand SharePoint OOB Capabilities
     SharePoint Developer should be strong Power User
       Understand Browser Customization and No-Code Solutions
     SharePoint Developer should be efficient Administrator
       Understand how SharePoint Farm, Web Application, Site Collection, and Service Application Infrastructure Configured
     SharePoint Developer should be true programming rock star. 
       Understand and make decision on what kind of custom artifacts and data access strategies can be designed on SharePoint Platform
       Be ready to work with wide varieties of languages and frameworks (e.g. C#, SQL, javaScript/jQuery, AJAX, WCF etc.)

 Always keep in mind - SharePoint is Packaged Product
     SharePoint is Platform and understanding it’s capabilities and limitations are important




                                                                                                                                          6
Typical SharePoint Developer Life – Day to Day Activities
Extending SharePoint Platform

 Provision SharePoint Artifacts
     Site Columns, Site Content Types, Lists, Web Parts, Workflows, Pages, Sites, Timer Jobs etc.

 Build Business Applications based on SharePoint Platform
     Accessing SharePoint 2010 Data from SharePoint itself like Lists or Sites Data in Web Parts
     Accessing LOB or External Data in SharePoint like CRM, SAP, SQL
     Accessing SharePoint Data from Remote External Systems like Standalone ASP.NET, Standalone Silverlight,
      Console Utilities, CRM Systems etc.

 Perform Advanced SharePoint Development
     User Profiles Provisioning, Search API, Managed Metadata Maintenance

 Solution Packaging and Deployment
     PowerShell Scripting for Solutions and Features deployment, upgrade, and maintenance
     Application Life Cycle Management using Automatic Build and TFS integration




                                                                                                                7
Step 2 – Nik’s 6 Steps into SharePoint Development Nirvana

Understanding & Configuring SharePoint 2010 Development Environment




                                                                      8
Configure SharePoint 2010 Development Environment
Every SharePoint developer should have at least 1 development environment

 Either install directly on metal or use Virtual machines
     My preference is VM – more flexible, I use VMware workstation on Windows 7 x64 Host

 SharePoint 2010 requires x64 Operating System and Database Servers
     Windows 7, Windows Vista SP1, Windows Server 2008, or Windows Server 2008 R2
     SQL Server 2012, SQL Server 2008 R2, SQL Server 2008 with SP1 and CU2, SQL Server 2005 with SP3 and CU3

 SharePoint 2010 must be installed locally on Developer Machine
       SharePoint Foundation or SharePoint Server (RTM or SP1 with latest CU)
       Requires Single Server Farm Installation
       Not Supported for Production or Multi-Server farm – SQL and AD can be installed on separate machine
       Based on .NET Framework 3.5 and ASP.NET 3.5 - Installed as SharePoint 2010 Pre-requisites

 Visual Studio 2010 (RTM or SP1) and SharePoint Designer 2010
     Visual Studio 2010 SharePoint Power Tools – Provides Sandboxed Visual Web Part template
     Use Visual Studio 2012 as soon as it’s in RTM, Lot more improvements for SP2010 development



                                                                                                                9
Step 3 – Nik’s 6 Steps into SharePoint Development Nirvana

 Understanding Core SharePoint 2010 Development Concepts




                                                             10
SharePoint Terminology
Overwhelming at first, steep learning curve, ever-changing landscape, lifetime to master
              Farm Solutions                            Custom Actions
                                              Content Type               Safe Control

                  Site Pages              Feature
  Site Collection            List Instance    Timer Job                   Feature Scope
                                                           Workflows
        Solution Package                 Site Definition
                                                 Event Receiver
                                                                           Web Templates
    Publishing Layouts           Ribbon Framework      List Definition
                                                                            PowerShell
                         Web Application
                         Feature Receiver
                                                     Document Libraries      Team Site
      Field Control
                               Client Object Model
Understanding SharePoint Object Hierarchy
Server Side Object Model
SharePoint Hierarchy       Object Hierarchy (Top to Bottom)   Object Hierarchy (Bottom to Top)

            Farm                       SPFarm                             SPFarm


     Web Application(s)           SPWebApplication                   SPWebApplication
                               (SPWebApplication.Sites)           (SPWebApplication.Farm)

      Site Collection(s)
                               SPSite (SPSite.AllWebs)         SPSite (SPSite.WebApplication)

           Site(s)
                                SPWeb (SPWeb.Lists)                 SPWeb (SPWeb.Site)

           List(s)
                                 SPList (SPList.Items)           SPList (SPList.ParentWeb)

         List Item(s)                 SPListItem                         SPListItem
                                                                   (SPListItem.ParentList)



                                                                                                 12
What is Solutions and Features Framework?
Building blocks of SharePoint Development, Packaging, and Deployment

 Features                                                Solutions - WSPs
  Deployed in {SP Root}TEMPLATEFEATURE                  Deployed in Farm Solutions or Sandbox Solutions in
                                                            Site Collections Solutions Gallery
  Features are the basic building block of SharePoint
   development                                             Solution Packages are “bundles” of functionality
                                                            deployed to the farm or site collection
  Features may be comprised of any combination of
   code or artifacts including web parts or workflows      May contain one or more Features, assemblies,
                                                            pages, controls, and other artifacts
  Features may be activated manually or automatically
   on a local or global basis                              SharePoint framework handles installation and
                                                            configuration of solution items automatically across
  Features are scoped at Farm, Web Application, Site
                                                            entire farm
   Collection, and Web Level




                                                                                                                   13
Sandbox vs. Farm Level Solutions
 Execution environment during runtime
 Farm Level Solutions                                           Sandbox Solutions
  Also known as Full Trust Solutions                             Also Known as User Solutions
  Deployed to Farm Solutions Gallery by Farm                     Deployed to Site Collection Solution Gallery by Site
   Administrators                                                  Collection Administrators
  Runs inside IIS Worker Process (W3WP.exe) for specific         Runs inside Application domain per site collection in the
   web application                                                 Sandbox Worker Process (SPUCWorkerProcess.exe)
  Stored in the SharePoint Configuration Database                Stored in the Site Collection Content Database
  Farm level solutions requires SharePoint Foundation Web        Sandbox solutions requires Microsoft SharePoint
   Application Service started on the farm.                        Foundation Sandboxed Code Service started on the farm.
  Farm level solutions not restricted to any data access         Sandbox solutions runs using restrictive code access
  Farm level solutions are not restricted to resource quotas      security policies and limited to a specific subset of
   and code will run until IIS worker process terminates by        SharePoint 2010 object model – Major limitations are not
   itself                                                          able to access database, file system, RSS feeds, web
                                                                   services, cross-site collection, farm and web application
                                                                   scoped features, running with elevated privileges
                                                                  Sandbox solutions runs under resource quota and
                                                                   exceeding resource quota with irresponsible code will
                                                                   terminate the process




                                                                                                                               14
Typical SharePoint Solution Deployment, Upgrade, and Retraction Process
Use Visual Studio, Central Administration, or PowerShell for Deployment and Retraction


Typical Deployment                          Farm                        Typical Retraction
Sequence                                Web Application                 Sequence
1.   Add Solution
2.   Deploy Solution                     Site Collection                1.   Deactivate Features
3.   Activate Features                                                        i.   Web(s)
      i.    Farm                                                              ii.  Site Collection(s)
      ii.   Web Application(s)                  Web                           iii. Web Application(s)
      iii. Site Collection(s)                                                 iv. Farm
      iv. Web(s)                                                        2.   Retract Solution
4.   Update Solution (Upgrade)                                          3.   Remove Solution



                                     Solutions Gallery
 Please note that Adding and Updating Solution is not supported in Central Administration site.

                                                                                                        15
Step 4 – Nik’s 6 Steps into SharePoint Development Nirvana

        Understanding Visual Studio Tooling Support




                                                             16
Getting Started – Initial SharePoint 2010 Project Setup
 Understand Visual Studio Tooling Support

 VS2010 with SharePoint 2010
  Works Perfect Together - Build, Debug, Deploy, and Package
 Project Templates
  Empty SharePoint Project, Import from Solution Package
 Item Templates
  Visual Web Part, Web Part, Workflow, BDC Model, Application Page,
   Event Receiver, Module, Content Type, List Definition, Empty
   Element
 Visual Designers
  BCS Model, Visual Web Parts, Workflows in Visual Studio 2010
 New in Visual Studio 2012 RC
  Much better organization of project templates and item templates-
   removed unnecessary project templates
  Added Content Type and List Designer (2010 requires CAML coding)
  Added Site Column and Silverlight Web Part Item Template




                                                                       17
Getting Started – Project Packaging and Maintenance
 Understand Visual Studio Tooling Support
 Project Wizard
   URL where you want to deploy
   Farm vs. Sandbox Solution Deployment
 Project System
   Solution Explorer - Deploy, Retract, and Package
   Project Properties - Site URL, Sandboxed Solution etc.
   Mapped Folders – SharePoint Root
   Feature and Package Designer
   Generate WSP for Production Deployment
 Server Explorer - SharePoint Site Collection
  Connections from Visual Studio
   Hierarchical view of local SharePoint sites & artifacts
   View SharePoint site collections, sites, features, lists, site
    columns etc
 TFS and Source Control Integration


                                                                     18
Demo
Walkthrough of Hello World Web Part in Visual Studio
What really happens when you deploy farm solution?



                                                       19
Reference Card – What really happens when you deploy farm solution?
Understanding what really happens under the hood is key
Areas affected by Solutions
Deployment
 SharePoint Configuration Database,
  Objects Table
 Web Application Content Databases,
  Features Table
 Central Administration, Solutions Gallery
 File System - SP Root Folder
 GAC - Global Assemblies Gallery
 Web Application Web.config files
 Activate Site Collection or Site Features
 Site Collection Galleries like Web Parts or
  Master Pages or file provisioned in content
  databases



 For More info - http://nikspatel.wordpress.com/2011/12/05/behind-the-screen-what-really-happens-during-solution-
 deploymentretraction-feature-activationdeactivation-process/

                                                                                                                    20
Step 5 – Nik’s 6 Steps into SharePoint Development Nirvana

   Developing SharePoint 2010 Building Blocks and Artifacts




                                                              21
Developing SharePoint Artifacts
 Extending SharePoint Deployment through CAML or Platform APIs

 Common Artifacts
   Site Columns, Site Content Types, Field Types
   List definition and List Instances
   Event Receivers
   Site Pages/Web Part Pages, and Application Pages
   Web Parts & Visual Web Parts
   Workflows
   Site Definition, Web Templates, and Site Provisioning Process
   Custom Actions, Ribbon and Dialog Framework

 Typically Three Approaches for Provisioning SharePoint Artifacts
   CAML Approach using Feature.xml and Elements.xml
   Programmatic Approach using Feature Receiver
   Programmatically Provisioning components using C# or PowerShell




                                                                      22
Demo
• Provision List Definition and List Instance




                                                23
Step 6 – Nik’s 6 Steps into SharePoint Development Nirvana

     Overview of SharePoint 2010 Data Access Strategies




                                                             24
SharePoint Data Access Strategies
 Three Common Design Patterns

 Accessing SharePoint Data from SharePoint itself
   Accessing data from Current Site Collection, Cross-Site Collection, Cross-Web Application, or Cross-Farm
   Many options to choose from - SSOM, LINQ to SharePoint, CSOM, REST based API, ASMX Web Services, Custom WCF
    Services, Search APIs etc.

 Accessing External Data from SharePoint
   Accessing LOB or External Data in SharePoint like CRM, SAP, SQL, etc.
   Many Options to choose from - LINQ-to-SQL, ADO.NET, Entity Framework, Web Services Interface, or SharePoint Preferred
    method BCS for Platform Integration

 Accessing SharePoint Data from Remote Systems
   Accessing SharePoint Data from Remote External Systems like Standalone ASP.NET, Standalone Silverlight, Console Utilities,
    CRM Systems etc.
   Many Options to choose from - CSOM, REST based API, ASMX Web Services, Custom WCF Services etc.




                                                                                                                                 25
Overview of SharePoint 2010 Data Technologies
Understanding both Client side and Server side API is key



                                               REST APIs


                  ASMX Web Services                         Client OM




                         Farm        Site      List Data         External Lists




                                                                                  26
Making decision – Questions you should ask yourself
 Understanding what really happens under the hood is key

 How will your code will be deployed?
   Farm solution or sandboxed solution or non-SharePoint solutions

 How important is developer productivity?
   Are IntelliSense, Compile time errors, and strongly-typed access important?

 Where will your code run?
   Server-side code or client-side code
   Within SharePoint, .NET Applications like Silverlight or CRM, Non.NET Applications like Java or JavaScript

 What is the scope of your code to run?
   Same Site, Same Site Collection, Cross-Site Collection, Cross-Web Application, Cross-farm

 How many items your query will return?
   5 items or 500 items or 5,000 items or 50,000 items




                                                                                                                 27
Overview of Server Side Data Access Technologies
 Both Options Must Run on the SharePoint Servers
 Server Side Object Model – SPQuery and SPDataQuery
  • SPQuery executes query against single list or performs join with on multiple lists on lookup columns with in site collection
  • SPDataQuery executes query against multiple lists to aggregate results, scoped at site collection level.
  • SPQuery uses CAML fragments and access to columns is not strongly typed - hard coded column names, quirky syntax, lack of
    tooling support, and difficult debugging
  • CAML provides fastest way to access data, must be used in high performing applications

 LINQ-to-SharePoint
   Executes query against single list or performs join on multiple lists on lookup columns with in site collection, You can’t aggregate
    multiple lists data without lookup column
   Microsoft supplies spmetal.exe to generate LINQ to SharePoint entities, Needs to regenerate the entities if List Schema changes
   Strongly typed entities to perform CRUD operations against SharePoint data
   High productivity, IntelliSense, and less error-prone programming
   Translates into CAML query during runtime, little performance overhead, 5-10% slower than SPQuery




                                                                                                                                           28
Comparing SharePoint 2010 Server Side Data Technologies
Decision Making Process

                                                                            SPQuery   SPDataQuery   LINQ to SharePoint
              Querying SharePoint list data within a site                     X                             X

             Using joins on SharePoint lists within a site                    X                             X

Using joins on SharePoint list data across sites within a site collection     X                             X

  Aggregating list data across multiple sites within a site collection                    X
                Querying external list data within a site                     X
     Strongly typed data access, IntelliSense Support, and High
                                                                                                            X
               Productivity (Requires leaning of LINQ)
   High performance & faster queries (Requires learning of CAML)              X           X

Error prone coding - hard coded column names, quirky syntax, lack of
                                                                              X           X
               tooling support, and difficult debugging

  Needs to regenerate the data context classes if schema changes                                            X


 Reference - More Info - http://msdn.microsoft.com/en-us/library/ff798432

                                                                                                                         29
Overview of Client Side Data Access Technologies
  Avoid these options running on the SharePoint Servers unless Cross-farm situations or Office 365 limitations
 Client Side Object Model – WCF Service - Client.svc
  • Three different Models - .NET Managed, Silverlight, ECMAScript
  • Subset of server OM functionality but similar APIs, Can’t access data outside of current site collection
  • CSOM executes query against single list or performs join on multiple lists on lookup columns with in site collection
   Allows submitting CAML queries directly from client side logic, same restrictions as SPQuery - Fastest option but error prone coding

 REST API - WCF Data Services - ListData.svc
  • REST is HTTP-based XML data transfer design pattern based on OData protocol - Stateless, cacheable, uniform
  • Returns results in ATOM Feed or JSON format (For JS clients)
  • Able to maintain & browse lists using HTTP verbs - GET, POST, PUT, DELETE, and MERGE
  • Available for Lists (ListData.svc) and Excel Services REST API (ExcelRest.aspx)
  • Client-side technique with strongly typed access, Intelligence Support, LINQ style productivity, Same restrictions as LINQ-to-SharePoint,
    Needs to refresh the proxy class if List Schema changes

 Legacy ASP.NET SOAP based Web Services
   Scoped at the List or Library level data access, requires custom web services for multiple list joins
   Developer must parse CAML fragments and access to columns is not strongly typed
   Supports advanced SharePoint Server capabilities like search, social, or user profile services, which are unavailable through the CSOM or
    REST APIs

                                                                                                                                                30
Comparing SharePoint 2010 Client Side Data Technologies
Decision Making Process
                                                         CSOM                          REST API               ASMX Web Services
       SharePoint Data Access Scope                   Site Collection                       List                      List
                List Queries                                 X                               X                         X
              List Join Queries                              X
            External List Queries                            X
             Request Batching                                X                               X
          Synchronous Operations                    X (Except ECMA)                                                    X
         Asynchronous Operations                             X                               X                         X
 SharePoint Foundation Object Model Access                   X
  Access to SharePoint Server Functionality
                                                                                                                       X
   (Social, User Profiles, and Search Data)
       Supports Non-Windows Clients                   X (ECMA only)                          X                         X
   Supports Strongly Typed LINQ Queries       X(objects only, no list queries)   X (with proxy, lists only)
    Requires CAML for List Data Access                       X                                                         X
      Access from Sandbox Solutions                                                                           X (SPServices Plugin)


Reference - More Info - http://msdn.microsoft.com/en-us/library/ff798473

                                                                                                                                      31
Demo
• Accessing SharePoint List data using JavaScript CSOM




                                                         32
Advanced Data Access Technologies
 Enterprise Level Data Access Methods
 Custom WCF Web Services
   Extend out of box SharePoint functionality
   Can be hosted in SharePoint, IIS, or any other .NET client
   Ideal for third party vendors, ISVs, or enterprise system integration

 Business Data Connectivity Services
   New in SharePoint 2010, Replacing Business Data Catalog
   Allows interface to external entities by implementing read-write interface to the external data by external content types and external list
   Provides platform integration for external systems for secured data access and search
   Useful alternative to access data from traditional manner like LINQ-to-SQL, ADO.NET, or Entity Framework

 Enterprise Search API
   This is Enterprise Search capability, not FAST Search
   Perfect for Cross-farm, Cross-Web Application, or Cross-Site Collection Data Access
   Greater scalability, All other techniques are mostly SQL-based, fast even large amount of data across multiple farms
   Requires data must be in index, data must be tagged, and mapped to managed properties




                                                                                                                                                  33
What’s Next for you?
 Practice, adhere, and master SharePoint development best practices
   Here is the start - http://nikspatel.wordpress.com/2011/06/22/sharepoint-2010-development-best-practices/

 Stay connected and Involved in Community – User Groups, Conferences, Webinars, Code fests

 Stay active on Social Media
   Follow Major MVPs and MSDN Blogs – Bookmark great articles
   Follow MVPs and major SharePoint Community Players on Twitter and Facebook

 Major Resources
   SharePoint 2010 SDK - http://msdn.microsoft.com/en-us/library/ee557253.aspx
   Patterns & Practices - Developing Applications for SharePoint 2010 - http://msdn.microsoft.com/en-us/library/ff770300
   MSDN SharePoint Developer Center - http://msdn.microsoft.com/en-us/sharepoint/default.aspx
   MSDN SharePoint 2010 Forums - http://social.msdn.microsoft.com/Forums/en-US/category/sharepoint2010




                                                                                                                            34
•   Thanks for attending the session!!
•   Follow Chicago SharePoint Developers User Group
     •   Twitter - @ChDevSPUG
     •   Website - http://www.chdevspug.com/




                                                      35

Contenu connexe

Dernier

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 

Dernier (20)

Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 

En vedette

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

En vedette (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

An odyssey into the sharepoint 2010 development world

  • 1. An Odyssey Into the SharePoint 2010 Development World Nik Patel Lead Solutions Architect, Slalom Consulting, Chicago Practice
  • 2. About Me Nik Patel • Lead Solutions Architect, Slalom Consulting • Working with SharePoint 2010 since Summer 2009 • Working with SharePoint since SharePoint 2003 days Contact Info • Email – patenik2@yahoo.com • Blog – Nik Patel’s SharePoint World - http://nikspatel.wordpress.com/ • Twitter - @nikxpatel • LinkedIn - linkedin.com/in/nikspatel • Slideshare - slideshare.net/patenik2 2
  • 3. Session Goals Setting stage for future sessions  This is introductory session  Provides sweeping overview of features, No deep dives, Get ready for fast ride  Focus on both entry-level and experienced SharePoint developers  Setting stage for future deep dive sessions  Lots of practical tips and lessons I have learned from last 3 years of SharePoint 2010 product lifecycle  Provide 1000 ft. view of SharePoint Development landscape in 1 Hour.. It’s tricky but not impossible.  3
  • 4. Session Agenda Nik’s 6 Steps into SharePoint Development Nirvana  Step 1 - Understanding SharePoint Developer Role  Step 2 - Understanding & Configuring SharePoint 2010 Development Environment  Step 3 - Understanding Core SharePoint 2010 Development Concepts  Step 4 - Understanding Visual Studio Tooling Support (SP2010 Developer Productivity)  Step 5 - Developing SharePoint 2010 Building Blocks and Artifacts  Step 6 - Understanding of SharePoint 2010 Data Access Strategies  Questions and Answers 4
  • 5. Step 1 – Nik’s 6 Steps into SharePoint Development Nirvana Understanding SharePoint Developer Role 5
  • 6. Anatomy of SharePoint Developer Role It is demanding, because SharePoint will challenge you like you never been  SharePoint Developer is very complex role  SharePoint Developer should be proper End User  Understand SharePoint OOB Capabilities  SharePoint Developer should be strong Power User  Understand Browser Customization and No-Code Solutions  SharePoint Developer should be efficient Administrator  Understand how SharePoint Farm, Web Application, Site Collection, and Service Application Infrastructure Configured  SharePoint Developer should be true programming rock star.   Understand and make decision on what kind of custom artifacts and data access strategies can be designed on SharePoint Platform  Be ready to work with wide varieties of languages and frameworks (e.g. C#, SQL, javaScript/jQuery, AJAX, WCF etc.)  Always keep in mind - SharePoint is Packaged Product  SharePoint is Platform and understanding it’s capabilities and limitations are important 6
  • 7. Typical SharePoint Developer Life – Day to Day Activities Extending SharePoint Platform  Provision SharePoint Artifacts  Site Columns, Site Content Types, Lists, Web Parts, Workflows, Pages, Sites, Timer Jobs etc.  Build Business Applications based on SharePoint Platform  Accessing SharePoint 2010 Data from SharePoint itself like Lists or Sites Data in Web Parts  Accessing LOB or External Data in SharePoint like CRM, SAP, SQL  Accessing SharePoint Data from Remote External Systems like Standalone ASP.NET, Standalone Silverlight, Console Utilities, CRM Systems etc.  Perform Advanced SharePoint Development  User Profiles Provisioning, Search API, Managed Metadata Maintenance  Solution Packaging and Deployment  PowerShell Scripting for Solutions and Features deployment, upgrade, and maintenance  Application Life Cycle Management using Automatic Build and TFS integration 7
  • 8. Step 2 – Nik’s 6 Steps into SharePoint Development Nirvana Understanding & Configuring SharePoint 2010 Development Environment 8
  • 9. Configure SharePoint 2010 Development Environment Every SharePoint developer should have at least 1 development environment  Either install directly on metal or use Virtual machines  My preference is VM – more flexible, I use VMware workstation on Windows 7 x64 Host  SharePoint 2010 requires x64 Operating System and Database Servers  Windows 7, Windows Vista SP1, Windows Server 2008, or Windows Server 2008 R2  SQL Server 2012, SQL Server 2008 R2, SQL Server 2008 with SP1 and CU2, SQL Server 2005 with SP3 and CU3  SharePoint 2010 must be installed locally on Developer Machine  SharePoint Foundation or SharePoint Server (RTM or SP1 with latest CU)  Requires Single Server Farm Installation  Not Supported for Production or Multi-Server farm – SQL and AD can be installed on separate machine  Based on .NET Framework 3.5 and ASP.NET 3.5 - Installed as SharePoint 2010 Pre-requisites  Visual Studio 2010 (RTM or SP1) and SharePoint Designer 2010  Visual Studio 2010 SharePoint Power Tools – Provides Sandboxed Visual Web Part template  Use Visual Studio 2012 as soon as it’s in RTM, Lot more improvements for SP2010 development 9
  • 10. Step 3 – Nik’s 6 Steps into SharePoint Development Nirvana Understanding Core SharePoint 2010 Development Concepts 10
  • 11. SharePoint Terminology Overwhelming at first, steep learning curve, ever-changing landscape, lifetime to master Farm Solutions Custom Actions Content Type Safe Control Site Pages Feature Site Collection List Instance Timer Job Feature Scope Workflows Solution Package Site Definition Event Receiver Web Templates Publishing Layouts Ribbon Framework List Definition PowerShell Web Application Feature Receiver Document Libraries Team Site Field Control Client Object Model
  • 12. Understanding SharePoint Object Hierarchy Server Side Object Model SharePoint Hierarchy Object Hierarchy (Top to Bottom) Object Hierarchy (Bottom to Top) Farm SPFarm SPFarm Web Application(s) SPWebApplication SPWebApplication (SPWebApplication.Sites) (SPWebApplication.Farm) Site Collection(s) SPSite (SPSite.AllWebs) SPSite (SPSite.WebApplication) Site(s) SPWeb (SPWeb.Lists) SPWeb (SPWeb.Site) List(s) SPList (SPList.Items) SPList (SPList.ParentWeb) List Item(s) SPListItem SPListItem (SPListItem.ParentList) 12
  • 13. What is Solutions and Features Framework? Building blocks of SharePoint Development, Packaging, and Deployment  Features  Solutions - WSPs  Deployed in {SP Root}TEMPLATEFEATURE  Deployed in Farm Solutions or Sandbox Solutions in Site Collections Solutions Gallery  Features are the basic building block of SharePoint development  Solution Packages are “bundles” of functionality deployed to the farm or site collection  Features may be comprised of any combination of code or artifacts including web parts or workflows  May contain one or more Features, assemblies, pages, controls, and other artifacts  Features may be activated manually or automatically on a local or global basis  SharePoint framework handles installation and configuration of solution items automatically across  Features are scoped at Farm, Web Application, Site entire farm Collection, and Web Level 13
  • 14. Sandbox vs. Farm Level Solutions Execution environment during runtime  Farm Level Solutions  Sandbox Solutions  Also known as Full Trust Solutions  Also Known as User Solutions  Deployed to Farm Solutions Gallery by Farm  Deployed to Site Collection Solution Gallery by Site Administrators Collection Administrators  Runs inside IIS Worker Process (W3WP.exe) for specific  Runs inside Application domain per site collection in the web application Sandbox Worker Process (SPUCWorkerProcess.exe)  Stored in the SharePoint Configuration Database  Stored in the Site Collection Content Database  Farm level solutions requires SharePoint Foundation Web  Sandbox solutions requires Microsoft SharePoint Application Service started on the farm. Foundation Sandboxed Code Service started on the farm.  Farm level solutions not restricted to any data access  Sandbox solutions runs using restrictive code access  Farm level solutions are not restricted to resource quotas security policies and limited to a specific subset of and code will run until IIS worker process terminates by SharePoint 2010 object model – Major limitations are not itself able to access database, file system, RSS feeds, web services, cross-site collection, farm and web application scoped features, running with elevated privileges  Sandbox solutions runs under resource quota and exceeding resource quota with irresponsible code will terminate the process 14
  • 15. Typical SharePoint Solution Deployment, Upgrade, and Retraction Process Use Visual Studio, Central Administration, or PowerShell for Deployment and Retraction Typical Deployment Farm Typical Retraction Sequence Web Application Sequence 1. Add Solution 2. Deploy Solution Site Collection 1. Deactivate Features 3. Activate Features i. Web(s) i. Farm ii. Site Collection(s) ii. Web Application(s) Web iii. Web Application(s) iii. Site Collection(s) iv. Farm iv. Web(s) 2. Retract Solution 4. Update Solution (Upgrade) 3. Remove Solution Solutions Gallery Please note that Adding and Updating Solution is not supported in Central Administration site. 15
  • 16. Step 4 – Nik’s 6 Steps into SharePoint Development Nirvana Understanding Visual Studio Tooling Support 16
  • 17. Getting Started – Initial SharePoint 2010 Project Setup Understand Visual Studio Tooling Support  VS2010 with SharePoint 2010  Works Perfect Together - Build, Debug, Deploy, and Package  Project Templates  Empty SharePoint Project, Import from Solution Package  Item Templates  Visual Web Part, Web Part, Workflow, BDC Model, Application Page, Event Receiver, Module, Content Type, List Definition, Empty Element  Visual Designers  BCS Model, Visual Web Parts, Workflows in Visual Studio 2010  New in Visual Studio 2012 RC  Much better organization of project templates and item templates- removed unnecessary project templates  Added Content Type and List Designer (2010 requires CAML coding)  Added Site Column and Silverlight Web Part Item Template 17
  • 18. Getting Started – Project Packaging and Maintenance Understand Visual Studio Tooling Support  Project Wizard  URL where you want to deploy  Farm vs. Sandbox Solution Deployment  Project System  Solution Explorer - Deploy, Retract, and Package  Project Properties - Site URL, Sandboxed Solution etc.  Mapped Folders – SharePoint Root  Feature and Package Designer  Generate WSP for Production Deployment  Server Explorer - SharePoint Site Collection Connections from Visual Studio  Hierarchical view of local SharePoint sites & artifacts  View SharePoint site collections, sites, features, lists, site columns etc  TFS and Source Control Integration 18
  • 19. Demo Walkthrough of Hello World Web Part in Visual Studio What really happens when you deploy farm solution? 19
  • 20. Reference Card – What really happens when you deploy farm solution? Understanding what really happens under the hood is key Areas affected by Solutions Deployment  SharePoint Configuration Database, Objects Table  Web Application Content Databases, Features Table  Central Administration, Solutions Gallery  File System - SP Root Folder  GAC - Global Assemblies Gallery  Web Application Web.config files  Activate Site Collection or Site Features  Site Collection Galleries like Web Parts or Master Pages or file provisioned in content databases For More info - http://nikspatel.wordpress.com/2011/12/05/behind-the-screen-what-really-happens-during-solution- deploymentretraction-feature-activationdeactivation-process/ 20
  • 21. Step 5 – Nik’s 6 Steps into SharePoint Development Nirvana Developing SharePoint 2010 Building Blocks and Artifacts 21
  • 22. Developing SharePoint Artifacts Extending SharePoint Deployment through CAML or Platform APIs  Common Artifacts  Site Columns, Site Content Types, Field Types  List definition and List Instances  Event Receivers  Site Pages/Web Part Pages, and Application Pages  Web Parts & Visual Web Parts  Workflows  Site Definition, Web Templates, and Site Provisioning Process  Custom Actions, Ribbon and Dialog Framework  Typically Three Approaches for Provisioning SharePoint Artifacts  CAML Approach using Feature.xml and Elements.xml  Programmatic Approach using Feature Receiver  Programmatically Provisioning components using C# or PowerShell 22
  • 23. Demo • Provision List Definition and List Instance 23
  • 24. Step 6 – Nik’s 6 Steps into SharePoint Development Nirvana Overview of SharePoint 2010 Data Access Strategies 24
  • 25. SharePoint Data Access Strategies Three Common Design Patterns  Accessing SharePoint Data from SharePoint itself  Accessing data from Current Site Collection, Cross-Site Collection, Cross-Web Application, or Cross-Farm  Many options to choose from - SSOM, LINQ to SharePoint, CSOM, REST based API, ASMX Web Services, Custom WCF Services, Search APIs etc.  Accessing External Data from SharePoint  Accessing LOB or External Data in SharePoint like CRM, SAP, SQL, etc.  Many Options to choose from - LINQ-to-SQL, ADO.NET, Entity Framework, Web Services Interface, or SharePoint Preferred method BCS for Platform Integration  Accessing SharePoint Data from Remote Systems  Accessing SharePoint Data from Remote External Systems like Standalone ASP.NET, Standalone Silverlight, Console Utilities, CRM Systems etc.  Many Options to choose from - CSOM, REST based API, ASMX Web Services, Custom WCF Services etc. 25
  • 26. Overview of SharePoint 2010 Data Technologies Understanding both Client side and Server side API is key REST APIs ASMX Web Services Client OM Farm Site List Data External Lists 26
  • 27. Making decision – Questions you should ask yourself Understanding what really happens under the hood is key  How will your code will be deployed?  Farm solution or sandboxed solution or non-SharePoint solutions  How important is developer productivity?  Are IntelliSense, Compile time errors, and strongly-typed access important?  Where will your code run?  Server-side code or client-side code  Within SharePoint, .NET Applications like Silverlight or CRM, Non.NET Applications like Java or JavaScript  What is the scope of your code to run?  Same Site, Same Site Collection, Cross-Site Collection, Cross-Web Application, Cross-farm  How many items your query will return?  5 items or 500 items or 5,000 items or 50,000 items 27
  • 28. Overview of Server Side Data Access Technologies Both Options Must Run on the SharePoint Servers  Server Side Object Model – SPQuery and SPDataQuery • SPQuery executes query against single list or performs join with on multiple lists on lookup columns with in site collection • SPDataQuery executes query against multiple lists to aggregate results, scoped at site collection level. • SPQuery uses CAML fragments and access to columns is not strongly typed - hard coded column names, quirky syntax, lack of tooling support, and difficult debugging • CAML provides fastest way to access data, must be used in high performing applications  LINQ-to-SharePoint  Executes query against single list or performs join on multiple lists on lookup columns with in site collection, You can’t aggregate multiple lists data without lookup column  Microsoft supplies spmetal.exe to generate LINQ to SharePoint entities, Needs to regenerate the entities if List Schema changes  Strongly typed entities to perform CRUD operations against SharePoint data  High productivity, IntelliSense, and less error-prone programming  Translates into CAML query during runtime, little performance overhead, 5-10% slower than SPQuery 28
  • 29. Comparing SharePoint 2010 Server Side Data Technologies Decision Making Process SPQuery SPDataQuery LINQ to SharePoint Querying SharePoint list data within a site X X Using joins on SharePoint lists within a site X X Using joins on SharePoint list data across sites within a site collection X X Aggregating list data across multiple sites within a site collection X Querying external list data within a site X Strongly typed data access, IntelliSense Support, and High X Productivity (Requires leaning of LINQ) High performance & faster queries (Requires learning of CAML) X X Error prone coding - hard coded column names, quirky syntax, lack of X X tooling support, and difficult debugging Needs to regenerate the data context classes if schema changes X Reference - More Info - http://msdn.microsoft.com/en-us/library/ff798432 29
  • 30. Overview of Client Side Data Access Technologies Avoid these options running on the SharePoint Servers unless Cross-farm situations or Office 365 limitations  Client Side Object Model – WCF Service - Client.svc • Three different Models - .NET Managed, Silverlight, ECMAScript • Subset of server OM functionality but similar APIs, Can’t access data outside of current site collection • CSOM executes query against single list or performs join on multiple lists on lookup columns with in site collection  Allows submitting CAML queries directly from client side logic, same restrictions as SPQuery - Fastest option but error prone coding  REST API - WCF Data Services - ListData.svc • REST is HTTP-based XML data transfer design pattern based on OData protocol - Stateless, cacheable, uniform • Returns results in ATOM Feed or JSON format (For JS clients) • Able to maintain & browse lists using HTTP verbs - GET, POST, PUT, DELETE, and MERGE • Available for Lists (ListData.svc) and Excel Services REST API (ExcelRest.aspx) • Client-side technique with strongly typed access, Intelligence Support, LINQ style productivity, Same restrictions as LINQ-to-SharePoint, Needs to refresh the proxy class if List Schema changes  Legacy ASP.NET SOAP based Web Services  Scoped at the List or Library level data access, requires custom web services for multiple list joins  Developer must parse CAML fragments and access to columns is not strongly typed  Supports advanced SharePoint Server capabilities like search, social, or user profile services, which are unavailable through the CSOM or REST APIs 30
  • 31. Comparing SharePoint 2010 Client Side Data Technologies Decision Making Process CSOM REST API ASMX Web Services SharePoint Data Access Scope Site Collection List List List Queries X X X List Join Queries X External List Queries X Request Batching X X Synchronous Operations X (Except ECMA) X Asynchronous Operations X X X SharePoint Foundation Object Model Access X Access to SharePoint Server Functionality X (Social, User Profiles, and Search Data) Supports Non-Windows Clients X (ECMA only) X X Supports Strongly Typed LINQ Queries X(objects only, no list queries) X (with proxy, lists only) Requires CAML for List Data Access X X Access from Sandbox Solutions X (SPServices Plugin) Reference - More Info - http://msdn.microsoft.com/en-us/library/ff798473 31
  • 32. Demo • Accessing SharePoint List data using JavaScript CSOM 32
  • 33. Advanced Data Access Technologies Enterprise Level Data Access Methods  Custom WCF Web Services  Extend out of box SharePoint functionality  Can be hosted in SharePoint, IIS, or any other .NET client  Ideal for third party vendors, ISVs, or enterprise system integration  Business Data Connectivity Services  New in SharePoint 2010, Replacing Business Data Catalog  Allows interface to external entities by implementing read-write interface to the external data by external content types and external list  Provides platform integration for external systems for secured data access and search  Useful alternative to access data from traditional manner like LINQ-to-SQL, ADO.NET, or Entity Framework  Enterprise Search API  This is Enterprise Search capability, not FAST Search  Perfect for Cross-farm, Cross-Web Application, or Cross-Site Collection Data Access  Greater scalability, All other techniques are mostly SQL-based, fast even large amount of data across multiple farms  Requires data must be in index, data must be tagged, and mapped to managed properties 33
  • 34. What’s Next for you?  Practice, adhere, and master SharePoint development best practices  Here is the start - http://nikspatel.wordpress.com/2011/06/22/sharepoint-2010-development-best-practices/  Stay connected and Involved in Community – User Groups, Conferences, Webinars, Code fests  Stay active on Social Media  Follow Major MVPs and MSDN Blogs – Bookmark great articles  Follow MVPs and major SharePoint Community Players on Twitter and Facebook  Major Resources  SharePoint 2010 SDK - http://msdn.microsoft.com/en-us/library/ee557253.aspx  Patterns & Practices - Developing Applications for SharePoint 2010 - http://msdn.microsoft.com/en-us/library/ff770300  MSDN SharePoint Developer Center - http://msdn.microsoft.com/en-us/sharepoint/default.aspx  MSDN SharePoint 2010 Forums - http://social.msdn.microsoft.com/Forums/en-US/category/sharepoint2010 34
  • 35. Thanks for attending the session!! • Follow Chicago SharePoint Developers User Group • Twitter - @ChDevSPUG • Website - http://www.chdevspug.com/ 35