Blue Theme Orange Theme Green Theme Red Theme
 
Team Foundation Server Hosting
Home | Forums | Videos | Advertise | Certifications | Downloads | Blogs | Interviews | Jobs | Beginners | Training
 | Consulting  
Submit an Article Submit a Blog 
 Jump to
Skip Navigation Links
TechnologyExpand Technology
WebsiteExpand Website
Team Foundation Server Hosting
Search :       Advanced Search »
Home » Project Management » A Programmer's Guide to Starting a Software Company and Building an Enterprise Application - Article 1

A Programmer's Guide to Starting a Software Company and Building an Enterprise Application - Article 1

This is the first in a series of columns in which I will tell you how I started SplendidCRM Software, Inc. I hope my entrepreneurial experience will inspire you as creating a company can be a wonderful adventure.

Page Views : 6649
Downloads : 0
Rating :
 Rate it
Level : Beginner
   Print Read/Post comments Post a comment  Similar Articles  
   Email to a friend  Bookmark  Author's other articles  
 
Team Foundation Server Hosting
Become a Sponsor
 Tag Cloud
 Latest Jobs
More ... 
 Latest Interview Questions
More ... 


This is the third in a series of columns in which I will tell you how I started SplendidCRM Software, Inc. I hope that my entrepreneurial experience inspires you. In my opinion, the creation of a company can be a wonderful adventure.

Article 3

What does it cost to start a company? Not much. If you already have a computer, you have what you need. From a legal perspective, forming a company can be done for $100 over the internet. If you are forming a non-profit, then the type of business entity becomes easy. However, as a small business, you will likely narrow down to either an S Corp or an LLC. I personally prefer the S Corp, but this is probably due to my age and previous experience. It may be useful to note that my accountant prefers an LLC. Your best bet is to do the research yourself. One place to start is http://www.powerhomebiz.com/vol136/structure.htm .

The real cost to start a company is the cost to create and deliver your first product. This means that the real cost is the software required to create the application and the hardware required to test the application. You need to be smart about how you spend your money. When it comes to development software, Microsoft provides lots of free development tools. If you are developing a software-as-a-service solution, then Microsoft can provide free production licenses for Visual Studio and SQL Server as part of their BizSpark program. You can read the BizSpark FAQ at http://www.microsoftstartupzone.com/BizSpark/Pages/FAQ.aspx. If you don't qualify for BizSpark, then your next best option is the Microsoft Action Pack Subscription (MAPS) http://partner.microsoft.com/40016455.

Both the BizSpark and the Action Pack licenses provide a MSDN subscription, which includes lots of software. We use the MSDN to obtain various versions of Windows in the most popular languages. We have tested SplendidCRM on Windows 2000, Windows XP, Windows Server 2003, Windows Server 2008 and even Windows 7. We have tested SplendidCRM on both the 32-bit and 64-bit version of all of the previously mentioned operating systems. Added to the mix, we have tested SplendidCRM in French, Italian, German, Spanish, Portuguese, Chinese and Japanese. It takes some effort to install Windows in a language that you can't read, so our trick was to run the English install at the same time. The screens are almost identical, so while you may not be able to read the words, you will understand what you are being prompted for.

The interesting thing about testing one's application across multiple platforms and multiple languages is that you end up doing more testing and you end up uncovering more bugs. In the end, you achieve a more robust application. But with such a large test matrix, you will need to make the best of virtualization. I am sure that you have heard of virtualization, but for those who that have not, virtualization allows you to run multiple operating systems on a single server. We have been using VMware for more than 8 years, so we are biased toward their VMware Server product. You should seriously consider the VMware Workstation product because of its powerful snapshot abilities. Microsoft also has a new Hyper-V product in Windows Server 2008, but we found VMware much easier to use. Therefore, get a dual processor quad-core machine with 12G RAM and lots of hard disk space and you will be able to run a bunch of VMs simultaneously.

When it comes to computer hardware, you are not going to get anything for free. The real trick to getting good deals on hardware is to purchase new hardware at outlet prices. At SplendidCRM Software, we are big fans of HP hardware; we have lots of ProLiant servers and lots of HP Workstations. All of the hardware was purchased at outlet prices with a 40% to 50% discount. You could get refurbished hardware directly from HP, but this hardware typically only has a 1-year warranty. When you purchase hardware at resellers, you get the full new-machine warranty, which is typically 3 years for servers as well as workstations. So, check the outlets at PC Connection, CDW and Provantage. eBay is also an option, but we have had better luck with hardware from certified resellers, which have a no-restocking-fee return policy.

That's all the business advice I have for this article. Now prepare yourself for an abrupt transition to a programming topic.

Stored Procedures

SplendidCRM relies heavily upon SQL Stored Procedures and SQL Views. I believe that you may be interested as to why I made this choice. If you do a search on Bing for "Stored Procedures vs Dynamic SQL", you will see that a raging debate has gone on for many years. At the top of the list is Andres Aguiar's Weblog, http://weblogs.asp.net/aaguiar/archive/2006/06/22/Stored-Procs-vs-Dynamic-SQL.aspx. While it is not my intent to add to this debate, I believe that it is useful to document how and why I used stored procedures within SplendidCRM.

Let me set some ground rules first. Anytime we pull data out of a database, we do so using a SQL View. Anytime we put data into the database, we do so using a SQL Stored Procedure. As a general rule, we put the business logic inside the stored procedures and the views. There are rare exceptions to these rules, such as the use of a stored procedure to read IMAGE or BLOB data, or the use of direct UPDATE statements when dealing with custom fields.

The primary motivation for putting the business logic in the database is to increase performance by reducing the network traffic and by letting the database do what it does best. A relational database is all about relations, so the best place to put relationship logic is in a SQL view, where the relationship can be defined in the language of the database. Some individuals believe that it is never a good idea to put business logic in the database, and to these individuals I present SplendidCRM as the example of the right time to do so.

Another key motivator for using SQL stored procedures and SQL views is to allow each database platform to have its own implementation. SplendidCRM currently supports the following database platforms: SQL Server, Oracle, PostgreSQL, MySQL and DB2. The procedures and views then become the data-access layer, whose definition provides the necessary separation between logic and data. While there is a little code in the C# that handles the differences between the database platforms, the major difference is handled by a separate set of stored procedures and views.

Now that we have the database completely abstracted, the fun can begin. We can query the metadata of the database and create C# wrappers around all stored procedures. The C# wrappers provide strongly-typed functions that can ensure that the right data type is used at all times. And, in the event that the data type changes, the C# compiler will generate an error at compile time instead of at run time. We also use this metadata when importing data. It allows us to ensure that the proper field names are used without having to manage our own list of available fields. The SQL views provide a similar amount of metadata and allow us to dynamically provide lists of available fields so that we can provide our users with a Report generator.

One of the biggest debates regarding stored procedures vs dynamic sql has to do with performance. The best evidence that I can provide is a comparison between SplendidCRM and SugarCRM. We have found SplendidCRM, which uses stored procedures, to be twice as fast as SugarCRM, which uses dynamic sql. If you don't believe me, then I encourage you to experiment for yourself. While SugarCRM has been optimized for the LAMP stack, you can install the SugarCRM Community Edition on a Windows Server using a MS SQL Server database. That would rule out the operating system and the database platform as possible reasons why SplendidCRM is so much faster. While some individuals may argue that C# is faster than PHP, I am going to assume that they are equal. This assumption leaves only the difference in architecture, and then the conclusion proves my point that stored procedures are better.

I hope that you have enjoyed this third article in the series. Please watch for article 4 within the next few weeks.

Comment Request!
Thank you for reading this post. Please post your feedback, question, or comments about this post Here.
Login to add your contents and source code to this article
 [Top] Rate this article
 
 About the author
 
Author
Looking for C# Consulting?
C# Consulting is founded in 2002 by the founders of C# Corner. Unlike a traditional consulting company, our consultants are well-known experts in .NET and many of them are MVPs, authors, and trainers. We specialize in Microsoft .NET development and utilize Agile Development and Extreme Programming practices to provide fast pace quick turnaround results. Our software development model is a mix of Agile Development, traditional SDLC, and Waterfall models.
Click here to learn more about C# Consulting.
 
Introducing MaxV - one click. infinite control. Hyper-V Hosting from MaximumASP.
Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
Dynamic PDF
ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications.
Discover the Top 5 .NET Memory Management Fundamentals
To write the best .NET code, you need to know exactly how the .NET framework really manages memory. Ricky Leeks presents the Top 5 fundamental facts of .NET memory management. Learn more.
Nevron Chart for .NET 2010.1 Now Available
The leading .NET charting control now features PDF, Flash and Silverlight export, visualization of large datasets and more. Deliver true charting functionality to your BI, Scorecard, Presentation or Scientific apps. Download evaluation now.
ASP.NET 4 Hosting
Get 2 Months Free of ASP.NET Hosting for Only $4.95/month! Receive FREE MS SQL and MySQL Databases Including ASP.NET 4/3.5, MVC 3.0, Silverlight 4, Windows 2008/IIS 7.0 Plus FREE IIS 7 Modules. Host UNLIMITED ASP.NET Web Sites – Click Here!
 
 Post a Feedback, Comment, or Question about this article
Subject:
Comment:
Discover the top 5 tips for understanding .NET Interop
Become a Sponsor
 Comments
Superb article.. by Dhiren On May 28, 2009
Hey Paul,
Nice article. I really liked this one.
Reply | Email | Modify 
Nice Article by anu On June 10, 2009
nice article, you have finally convinced me to use GUIDs.

I have a database migration project pending that does not use GUID. Guess I would have to hack it  somehow.

looking forward to the rest of this article. The business story is great! Keep it up
Reply | Email | Modify 
Really Nice by Kirtan On November 21, 2010
Really Nice And Inspirational article :) :thumbs up :
Reply | Email | Modify 
6 Months Free & No Setup Fees ASP.NET Hosting!
 © 2012  contents copyright of their authors. Rest everything copyright Mindcracker. All rights reserved.