When you think ASP, think...
Recent Articles
All Articles
ASP.NET Articles
ASPFAQs.com
Message Board
Related Web Technologies
User Tips!
Coding Tips

Sections:
Sample Chapters
Commonly Asked Message Board Questions
JavaScript Tutorials
MSDN Communities Hub
Official Docs
Security
Stump the SQL Guru!
XML Info
Information:
Feedback
Author an Article
ASP ASP.NET ASP FAQs Message Board Feedback
Print this page.
Published: Sunday, November 01, 1998

WebDaily: Your daily source for Web Technology Tips and Tricks!


*****************************************************************
Using Business Objects in your Web Application
*****************************************************************

* This article discusses the use of the business objects in your ASP pages using VisualBASIC.

Microsoft recommends a three-tiered approach when developing web applications. The first tier is the backend, or an ODBC-compliant data source. Most often this data source is a SQL Server or an Access database, but it can be an AS/400, or an Informix or Oracle database. The middle-tier is the business objects, DLLs written in VisualBASIC or Visual C++ which provides a level of abstraction between the front end (or highest tier) and the backend. The final tier is the front end, which are the ASP and HTML pages we've all written.

This article will discuss briefly the advantages of using business objects and will contain an example of how to create and implement a VisualBASIC business object in your web application.

Business objects, as aforementioned, provide a level of abstraction between your ASP pages and database. If you write your ASP pages with direct calls to the database in them, you are asking for a maintenance nightmare if the project is a large one. Imagine that you have 200 ASP pages, each page making at least one call to the database, retrieving data or modifying data. Now, let's say that management has called for a change in the table structure, and it is your job to pick through all 200 ASP pages, making the needed changes to the queries! This would be a maintenance nightmare! Imagine all of your ASPs have code similar to the following:

<%
' Connect to the database...
Dim SQL, rs
SQL = "SELECT Name FROM Customer WHERE CusotmerID = 1"
Set rs = Conn.Execute(SQL)
%>

And say that management wants the Customer table to delete the Name column and replace it with a LastName and FirstName column. You would have to find all intances which were similar to the code example above and alter the query!

By using business objects, you would only need to go alter the source in one place. The use of a business object (let's call it WebApp.CustomerInfo), would result in ASP code like thisL

<%
Dim myCustomer
Set myCustomer = Server.CreateObject("WebApp.CustomerInfo")
myCustomer.Init(1)

Response.Write myCustomer.GetName()
%>

In theory, you shouldn't have to alter a single ASP file, just the business objects interface with the database, which is happening in only one location.

Another benefit of business objects are that they are precompiled, as opposed to your ASP pages which must be interpretted each time a page is requested.

Now, let's discuss how to make ourselves a business object. First, fire up VisualBASIC 5.0 or 6.0, and create a new ActiveX DLL. Set the name of your project to WebApp, and add a class module to your project, naming it CustomerInfo. Now, be sure to go to References in the Project menu and select the ADO library. Now, we are ready to write our function, GetName.

In your class CustomerInfo, just write the following code:

Function GetName(CustomerID as Integer) as String
Dim conConnection as ADODB.Connection
Dim rstRecordset as ADODB.Recordset

Set conConnection = New ADODB.Connection
conConnection.Open "... connection string or DSN ..."

Dim strSQL as String
strSQL = "SELECT FirstName + ' ' + LastName FROM " & _
"Customer WHERE CustomerID = " & CustomerID

Set rstRecordset = conConnection.Execute(strSQL)

GetName = rstRecordset(0)
End Function

Now, go to the File menu and build your ActiveX DLL. You should now have a DLL file. Copy this file to WINNT\SYSTEM32 (or WINDOWS\SYSTEM) and at the command line type:

regsvr32 filename.dll

This will register your DLL in the registry (you should be registering this object on the server, it will do no good to just register it on your workstation!). Now the ASP code using the business object should work!

It is recommended that another level of abstraction be implemented, that business objects don't make direct queries to the database, but rather call stored procedures (if you are using SQL).

Hopefully you've seen the importance of business objects in large projects, and possibly could implement one if needed. Business objects are annoying to develop when still debugging your web application (due to the frequent recompilations needed (along with having to stop IISADMIN to delete the old DLL file and replace it with the new one)), but once you have your project completed, it is *MUCH* easier to maintain the application!

Happy Programming!


*****************************************************************
*****************************************************************
To subscribe to WebDaily, point your browser to:
http://www.4GuysFromRolla.com/webtech/webdaily
*****************************************************************
*****************************************************************

Please forward this information to a friend, including the subscription URL! Happy Programming!


ASP.NET [1.x] [2.0] | ASPMessageboard.com | ASPFAQs.com | Advertise | Feedback | Author an Article