Friday, May 14, 2010

SharePoint WebParts and Ajax UpdatePanel issue

Currently working on an ASP.NET user control that is running in a SharePoint web site. The user control is hosted inside of a SharePoint web part. One of the requirements was that the page have a better user experience on one particular call that took upwards of 15 seconds to complete.

So my solution was to use a ASP.NET Ajax UpdatePanel and UpdateProgress controls to do so. Problem that I saw was the page worked great for the first postback, but then the page was for the most part dead in the water, and would not post back again. I searched for about 2 full days to fix the problem. Part of that time was actually because I was kind of misdiagnosing the issue, but I finally stumbled upon this script. I added it to my control, and everything worked great. So I hope this helps someone else:)

Wrap in some javascript tags, and you should be good to go...

_spOriginalFormAction = document.forms[0].action;
_spSuppressFormOnSubmitWrapper=true;

Wednesday, April 28, 2010

PaaS Death Match

Yesterday as a part of the first ever Centric I/O event I helped to facilitate a session dedicated to educating our technologists on different Cloud Computing Platform as a Service (PaaS) options.

We basically had about an hour and 15 minutes to present, and we chose to analyze Google App Engine (GAE), Amazon Web Services (AWS), and Microsoft Windows Azure. The session was setup to basically allow each presenter 15 minutes to pitch their platform. In that 15 minutes each presenter had slides and demos showing and talking about things such as Features, Pricing, SLA's, Development Experience, Management Portal etc, and then in the remaining 30 minutes we had a panel discussion where the audience could get their specific questions answered from the presenters as it pertained to each platform, or just the general topic of Cloud Computing. Overall I think the session was a huge success. Michael Collier presented on Azure, Bill Klos presented on AWS, David Dale presented on GAE, and I facilitated the discussion, which is a nice way of saying I just sat back and enjoyed the show:) The guys did a great job along the way of pitching their product, and taking some jabs at each other along the way. Although I thought Bill and Dave would have gone after Microsoft a little harder. They went easy on Michael.

OK enough with the setup what shook down from this experiment? Well let me first caveat that most of my practical experience with PaaS is with Azure so for anyone brave/bored enough to read this please interject where I may be misrepresenting the folks at Amazon and Google. My thoughts and commentary are below...

AWS
I think the first point to make about AWS in comparison to the other 2 products is about control, and the level at which you interact with the AWS cloud. I am not a huge fan of categorizing and drawing boxes around all the cloud acronyms i.e. PaaS, IaaS, DaaS, SaaS. I think that is for vendors and selling stuff to do, but EC2, which is the compute component of AWS really gives you the most control to pick your platform, pick the size of the machine, load your software, number of instances etc, and off you go. They do have image templates, and things you can use to get started. So if your situation dictates a very customized environment AWS may be the way to go.

I would definitely say that at this point AWS has the most mature offering of the three, which kind of states the obvious, because Amazon is really the first to market, and have the most breadth in the services they offer. From a pricing perspective you are going to be looking at roughly 8 cents an hour for compute on a Linux machine and 12 cents an hour for a Windows machine. AWS has by far the most flexible pricing models, which can be good and bad. Good because you have options, bad because it is almost overwhelmingly flexible. They also have a very well documented security overview that I think really lays out the current state and future direction of their logical/physical security environment, certifications etc.

GAE
GAE to me is then the far opposite of the spectrum in regards to control vs. AWS, and Dave made that abundantly clear in his presentation. With GAE you don't know size of the machine, what platform, how many instances, any of that stuff. Google abstracts all away for you with the goal of allowing you as a developer to focus on what matters most to you building great applications. As more of a developer focused guy that is music to my ears. I want someone else to worry about all of that stuff unless I really have to. I have plenty to dig into, and will share in future posts about more of the details of GAE. The platform currently supports the Java Runtime as well as Python. From a storage perspective currently GAE provides a highly scalable schema-less database called Big Table that has a very easy to use persistence model. They do have storage options for file based data, and there were rumblings in the crowd that they have recently released relational database and full JDBC capability as well.

GAE to me is a dream come true for an entrepreneur like myself. From a pricing perspective you can go a pretty long way on their free plan before you even have to pay a dime, roughly 5 million page views per month and 500MB of storage. Once you hit that threshold you are looking at roughly 10 cents per hour compute time, 15 cents per GB storage, and 10-12 cents per GB per month of bandwidth in and out. It feels to me at least in the areas in the Midwest where we do work that from a corporate perspective GAE might be the toughest sell. For example, in comparison to AWS their overview on security is really light. It basically just says trust us...we are Google. For some conservative CIO's they might need more than that, but I am also sure that if the customer is large enough more information can be provided. Overall though I was super impressed with GAE, and cannot wait to learn and write more about it.

Azure
As I stated previously Azure is really the platform I have the most experience with. I am actually a very happy Azure customer (www.todayforward.com). I think in terms of control the implementation of Azure fits somewhere in the middle of AWS and GAE. In the Azure portal I can control the number of instances, and the size of my virtual machine, but I do not know details about what type of machine is actually running behind the scenes exactly. Out of the gate is always going to be Server 2008, but going forward who knows. Windows Azure currently supports a number of technologies including obviously .NET - PHP, Ruby, Java. Although I cannot really comment yet on the experience of running anything other than C# on Windows Azure. Azure also has a number of storage options: Table Storage which is synonymous to Big Table and Simple DB (AWS), Blob Storage used for files whether it is docs, videos, images, audio, and Queue Storage for queue based processing. Azure also has a full relational system in the Cloud with their SQL Azure product.

Microsoft broke from CTP in January for full commercial use of Windows Azure. The pricing high level is roughly 12 cents an hour for compute, 15 cents a month per GB of storage, and 10/15 cents for bandwidth in and out. Windows Azure as of commercial launch does not have any specific security or audit certifications in place, which you can see on their FAQ, but I have heard and read from folks on the product team that it is on the roadmap.

In Conclusion
This was obviously a pretty long rant, and still at a very high level. My intent was to just give a little flavor for what we did as a compare and contrast of the 3 platforms. In different ways I was very impressed with all 3. I think they all have their place, and the competition is great for the industry. In future posts I will start to dive further into the details of each, and hopefully provide some useful nuggets.