Although you can still do standard Farm and Sandbox programming like in SharePoint 2010, the new SharePoint 2013 app development introduces a completely new off-farm development platform. SharePoint 2013 app development will be challenging for most SharePoint developers in that it introduces a lot of new architectural elements. So get started by reading the the TechNet articles in Install and Manage Apps for SharePoint 2013 to understand how to setup and administer apps. The Model Poster on this page is especially helpful as a quick reference to the main points of the app architecture.
Note that this post does not deal with developing Apps for SharePoint Online in the Office365 environment, but for developing apps for SharePoint on-premises farms. That’s why I’m not mentioning the “Napa” browser development environment, which is only for SharePoint online.
A development environment for SharePoint 2013 requires more resources than SharePoint 2010. You are going to need at least 16 gigs of RAM if you plan to develop against any of the primary service applications like Search and Business Data Connectivity. Remember that now in the new expanded Client Service Object Model (CSOM) in SharePoint 2013 gives you many more client namespaces than were available in 2010.
So you can build a SharePoint 2013 farm on your laptop but you if you only have 8 gigs of RAM on your laptop, its really not going to work. Fortunately, there are, thanks to the cloud, two other options. You can set up a development environment for nothing on CloudShare for 14 days or get a trial account on Azure, which will give you 750 hours of free computing.
Cloud Share, which bills itself as a “Pre-Production Cloud” is a tool for developers. You can not only work in a completely configured 3-server SharePoint environment (SharePoint Server, SQL Server and Active Directory Server) but all Visual Studio 2010 and 2012 and a full copy of Office 2013 Profesional are also loaded on the SharePoint Server. And Cloud Share allows you share your environment with others and collaborate on development projects together. As the Cloud Share site puts it:
This is what CloudShare is all about: distributing your environment to colleagues or clients to present your work or collaborate on.
More specifically, sharing allows for your contact to play with your environment, take it for a test drive and break it. Sharing lets you protect your work as your user will not enter your environment and has their own copy to test.
Similar to Collaboration, Sharing also helps development teams work on siloed projects with separate distinct environments for each user that they have direct control over. This allows you to have multiple environments under one account with specific tasks for each environment.
Unfortunately, the default configuration is really too slow with only 5 gigs of RAM for the SharePoint server, unless you’re willing to put up with slow screen draws and can do without some of the service applications that take a lot of resources, like Search (which isn’t installed in the default configuration). Click on the thumbnail at the left to see the details of the default SharePoint 2013 CloudShare Environment. When I went used Remote Desktop to login to my CloudShare SharePoint Server and fired up Visual Studio 2012 it was really slow. I can imagine it would be even slower if Search was enabled! So to really make Cloud Share a viable environment you’re going to have to add another 8 gigs of memory. This will cost you almost as much ($390 a year) as the original 8 gig ( $490 a year) environment costs unfortunately. However, taking into consideration the fact that this environment is completely setup and allows the sharing of environments with development colleagues the $880 a year, or $73 a month, seems reasonable.
Azure’s virtual server environment is another option for a SharePoint development environment. This will give you the freedom to set things up from scratch, allowing you to learn all the details of SharePoint 2013 farm setup and configuration so you can completely understand it. The virtual servers functionality of Azure is still considered “Preview’ as the date of this writing, however there is an excellent guide to settng SharePoint up on Azure Build a FREE SharePoint Lab in the Cloud with Windows Azure. The word “FREE” means free for the duration of the free trial period which is about 300 hours of computing time (its 750 hours of small compute hours but since your farm environment requires two mall and one medium server you get less hours) . Once this is up, its hard to say how much your environment will cost you per hour although the article claims that it would be about $0.56 an hour with an additional $10 a month for storage. So if you use it for 20 hours a week, it would be about $55.00 a month but if you’re going to use it full time, or 40 hours a week, the Cloud Share option would be cheaper.
The big disadvantage of the Azure environment is that you have to keep turning it off when you’re not using it. This involves PowerShell scripts that save your Virtual Server configurations as XML files to your local drive using PowerShell. Once saved you have to user the Remove-AzureVM command to remove your VMs and when you’re ready to use them again you need to use the Import-AzureVM command to import them again. This process can be buggy. The first couple of times I did it the Virtual Machines would not start once I imported them so I had to delete them and re-create them, which was a real pain. Also, sometimes the importing process is slow and sometimes its fast. I assume these problems will smooth out once the Virtual Server service is out of its “Preview” status, since Microsoft has invested a lot in the Azure platform and wants it to be successful.
If you’re going to setup your own development environment from scratch on either Azure or your own laptop or server, these links will be helpful:
- MSDN - How: Setup an on-premises development environment for apps for SharePoint – start here, ignoring the directive to choose “Stand-alone” and choose “Complete” instead since you should set up your farm with at least two servers, but read the next three articles before you do anything in order to get all the details
- TechNet - Configure an environment for apps for SharePoint 2013 – this TechNet article is pretty good for a Technet article but the following two articles explain much the same thing but with more screenshots
- Nauman Ahmed’s Blog – SharePoint 2013 – App Management Service – this post gives step-by-step instructions with lots of screen shots about how to set up the app management service
- Mirjam van Olst’s Blog – Setting up for app domain for SharePoint 2013 – this post has an especially good explanation of how to setup up your app domain in DNS
Fortunately there are some SharePoint 2013 app development videos and examples to get you started. You can watch the MSDN SharePoint 2013 Training for Developers. They don’t flow from one to the other very well but at least they were done by well-known SharePoint developers like Andrew Connell and Scot Hillier. Modules 1 through 8 are the most important for app development.
Andrew Connell also has a 6-part SharePoint 2013 Developer Ramp-Up video series on Pluralsight.com that offers 12 hours of video training with exercise files and assessments. You can view 200 minutes of video and access up to 3 exercise files during their 10-day free trial period. But you can subscribe for just one month if you want for just $49 by signing up for a monthly plan and turning off Auto-Renew.
Also, you should read Ted Pattison’s blog article on client vs. server and CSOM vs. REST in SharePoint app development. It explains some very important app development concepts very clearly.
Finally, Scot Hillier was kind enough to upload five example apps into CodePlex on January 4, 2013, so they are some of the few examples written with SharePoint RTM. These should get you started with real world app development!