The Provider Model in the Real World
A friend of mine has his own company called
Datex Media that builds real estate managment "portals". These are web sites designed to help his clients view and edit information about buildings, tenants, and vendors quickly and easily. His clients primarily use the database installed with a product called MRI, but he has a few that use Yardi and other technologies. In these circumstances, he forks the code of his real estate business logic framework into a new branch for these clients who stray from the MRI path. Obviously this opens a can of worms. Any improvements his developers made to the main code base are not realized in the branches, so work needs to be repeated.
The provider model is extremely prevalent in ASP.NET 2.0. Several features, including membership and personalization use it. While I was talking with my friend the other day it struck me that the provider model would be an extremely beneficial approach for his company. After all, it seems that he is almost always signing on new clients.
My question to those who read this revolves around the method by which a company like Datex can take their entire business framework (which, unfortunately, contains direct stored procedure calls with the SQL Server platform) and convert it to use a provider type approach whereby he could use his framework for MRI running on SQL Server or Yardi running on Access or any number of real estate packages running on other database platforms.
I have never taken on a project such as this. So much of the data retrieval code already exists in the business framework that I am nervous about something. Would sifting through the hundred classes and thousands of methods and properties to abstract out the data access be task that is worth it? Should a company that is not in a financial position at this point to fund such an undertaking throw caution to the wind and do it anyway? After all, he has gotten along just fine so far. His company makes money with every project. Why should a 400-500 hour project be considered if things are already rosey?
Any input would be greatly appreciated.