We are going to start a fairly large integration effort to kill many Access and Sql Server databases and get everything into a single corporate system. There are also a number of other systems (accounting, CRM, payroll, MS Exchange) that contain critical data that we need to integrate (use to verify data in other systems), report and otherwise disclose. Some of these systems are likely to change over the next few years, so we need to isolate our systems so that they are ready for change.
Ideally, we could consistently represent our forms as much as possible from our our systems, without reworking them for each system. We are currently targeting SharePoint (2007 and soon 2010), Office (2007 and 2010 soon - Word, Excel, PowerPoint and Outlook), Reporting Services, .Net console applications, .Net Windows applications, shell extensions, and with the ability to impact some functions on mobile devices (BlackBerries currently, possibly iPhone later) and through our website.
We are moving development to Visual Studio 2010 (since 2005) before migrating to SharePoint 2010 and Office 2010. Given that most of our development is currently focused on the .Net framework (mainly in C #) it’s quite logical to stick with this if there is no good reason to switch frameworks / platforms for some aspects.
We are thinking of your standard database-> Data Integration layer> Business Objects Layer-> Web Services (or REST) Layer-> Client Application plus makes our own client application with WPF (or something else?) Forms can also displayed on MS systems (SharePoint, Office, Windows).
So, we don’t want much, just everything :) In principle, we must isolate ourselves from database and system changes, create an API that can be used in all our systems, and then do this functionality available in our client applications.
I really want to get pointers from everyone who has tips on how to do this. Should we consider the Corporate Library as a place to start or curtail our own? Is REST with ASP.Net MVC2 a better solution than web services for such a system? Will WPF deliver forms reuse or is something better?