Barring what the others have said about "use a real database", here is what
I would do:
1. If the xml is pretty stable, then you could put it in the Application[]
object.
What I usually do is write a method:
public void XmlDocument GetTheDocument( bool forceRefresh )
{
//if the object is in the Application cache, return it
//if the object is not in the cache, create it , put it in the cache
//if the bool forceRefresh is set to true, ignore whats in the
Application object, get the freshest, put it in the cache for future people
}
2. If you want to query on it, then you'll have to write some XPath
statements, and use .SelectSingleNode or .SelectNodes
Working wiht xpath's and nodes is ... heavier than I like. So let's go to
#3
3. If the xml is in a format you can't control, you may be able to massage
it into DataSet friendly xml.
Why? If you could take the xml, make it DataSet friendly, and create a
strongly typed dataset for the data, you could have an object you can work
against.
For Select's and Row additions and such.
See
http://sholliday.spaces.live.com/Blog/cns!A68482B9628A842A!148.entry
and after you read it (its quick) you could do something like
MyStronglyTypedDS ds = new MyStronglyTypedDS();
ds.Authors.Select ("LastName='" + "Smith" + "');
Alot less Xpath stuff.
4. Look at this also:
http://sholliday.spaces.live.com/Blog/cns!A68482B9628A842A!125.entry
You can easily convert it to use Application (instead of Session). And have
a smarter holder.
Throw in some 2.0 Generics, and you can get slick with it.
That code is just a fancy wrapper for the Session object. But I like it
alot better than coding directly against the Session[] object.
"Yehia A.Salam" <ye*****@hotmail.comwrote in message
news:C3**********************************@microsof t.com...
Hello,
I am building an ASP.net website that connects to an XML database, and was
wondering which is the best way to create the connection if I need
frequent
access to the database, I have one of the three options:
1. Use one instance of XmlDocument thought the whole Application by
initializing the class in Global.asax in the Application_Start Event.
2. Use one instance per session using the Session_Start Event.
3. Create and initialse the XmlDocument as late as possible and close it
as
soon as possible, by creating a new instance and close each time per
access.
>
I I know that if I were using SQL database I would go with option 3
because
of the connection pooling and the security concerns, but this feature is
not
available for XmlDatabases AFAIK, should I depend on the caching features
of
ASP.net? , what is best design of the three to use?
Thanks
Yehia A.Salam