The time has come for me to do my summary post of 2010. This is my fifth summary post (2006, 2007, 2008 and 2009). This year has been truly amazing. Working in the SharePoint world has been so interesting and challenging with the brand new Office 2010 and SharePoint 2010 products.
I have been knee-deep in SharePoint 2010 work both for my employer (Connecta) and for personal reasons (pure fun, book, learning...). A huge thanks to my wife and daughters that can put up with my constant chatter about this obscure thingie...
As previous years let's sum up my year in a few sections.
Blogging, books and other writings
My blogging activities has been going up and down this year, but I think this year I have produced quite a few gems. I've seen the number of visitors steadily grow this year with about 700.000+ hits per month nowadays. The most popular posts of this year are the following ones:
- Create SharePoint 2010 Managed Metadata with Excel 2010 - the #1 hit this year. This post is also referenced in several TechNet/MSDN articles.
- Creating a SharePoint 2010 Ribbon extension - part 1 - I learned a lot while writing this
- Creating custom themable CSS files for SharePoint 2010 - really cool branding feature of SP2010
- How to provision SharePoint 2010 Managed Metadata columns - needed to document this...
- Visual guide to Windows Live ID authentication with SharePoint 2010 - part 1- my personal favorite and the one which took me the longest time to finish
- Creating a SharePoint 2010 Ribbon extension - part 2 - continuation of #2
- Plan your SharePoint 2010 Content Type Hub carefully - trial and error
- Local SharePoint 2010 development on Windows 7 - awesome experience - not everyone agree, but I still love doing POC's and tests on Win7
- Custom application pages in the SharePoint 2010 Sandbox - I needed to do this, and why not write about it
- Working with SharePoint 2010 Correlation ID in PowerShell and code - nice features of SP2010
Part from blogging I've been writing on my book; SharePoint 2010 Web Parts in Action. It was not released this year as planned but watch out for an early release in 2011. I'm not going to write more about it now - that deserves its own post.
Except for writing on my own blog and the book I also produced a series about Visio 2010 and SharePoint 2010 for EndUserSharePoint.com, nowadays NothingButSharePoint.com - check it out. I still have a couple of posts to complete, so keep an eye out for them. I also wrote an article for the 2nd edition of the DIWUG SharePoint eMagazine about the new SharePoint 2010 themes - download it here.
A personal and professional highlight of this year was of course when I was awarded with the prestigious SharePoint Server MVP award. April the 1st this year I got an e-mail that made me choke and burst out in joy. Hopefully I can keep this award for quite some time. Being a Microsoft MVP has really given me some great opportunities to meet new people and talk SharePoint with a bunch of extremely talented people - I really look forward to the MVP summit in a few months.
One thing I enjoy is to talk about things I like - SharePoint for instance. This year I continued to deliver quite a few sessions on several occasions:
- SharePoint Conference Southeast Asia - Singapore
- SharePoint and Exchange Forum 2010 - Stockholm, Sweden
- Developer Summit 2010 - Stockholm, Sweden
- MSDN SharePoint tour - Stockholm, Sweden
- Introduction to SharePoint 2010 - Stockholm/Gothenburg, Sweden
- Several User Group meetings
Looking forward to next year, hopefully I get invited to some more international conferences...
Last year predictions
Last years summary post contained a few predictions for 2010 - and all of them fell in. "Microsoft will have something extraordinary coming in Windows Mobile 7" - Windows Phone 7 was released! "Another thing we will see starting emerge from Redmond is a new Internet Explorer...I expect some major improvements in standards compatibility..." - Internet Explorer 9 was released as beta!
Predictions for 2011
So what about 2011? What's in my crystal ball for next year? The wave 14 of Office/SharePoint has just begun, I don't expect any new major announcements about the next wave, except for the Office 365 stuff going live. The release of IE9 and Silverlight 5 are no-brainers. This is what I think about next year:
- Microsoft will enter the pad/slate/tablet/huge-cellphone market with a special edition of Windows Phone 7. Yup, I don't think "Windows 8" will be the OS for the Win-pads.
- Windows 8 will be communicated. Windows 8 will be like Windows 7 R2.
- Virtual PC will be reborn as a client alternative to Hyper-V with x64 support etc.
Thank you and a happy new year
That's it for me! Thank you everyone who subscribed to my blog or Twitter feed or visited/listened to me at conferences. Next year will be awesome. I've already made some really interesting plans for next year that I'm anxious to talk about at a later time. Let's finish with a picture that I took today when I was out skating at our lake. Happy new year everyone!!
Recent discussions I've been involved with and blog posts have highlighted some of the SharePoint 2010 Sandbox limitations (either as bugs or as a feature). I have also talked about this during SEF 2010 and SPCSEA 2010. While writing my book SharePoint 2010 Web Parts in Action I had the opportunity to discover these limitations early on and have learned to live with it. If you read my book you will find a lot of references to "this does not work in the Sandbox" (you've already ordered it huh? Otherwise it's just one click away).
In this post I want to give you all a little head start on what really happens when executing SharePoint 2010 Sandboxed solutions. Focus is here on Web Parts.
SharePoint 2010 Sandbox Execution flow
Before building solutions for the Sandbox you have to know how it actually works, that will also make you understand in more details why some things work and some don't.
- The "real" Page object exists in the W3WP.exe process
- The Sandboxed Execution Manager serializes information from the fully-trusted objects (see below)
- The serialized is sent to the User Code Service (in the OnPageLoadComplete event). It can be on the same or a specific Sandboxed App Server
- The User Code Service reuses or spins up a Sandbox Worker process and sends request to the worker process
- The User Code Worker Process recreates a HttpContext and the Page object.
- It then creates a Form, Web Part Manager and a Zone before it processes the page.
- After processing the Sandboxed Page object it retrieves the Response, View State, Control State (execution depends on for instance it is a post-back, export of web part, edit web part etc)
- Data is once serialized and sent back to the execution manager
- The information is put back into the "real" objects (Web Part properties, view state, controls state...)
The information that is serialized includes but are not limited to:
- ID's of Form, Web Part Manager, Zone, Toolpane
- Web Part properties
- Options and properties of the Web Part and zone, such as chrome, zone customization, width, height...
- View state
- Control state
- Server Variables (except APPL_PHYSICAL_PATH and PATH_TRANSLATED)
- Request Headers
- Input Stream
- Current context (List Id, Item Id)
- Query String
Non accessible or working stuff
You cannot access the following things from a Sandboxed Web Part, even though it compiles fine and executes without any errors:
- The Cache object (works but is not serialized back)
- The ScriptManager (works but is not serialized back)
- The ClientScriptManager (works but is not serialized back)
- The HttpRequest.Files collection (will never contain anything) [Corrected]
- The Master Page (works but is not serialized back)
- Other Web Parts (since it creates a new Page and Form object and only adds your SB:d Web Part to the page)
- Embedded resources (these are requested by the WebResource.axd and they cannot resolve the Sandboxed assemblies from the W3WP.exe process) [Added after initial post]
- You cannot use redirection (Response.Redirect, Server.Transfer or SPUtility.Redirect) [Added after initial post - Thanks Todd Bleeker]
- You cannot export a Sandboxed Web Part (it will just export the SPUserCodeWebPart) [Added after initial post]
I hope this little post helps you out understanding why some of the stuff you expect to work doesn't.
Feel free to comment on this and correct me if I wrote anything wrong...