Thursday, August 11, 2011

SharePoint vs ASP.Net

SharePoint was becoming popular since MOSS 2007. And the release of SharePoint 2010 makes dream come true: it is possible to build a huge system without help from developers!

There are so many out of the box features, sometimes I even wondering why there are still so many companies choose Asp.Net instead of SharePoint foundation server 2010 (the basic free edition of SharePoint 2010).

In this post, I'd like to share some thoughts regarding the difference of development approach between project and SharePoint project.

For Asp.Net, we don't need to purchase extra license to set up the site; for SharePoint, the license fee is quite high (unless choose the free version SharePoint Foundation Server 2010). Comparing with the cost of software development, normally it's worth to purchase a solid platform as the base of the system.

For Asp.Net, a developer doesn't need to be expert of IIS, SQL Server to join the development team; but for SharePoint, you have to be a SharePoint administrator before building even a simple web part. Or else, problems may pop up very soon.

For Asp.Net site, minor change may also ask for complete test of the whole site; for SharePoint, the whole system is data driven, so normally we only need to test in relatively small scope.

For Asp.Net site, system upgrade is definitely a big issue, so it is reasonable that clients don't want to upgrade their system unless have no other choices; for SharePoint, normally we don't need to change existing customization (assemblies) to make them compatible with the new version, and all new features are available immediately with the new version.

For Asp.Net site, we have to consider all the basic modules, such as "system backup", "disaster recovery", "user authentication", "data permission control", etc.  For SharePoint, those modules are all there, we just need to give users relevant training.

For Asp.Net, we need to confirm the main modules, the data structure and features before building the system. Then normally we start from the most basic modules, create main tables in database, then most important modules. 

For SharePoint, the system is already there! We just need to confirm that client doesn't have special requirement, such as "need to store 50 million records in one table, or have 50TB video clips".  Then we need to figure out what functionalities are needed, and how to implement them without coding. Before writing the first line of code, 90% of functionalities should be completed (configured).

The point is, in many cases, the clients don’t know what they need; and sometimes, they even don't know what they want. The world is changing so fast, it might be impossible for them to figure out what they really need.  SharePoint provides them the capability to try and then find it out. And then they can change the non-critical data structure easily.

(So far, the post above is based on 4.5 years experience on SharePoint, and around 4 years on ASP.Net)

Update (15/08/2011)
Thanks for the comments from "unknownjournal".  I agree there are many third-party framework, libraries, tools and solutions based on Asp.Net, but, in my opinion, they are really threats to system maintenance.

I have some experience on code generation tool "CodeSmith".   It's amazing to see how easy it is to build a multi-layer application with the help from code generation tool. However, when the previous developers left company, it may turns into a "forbidden area" to new developers when they try to change some modules.---- These tools, frameworks, libraries or solutions are just not popular enough (or too many bugs, not flexible, etc.)

Many times I got call from clients because they could not find resource to support their system with some third-party components.

This problem may not be a critical issue, but is a serious risk everyone needs to evaluate before making the decision.

Update (17/08/2011)
SharePoint site is not going to replace Asp.Net site soon, not even for intranet system. Besides the license issue, the biggest problem with SharePoint is, it needs broad background knowledge for SharePoint administrators and developers.  To build a solid system, the understanding and experience of "SQL Server, network configuration, Asp.Net(IIS), security, ISA, Virtual Machine, etc." are all necessary.

SharePoint is huge monster.  If you are not good at trouble shooting, then normally would feel frustrated everyday.

No comments:

Post a Comment