Skip to main content

Elumenotion Blog

Go Search

 
Elumenotion > Elumenotion Blog
Posts and musings about SharePoint, eLumenotion, and random whatnot.
SharePoint 2010 SDK Download

I am happy to report that the SharePoint Foundation 2010 SDK is now available for download at http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=f0c9daf3-4c54-45ed-9bde-7b4d83a8f26f.

Enjoy!

The Top SharePoint Server 2010 Feature Set You Probably Don’t Know About

On Sunday I'm flying to Minneapolis to film the first SharePoint 2010 video for AppDev. The course is entitled Exploring SharePoint 2010 and it's as complete an overview of the 2010 stack as I could reasonably fit into 10 hours. Amazingly, SharePoint 2010 is such a deep and wide platform that there are some very interesting and exciting features that I won't be talking about because there isn't enough time!

Over the last few months I've gotten deep into 2010 by building the Real Nice Rugs sandbox application, writing the new course, and doing pilot work for clients. As the owner of a consulting business I am often asked when and if a client should move to 2010. My general answers are:

  • If the major uses are collaboration and search, wait until the new bits are completely stable, but start learning and planning now.
  • Do not undertake new enterprise content management or taxonomy projects on 2007, but wait for 2010.
  • If the initiative is business process automation/workflow and a third-party add-on is not in use, wait until the new bits are completely stable, but start learning and planning now.
  • If the initiative is Business Intelligence/Information Delivery, adopt SharePoint Server 2010 as soon as possible.

The BI components in SharePoint Server 2010 in conjunction with SQL Server 2008 R2 Reporting Services and PowerPivot are amazingly, stupefying, unqualifiedly incredible.

Business Intelligence Features in SharePoint Server 2010

You can:

I cover most of this in the new course. I'll post an outline and announce availability soon.

All of these features are cool by themselves, but collectively they comprise what I believe is the most complete and powerful delivery platform for business data to date. As word gets out, I fully expect that this will drive adoption of SharePoint Server 2010 in the short-term even for companies that decide to take a slow approach to upgrading to 2010 for the traditional strengths of existing 2007 installations.

SharePoint 2010 Sample Sandbox Application – Real Nice Rugs

Way back in 2008 I wrote about my intention to build an ecommerce site on WSS 3.0 - it never happened because I was just too busy. To make up for my failure to deliver on I built one on SharePoint 2010. You can see it here – http://www.realnicerugs.com.

The current version is a sandbox deployment running on SharePoint Foundation 2010 Beta and it is a fully functioning storefront that uses PayPal for the checkout process.

The tools I used to create this site are SharePoint Foundation, Visual Studio 2010, SharePoint Designer 2010, and Elumenotion SharePoint Skinner. I will be using this site as a basis for a number of blog posts that will follow. Planned topics include:

  • Defining and Deploying Fields and Content Types with Visual Studio 2010
  • Creating and Deploying Custom Master Pages and Style Sheets
  • Using the Dialog Framework for Popovers
  • Custom Code to Provision the Site
  • Configuring Deployment and Build Steps for Visual Studio 2010 SharePoint Projects
  • Building Web Parts for Sandboxed Solutions Part 1 – Simple Part to Hide the Ribbon
  • Building Web Parts for Sandboxed Solutions Part 2 – Web Part for Categories
  • Building Web Parts for Sandboxed Solutions Part 3 – Complex Web Parts – The List Item Display Web Part

This list is tentative and I'll add more as I go. The reason for this is that the site is still very much a work in progress and it runs on beta software at the moment. Later this month, time permitting, I will add non-sandboxed functionality to support the custom welcome mat functionality.

Here is a screenshot. If you find the series helpful, I hope you'll consider buying one of Dad's welcome mats!

Participating in the Page Rendering Pipeline in SharePoint 2010 Sandbox Solutions - SPUserCodeWebPart

If you have been reading this blog of late, you probably picked up on the fact that I am a bit disappointed by the limitations of sandboxed solutions. I recently updated my original post on the subject to include the following:

<This is mostly wrong>

Issue #4 – Almost No Server Side Rendering – Forget About Using ASP.NET

I thought I would try to work around my ribbon issue with a simple custom WebControl. Turns out that, since the sandbox assembly is installed in ProgramData\Microsoft\SharePoint\UCCache, the regular worker process (w3wp.exe) that renders pages can't load the custom UI assembly because it has no knowledge of the UCCache location. The same applies to code behind assemblies for ASPX.

You can create WebParts (sorta/kinda) but they are also extremely crippled. See http://blah.winsmarts.com/2009-12-You_can_deploy_WebParts_as_Sandboxed_solutions__but.aspx

</This is mostly wrong >

Well, I got to thinking… 'I know that you can create sandbox solutions that include Web Parts, and SharePoint is loading them somehow. Maybe there is a way to get my controls onto the page!'

Turns out there is!!! I give you SPUserCodeWebPart. This little guy can load your assembly and its controls from the user code store.

<WebPartPages:SPUserCodeWebPart
runat="server"
Description="My WebPart" Title="Howdy y'all"
AssemblyFullName="MySandbox, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9120be3acbd2f74f"

SolutionId="YourSolutionIDHere"
TypeFullName="MySandbox.Howdy">
</WebPartPages:SPUserCodeWebPart>

Bear in mind that Web Parts are just user controls and you can use them even when the page is not a Web Part page. That means you can use them on regular ASPX pages and on master pages. This means that you can access controls and handle events on the page that contains this hook – as long as the controls are also contained in your Web Part. It seems that the way this works is that SharePoint generates a page within a page using the SPUserCodePage and SPUserCodeForm classes. The pattern I will be trying will be an ASPX page with a single SPUserCodeWebPart that wraps the control that implements the page logic. If I need to get at the outer shell I'll emit JavaScript to do so.

 

A Reply to Sahil Malik’s Defense of the Sandbox Architecture

Sahil Malik has a response to my SharePoint 2010 Sandbox Solutions are Bad post that you can read here: Sandbox solutions are pretty damn good. He also links to a Facebook conversation wherein Razi Bin Rai asserts "At heart of the argument of 'SB solutions are bad', there is actually more of a resistance against new way of doing things" and Sahil replies "True True Razi".

Not true at all. (I am always amazed when an Internet commenter thinks they know the mind of another from a tweet or a page of text).

There is in fact not a resistance against a new way of doing things. I came to this new technology with a great deal of excitement, but I find it distinctly lacking in its merits.

With regards to Sahil's post - I believe that proxies are a sound and vital architectural choice. But they are not part of the sandbox even though SharePoint provides the means to invoke a specific type of proxy from the sandbox. In SharePoint they are, in fact, full trust components that require administrative access to install. My guess is that those who have permission to use them will do so if they are using Silverlight or heavy javascript with the new client namespace. Furthermore, they will use some form of server side proxies regardless of whatever deployment (sandbox or farm) choices they make.

And why not? By going with a predominately client side technology you don't lose anything from the sandbox that you would have without it. Assuming you have admin access you can solve both issues #2 and #3 mentioned in my original post . But let us be completely honest about what this means; you solve them by having components outside the sandbox. Most, I think, would choose this architecture (proxies to server side services) when the UI is client side JavaScript or Silverlight with or without the sandbox. If we both agree that this is a sound architecture in and of itself, let's not confuse the subject of the merits of the sandbox as it is implemented by talking about something that is clearly separate even though complimentary.

Besides, I don't think full trust proxies will be an option on SharePoint Online or other hosted offerings anyway.

Sahil seems to be conflating my choice of the word 'Bad' with 'useless'. This is not a useless technology, but it is a bad one. As you may know, I've been slowly making Elumenotion into an ISV. I hope to have some success with SharePoint Online and its analogs and so we are working on a variety of workarounds and trying to come up with a serviceable architecture. The fact is: there are workarounds and you can build solutions.

This concession made, let me reiterate what I think was the most important part of the original post. If you are going to do development on 2010 and you have access to the server your default choice should be farm solutions unless you have a compelling requirement to do otherwise – the pronouncements at PDC and elsewhere to the contrary (sandbox should be your default choice) are nonsense. Absent a clear requirement (like the need to run as a hosted solution) going with a sandbox will result is more code with strange workarounds and potentially less secure data for more money and time. If that's not bad, then what is it?

I must admit that I was a little irked that I took the time to come up with three specific examples that Sahil ignored and substituted with a straw man when he wrote his rebuttal. I think I have addressed the full trust proxy point, but let me tackle a couple of his other points so that he need not be irked with me. ;)

First Sahil says 'Farm solutions and custom code is the number one necessary evil on SharePoint projects. It is also the number one issue that causes problems and updates. And it is also the number one issue that causes contention between IT Pros and developers.' To this I can only say '[citation needed]'. It's a huge assertion to make that does not jibe with my experiences or anecdotes from my peers or clients.

Second is that the sandbox provides a degree of monitoring that can prevent rogue apps from killing the server. I agree that this is a great thing especially if you are providing hosted services like SharePoint Online that preclude normal QA and monitoring processes for deployed code. Once again though, if you have the option of traditional development because you own the servers, traditional QA and WMI instrumentation along with ULS logging are a first line defense which should minimize the need for such a system.

Third Sahil says: 'My feeling is that there's been plenty of thought given to where and how those walls have been drawn.' My feeling is that insufficient thought and resources went into making these decisions. At some point they have to ship it and they decided where to put the resources. This stuff smacks of a version 1.0, let's get it out the door deal. I am spending a lot of time in Reflector these days looking at the SharePoint assemblies. If there is a security or performance issue that caused them to deny access to the entire SharePoint.WebControls namespace I do not see it. The code for most of these controls is simple and straightforward. However, there are hundreds of them. My purely speculative guess is that they only had so much manpower to go around and they took the easy way out by blocking them all instead of looking at them individually.

1 - 5 Next
Follow me on twitter!
The Atlanta .NET User Group
  Archive
  Archive (Calendar)
  Skinner Created Themes
  New Skinner Download
  New Skinner Tutorial

 ‭(Hidden)‬ Admin Links


©  2009 Elumenotion, LLC  |   SharePoint Training, SharePoint Consulting and SharePoint Staffing
8075 Cavendish Place | Suwanee, Georgia 30024 | + 1 (888) 653-5021