You do have a point, my question was relatively broad and vague,
partly because I didn't want to bias the responses in any particular
direction. Perhaps also I was a bit too quick to throw out the "f"
word, my apologies.
I do not expect you to write my application for me, and I have been
performing a great deal of research, as well as consulting with
professionals within my organization and within my circle of friends.
I would comment that asking for general suggestions about topics to
research, reference sources or commercial products that might help me
meet my needs is a far cry from doing my job for me, and I probably
should have presented my original question to more clearly request
specifically that information. Incidentally, I have worked for 3
Fortune 500 companies for a total of about 10 years, just not
doing .NET and n-tier architecture design.
I think at this time we're leaning mostly towards a 4-tier solution
using Javascript,
ASP.NET,
VB.NET and SQL Server. Most of the
applications we would be converting are relatively small Access 97
databases, with data in either Access 97 or SQL Server back ends, many
of which have import and export interfaces primarily using flat files,
FTP and DTS. The primary goal of my entire project is to make sure
that our future architecture framework is consistent and easily
maintainable across all applications, and I'm trying to do as much
legwork as possible before we start coding to ensure that.
To give you more details as to what we are working on, we want to try
to incorporate as many of the following concepts as we can into the
overall framework we use (this is the condensed version):
1. Common code to handle logins, password changes, lockouts, auditing
all login/logout activity, account creation, activation, deletion, and
modification (and auditing thereof).
2. Common code for auditing all edits on all fields on all databases
- possibly using XML diffgrams. Ideally this would be automatically
built into the data access layer so that no additional code would need
to be written except in unusual cases. This would also lend itself to
having automatic history reports showing edit history at different
levels (field, record, parent record) which could be shared across
applications.
3. Common rules and methodology for handling interfaces with external
programs - want to move away from DTS which is the tool we've used in
the past.
4. Common reporting interface with tools designed so that custom ad-
hoc reporting can be more easily created for each application, as well
as the ability for users to store and retrieve their own personal ad-
hoc reports or publish them (given sufficient authority) so that other
users can access.
5. User communication tool both within the application and via email
so that programs can generate messages as needed and convey responses
back to the sender
6. Relatively robust data dictionary so that data validation and
calculation formulae can be stored and their changes tracked over
time. The idea would be to have the data access layer contain classes
that understand how to use the data dictionary, so that the business
layer could inherit the metadata for each of their data elements
without having to individually code them for all fields in all
databases. In addition, the dictionary would define security levels
for individual fields, so that SSN's for example would be hidden by
default unless the user specifically requests to view them, and each
viewing would be logged automatically in all applications. Ideally
this could be programmed to automatically configure custom web
controls to handle validation (I was looking at PeterBlum's suite as
one option).
7. Common interface and practices for help within the application
(tooltips, url's to further information, etc), as well as user and
training manuals and technical documents. Ideally the data dictionary
could be used to automatically have this be presented in the user
interface without needing much additional coding.
8. Common error handling procedures and methodology which logs
application details when errors occur as well as sending messages to
admins/programmers as needed.
I have already been designing a lot of these elements in my head for a
few years before I even started this job - I was just hoping (and have
to assume) that at least some of them existed in some prepackaged form
by a vendor out there so that I don't have to reinvent the wheel.
One of the databases we will be converting is used to track patient
applications for charity care coverage. Several dozen users enter
patient demographics, and track details such as patient income,
assets, and other coverages they might have, then render a decision
based on several sets of complex criteria. There are about 10
interfaces (both import and export) with external systems, all
currently via flat files and DTS, several of which automatically
generate emails. Users very frequently request ad-hoc reporting,
which the system currently does not support at all (i.e. I write
queries to give them the information they requested).