Switching the database engine is often cited as a reason for the data tier. I agree that this requirement is probably limited to application software suppliers that must be able to host the appplication on one of several popular database management systems.
The project that I am just finishing up illustrates what I think is a much more common situation. Most examples of the data layer are built using a single backend database. In my project, the backend has nine databases, all of them running on various versions of SQL Server. Most of these databases are part of third-party applications; creating a single database is out of the question. The data for a given logical object is often spread over several of these databases (indeed, the location of the data may change as the logical object moves through the process). Several of these applications have been replaced within the last year. More could be replaced. The purpose of the data tier in this application is to hide all of this messiness from the business objects. The business tier asks for data about the logical object. The data tier not only retrieves data from the various data bases (using stored procedures), it also merges the data into a coherent form, often changing the coding of the various data items. When an application database is upgraded or one application is replaced by another application with a different database structure, only the data tier should have to be changed to maintain the existing functionality. The business objects should keep going with minor, if any, impact. For me, the most important function of the data tier is to offer a coherent image of the data that can survive over a number of years. Hiding the specific DBMS is a relatively small part of that functionality. Jon Stonecash >From: Ron Jacobs <[EMAIL PROTECTED]> >Reply-To: dotnet discussion <[EMAIL PROTECTED]> >To: [EMAIL PROTECTED] >Subject: Re: [DOTNET] OT: N-Tier Design >Date: Fri, 17 May 2002 13:33:11 -0700 > >There are many benefits that you get in return for a small performance >cost. > >What if you decided later that you needed to update another database as >part of the same transaction? > >What if you decided to use a transacted queue? > >What if you wanted to conditionally execute some logic depending upon >the outcome of the transaction? > >What if you wanted to build a set of objects that could compose in any >order and execute transacted code no matter which one was the root? > >These are all good reasons to use automatic transactions. When you >choose to use a local transaction you are also choosing to take the >burden of transaction management. > >Even if you only ever used 1 database, the management you get is worth >the cost. > >For more info see >http://www.gotdotnet.com/team/xmlentsvcs/esfaq.aspx#5.2 > > >-----Original Message----- >From: Syed.Alam [mailto:[EMAIL PROTECTED]] >Sent: Friday, May 17, 2002 1:27 PM >To: [EMAIL PROTECTED] >Subject: Re: [DOTNET] OT: N-Tier Design > >i guess the discussion was the inevitable loss of performance in moving >from >one RM based transaction (without DTS) to 1-or-more RM based >(distributed/2 >way) transaction (under COM+ or whatever) > > > >-----Original Message----- >From: Ron Jacobs [mailto:[EMAIL PROTECTED]] >Sent: Friday, May 17, 2002 2:55 PM >To: [EMAIL PROTECTED] >Subject: Re: [DOTNET] OT: N-Tier Design > > >I don't know why you think that COM+ is too slow. Extensive testing >shows that COM+ library applications are just as fast as any other .NET >class. Often people think that ServicedComponents must be in server >apps which execute out of process and therefore are slower but any code >that executes out of process would be slower. > >-----Original Message----- >From: Knebels, Francis [mailto:[EMAIL PROTECTED]] >Sent: Friday, May 17, 2002 8:31 AM >To: [EMAIL PROTECTED] >Subject: Re: [DOTNET] OT: N-Tier Design > >How do you resolve transactions that span multiple table classes? Say a >registration need to insert a person and a location if one doesn't >exist. >I've been reading the thread on "developing a middle tier" and from what >I >got is that you can't use COM+ because it is too slow. I was looking at >doing just that. Low level classes that map to tables which would be >transaction required, but would enlist in transactions in more abstract >classes that would need multiple low-level classes. How are you >controlling >your transactions in this setup. I did the same thing for a small >project >and had the store procedures (oracle) handle all the transactions for >me. I >would like to develop a more robust system. I think I need to buy the >Ewald >book. > >Francis X. Knebels >Merck Vaccine Division > > >-----Original Message----- >From: Francesco Sanfilippo [mailto:[EMAIL PROTECTED]] >Sent: Friday, May 17, 2002 11:20 AM >To: [EMAIL PROTECTED] >Subject: Re: [DOTNET] OT: N-Tier Design > > >I have built a DataAccess namespace which has the raw methods that touch >SQL >Server: > >ExecSPRetSC, ExecSPRetDT, ExecSPRetDS, ExecSPRetDR, etc. > >In my next level up, the BusinessLogic namespace, I have classes that >are >modeled after tables in my database: > >DBCountry, DBBanner, DBPerson, DBEmailProfile, etc. > >The above classes contain simple methods such as: > >Insert, Update, Delete, SelectOne, SelectAll, GetRandomRow > >as well as more specialized methods one would expect to see. > >Francesco > > > > > > >From: "Rolls, Robert" <[EMAIL PROTECTED]> > >Reply-To: dotnet discussion <[EMAIL PROTECTED]> > >To: [EMAIL PROTECTED] > >Subject: [DOTNET] OT: N-Tier Design > >Date: Fri, 17 May 2002 14:21:20 +1000 > > > >how many of you guys have raw SQL in the business Business Logic layer >- or > >do you have coressponding functions in you Data Access Layer i.e > > > >UI->onClick()->BBL->GetCustomers()->DAL->ExecuteQuery( SQL ); > > > >or > > > >UI->onClick()->BBL->GetCustomers()->DAL->GetCustomers() > > > > > >Regards, > >Robert Rolls > > > > > >**********************************************************************" > >This correspondence is for the named person's use only. It may > >contain confidential or legally privileged information or both. " > >No confidentiality or privilege is waived or lost by any " > >mistransmission. If you receive this correspondence in error, please > >immediately delete it from your system and notify the sender. You > >must not disclose, copy or rely on any part of this correspondence > >if you are not the intended recipient. > > > >Any views expressed in this message are those of the individual sender, > >except where the sender expressly, and with authority, states them to > >be the views of Vodafone. > > > >This email has been checked for viruses. > >*********************************************************************** >**** >******************* > > > >You can read messages from the DOTNET archive, unsubscribe from DOTNET, >or > >subscribe to other DevelopMentor lists at http://discuss.develop.com. > > > > >_________________________________________________________________ >Send and receive Hotmail on your mobile device: http://mobile.msn.com > >You can read messages from the DOTNET archive, unsubscribe from DOTNET, >or >subscribe to other DevelopMentor lists at http://discuss.develop.com. > >------------------------------------------------------------------------ >------ >Notice: This e-mail message, together with any attachments, contains >information of Merck & Co., Inc. (Whitehouse Station, New Jersey, USA) >that may be confidential, proprietary copyrighted and/or legally >privileged, and is intended solely for the use of the individual or >entity named on this message. If you are not the intended recipient, >and have received this message in error, please immediately return this >by e-mail and then delete it. > >======================================================================== >====== > >You can read messages from the DOTNET archive, unsubscribe from DOTNET, >or >subscribe to other DevelopMentor lists at http://discuss.develop.com. > >You can read messages from the DOTNET archive, unsubscribe from DOTNET, >or >subscribe to other DevelopMentor lists at http://discuss.develop.com. > >You can read messages from the DOTNET archive, unsubscribe from DOTNET, >or >subscribe to other DevelopMentor lists at http://discuss.develop.com. > >You can read messages from the DOTNET archive, unsubscribe from DOTNET, or >subscribe to other DevelopMentor lists at http://discuss.develop.com. _________________________________________________________________ Get your FREE download of MSN Explorer at http://explorer.msn.com/intl.asp. You can read messages from the DOTNET archive, unsubscribe from DOTNET, or subscribe to other DevelopMentor lists at http://discuss.develop.com.