Sunday, March 30, 2008

AJAX vs RIA's and Flash vs. Silverlight

In a question from the audience, I was asked to describe the differences between various technologies AJAX, Flex and Silverlight.

To start, AJAX is not a new concept, some of the elements such as the XML HTTP were available in very early versions of browsers.  That said, you needed quite a bit of skill to and effort to implement.  Specification and creation of JSON and WSDL have helped to mature this technology and actually make it not "rocket" science to implement.

AJAX vs RIA

Comparing these is quite difficult and full of debates, but here are a few items of note:

AJAX Pros

  • does not require any browser side plug-ins to work
  • Cross browser capable
  • Server-platform neutral
  • ASP.NET provides a fully integrated developer experience
  • provides enhanced user experience.

AJAX Cons

  • cross browser behavior is complex, new features and browser caps change with every version.
  • very limited local storage (using cookie only)
  • no pixel level support
  • other IDE behaviors is not
  • Limited mobile support

RIA Pros

  • Rich and sophisticated user interface possibilities
  • local and disconnected state
  • network API (other than HTTP)
  • Extensive development environment and debugging

RIA Cons

  • rich graphics still require work from designers
  • requires an browser plug-in
  • Network download is sometimes large

With all things considered, there are pros and cons how each technology can applied. As such, it is important to understand the business requirement and strategy when making these choices.

I my humble opinion, RIA represents the next evolutionary step of user interfaces for the web, mobile and other alternative user interface technologies to desktop.

Flex/Flash vs Silverlight  or RIA's

Flex and Silverlight are a new generation of technologies that we have began to commonly refer to as Rich Internet Applications or RIA technologies. 

Today there are a few choices when you develop RIA applications.  You can use Flex to develop Flash based RIA's, or Visual Studio 2008 can be used to develop Silverlight applications.

In an effort to not say what have already been said, a few months ago as I was doing some evening reading, I have stumbled upon a very interesting (although lengthy post) which compares the two technologies.

http://silverlight.net/forums/p/634/1076.aspx

This is a fantastic post, in part because it provides great detail regarding both technologies but also because it is being responded to by evangelists from from Adobe Flex team and Microsoft Silverlight.  The initial question as you can see came from a regular developer, but the conversation quickly turned technical and non-hostile from both specialists covering the technology.

An absolute great read....

I am a huge proponent of app lifecycle, developer capability and platform maturity.  That said, when you compare technologies to be used on the project, you need to take into consideration how many times will the developer be switching between IDE's to accomplish a maintenance task.

Switching between different applications for the development causes a shift in context and a loss of focus... which ultimately translates into loss of productivity.  Usage of multiple development environments also causes fragmentation in the upgrade and maintenance cycles.

Microsoft has the made the winning decision here by allowing the developer to concentrate on a single IDE with a single technology (.NET) that can be used both in the client and on the server.  This is not the case for Flash/Flex combo.

 

I3 =  Inspire, Innovate, Implement.

Tuesday, March 18, 2008

SQL Server Data Services (SSDS) - a powerful proposition...

As most of the attendees would agree, I can honestly say, information presented at MIX08 was very powerful.  From the announcements, to keynotes, to sessions it is really tough to say what created a more powerful message.

Many blogs have written about the nice bits announced at the MIX such as IE8, Silverlight Mobile, Silverlight 2.0 Beta, among others.   The session that was not given high level of attention, the SQL Data Services sent a really powerful message.

"WHY?" you ask, I look at the world as an architects' buffet.  Choices are about, from Sliverlight and Flex, WinForms or ASP.NET, OBA vs VBA.  The point is, anywhere you look you have choices that really make up the alphabet soup we call Application Architecture.  

So reason with me for a moment, lets say that you are choosing your next best platform for your business. You are inevitably faced not only with technical choices, but also with realities of the business (otherwise known as time-to-market and financial constraints) that cause you to make hard and careful decisions.  The business exec tells you that he is forecasting organic growth and adoption, but can't really pin-point how much or even how fast.

As a person of reason (which most Architects are), that kind of problem would make you think "Lots of hardware, fully distributed, redundancy in all places".  While that kind of quick thinking works for web and app servers, database scalability and management created a larger and more complex set of problems. So there you are arguing that you need $200K in hardware and infrastructure prior to making even a single dollar of sales revenue.   Interesting to note that many business execs have a hard time parting with their money prior to some assurance that what you are delivering will work and scale to their SLAs.

(Note: if $200K does not strike you as much, make it $2M to make it a better point)

Here comes the SQL Server Data Services....

Architects, as do business managers like to play out the what-ifs.  There are a number of "what ifs" examples, lets take a look at a few:

  • What if you could decide how and when to start hosting your own infrastructure?
  • What if you could decide to save your money and not hire a DBA, or get a SQL license, or worry about backup and redundancy?
  • What if you needed the kind of capacity that is nearly impossible to provide for a fixed budget as it is not getting used all year long (think seasonal load, Shopping trending in Dec, or Tax Jan-Apr)
  • What if you could bet on a platform that removes the risk of paying up front just in case it does not pan out?
  • What if you wanted to have your data geographically co-located for faster access?

These are just some of the ideas that are going to be possible with the SQL Server Data Services.

Microsoft has long been a leader in redefining what the “ultimate development experience” is.  This has been proven again, and again, and again (this time with with VS 2008). 

There has not been as much fanfare on the Data side of the isle since the introduction of Strongly Typed DataSet, but technologies such LINQ, ADO Entities and SSDS are set to redefine how developers interact with data.

From my perspective, we are at the dawn of next generation of architectures that will bring incredible possibilities and limitless potential. 

This will truly revolutionize how developers perceive data connectivity and availability, how applications work with data, and how end users will be empowered by the new breed possibilities.

Saturday, February 23, 2008

ASP.NET Dynamic Data

Back in May 2006 Microsoft introduced a pretty cool sample application called BLINQ.  As the sample description mentions:

"Just point Blinq at a SQL database and it will create a web site with pages that display sorted and paged data, allow you to update or delete records, create new records, and follow relationships between tables in your database".

Over the months that followed and I know that many have waited to see where this sample application and technology will go.  Months became years, but what can I say, the wait was well worth it.

Recently the ASP.NET team introduced a very cool technology called ASP.NET Dynamic Data, the concept that most of applications are simple CRUD applications is key to understanding the enormous benefits of  this ASP.NET 3.5 Extension. 

Developers creating applications using ASP.NET should take a very serious look at this technology as it will save them countless development hours.

 

Remember, the line you did NOT write does not contain a potential bug.

;)

Thursday, February 21, 2008

Common Performance Hurdles

I have been asked numerous times to review application design and/or implementation due to lack of desired performance.

More times than not, the issue is not within the .NET code itself, rather in the misuse of the View State or the session variable.

Remember that performance of a ASP.NET page is not merely the time it takes to render controls (HTML, JS, CSS, etc...), it also includes the time it takes to send the bytes and bits over the wire.

Dave Reed has a fantastic post on how to properly use the View State

Check it out in this post.

http://weblogs.asp.net/infinitiesloop/archive/2008/02/19/truly-understanding-viewstate-comment-index.aspx

Mike Voldarsky wrote a good article a few years back on the Session State.  You can find that here:

http://msdn.microsoft.com/msdnmag/issues/05/09/SessionState/default.aspx

Wednesday, February 20, 2008

Client Product Roadmap Announced

In his latest post Scott Guthrie discusses the enhancements to the desktop platform.  These new enhancements will be good news for many of the developers targeting the desktop.

http://weblogs.asp.net/scottgu/archive/2008/02/19/net-3-5-client-product-roadmap.aspx

For those who did not make the connection (or just may have forgotten), there is an ASP.NET Web Road Map that Scott has published back in November.

http://weblogs.asp.net/scottgu/archive/2007/11/29/net-web-product-roadmap-asp-net-silverlight-iis7.aspx

These are a must reads for the developers and architects targeting these platforms.

Friday, February 15, 2008

Microsoft Releases .NET 2.0 SP1 and .NET 3.0 SP1

Last week Microsoft released two service packs for the 2.0 and 3.0 versions of the .NET framework.   Download links did not contain the details (or it was not apparent) as to what was fixed so I thought I post it here for anyone who is interested what issues have been addressed:

 

.NET 2.0 SP1

http://support.microsoft.com/kb/945757

.NET 3.0 SP1

http://support.microsoft.com/kb/945826/en-us

 

To Download these SP1 you can use Windows Update or the links below:

.NET 2.0 SP1

http://www.microsoft.com/Downloads/details.aspx?familyid=79BC3B77-E02C-4AD3-AACF-A7633F706BA5&displaylang=en

 

.NET 3.0 SP1

http://www.microsoft.com/downloads/details.aspx?familyid=EC2CA85D-B255-4425-9E65-1E88A0BDB72A&displaylang=en

Saturday, February 2, 2008

ADO Entities - The new beginning....

 

As a developer you are (most likely and definitely hopefully) eager to use tools that will get you recognized as the one who stands out from the typical developer.  You strive to be better at what you do by following known, well defined and proven patterns. You reach for the tools to make your solutions more predictable.

This was relatively easy in most of the facets of application development, until it came to changing schemas and other database related areas.  You have stared the DBA's in the eye and at some points prayed that the changes they are making would not cause you undergo a full rewrite or a substantial tear-down of your application.

While you hoped and prayed, ADO.NET team has listened to your prayers and released a very slick framework called ADO Entities and an ADO Entity Designer (aka Astoria). 

This is truly a new and very nice beginning.  Imagine the new world where:

  • DB Schema can be exposed as objects
  • those objects are actually defined as a Model to your application and not just straight schema map
  • those objects can span (use multiple tables to store/read info)
  • or tables can be merged into a single object
  • objects collections can be used in a JOIN and other LINQ related operations
  • lazy load and concurency  is no longer your issue
  • compiler will let you know if the column name exists
  • you no longer have a need to write or maintain complex DAO layers

Well,  that world is here now...

Currently in Beta 3 this is a nice set of tools to be adding to your developer toolbox. 

Join the excitement and start exploring the new and wonderful world of ADO Entities.

http://www.microsoft.com/downloads/details.aspx?FamilyId=15DB9989-1621-444D-9B18-D1A04A21B519&displaylang=en

 

Enjoy and be sure to let me know what you think....