I disagree. MSDE is an alternaive which is free
There are plenty of free databases. This, however, doesn't address any of
the other issues I brought up.
Restarting the application with 100+ users is a big issue.
This is an assertion, not an argument. An argument contains logic that
justifies the assertion. It is stated as if it were always true. It is
certainly *not* always true, and I would argue that if the application is
designed correctly, so as to handle application restarts (which, as I
pointed out in my earlier message, is an inevitable certainty at some
point), and Best Practices are followed, it does *not* have to be a "big
issue."
To further elaborate, Best Practices include (but are not limited to) the
following:
1. Only data which very infrequently changes should be stored in the
web.config file. Data which changes frequently can (and should) be stored in
other ways (such as a database or some other disk-based storage device). The
web.config file is an application configuration file, not a caching
mechanism.
2. The application should be designed so that it recovers its configuration
state smoothly. This is of course mostly dependent upon number 1, but there
are other considerations involving the application startup and shutdown
logic.
3. Changes in the web.config file should be made very infrequently, and when
done so, should be done at a date and time during which the traffic to the
site is lowest, to minimize service interruptions.
Having a change of system constants using an SQL database is far better
than interupting
all your users.
ASP.Net has been around for over 4 years now, and is in its second version.
A large group of the world's best software architects have worked on this
technology, and they seem to disagree with this assertion. Perhaps they have
thought of a few things you have not. I brought up a few of them in my
earlier message, but you didn't address them.
The most salient of these points is that any such settings must be fetched
repeatedly from the database (each time they are used by *any* instance of a
client object), in order for the application to be synchronized with any
changes to the data in the database. Since these settings are stored at
application scope, they are likely to be accessed often. This entails a
performance issue, as well as the danger of any single database request not
succeeding for any reason. This sort of thing *does* happen, especially with
network database servers, which are at the mercy of the vagaries of the
network they reside on. Both the performance hit and the danger of a failed
database call are increased as the size of the application and the number of
concurrent clients increases, which makes this solution unscalable.
The web.config file, on the other hand, is read only *once* at the start of
the app. It's data is cached in memory, and if any changes occur, it is
refreshed from a file, which is not dependent upon the vagaries of a
network.
No solution is perfect. However, based on the facts which I have enumerated,
I would have to agree with Microsoft that their solution is the most perfect
currently available.
--
HTH,
Kevin Spencer
Microsoft MVP
..Net Developer
Presuming that God is "only an idea" -
Ideas exist.
Therefore, God exists.