Introduction to 3-Tier Architecture in .NET
How to create
asp.net 3-tier architecture, I will explain and what the advantages and how to
create 3-tier architecture. Firstly what are the uses of 3-tier architecture.
Uses of 3-Tier Architecture
1. To
make application more understandable.
2. Easy
to maintain, easy to modify application and maintain architecture.
If we use this 3-Tier
application we can maintain our application in consistency
manner.
Basically 3-tier architecture contains 3
layers
1. Application
Layer / Presentation Layer.
2. Business
Access Layer (BAL) or Business Logic Layer (BLL).
3. Data
Access Layer (DAL).
Here I will explain each layer
with simple example that is User Registration
Application Layer or Presentation Layer
Presentation layer contains UI
part of our application i.e., our aspx pages or input is taken
from the user. This layer mainly used for User Interface purpose and get
or set the data back and forth. Here I have designed my registration aspx
page like this
This my
presentation layer for our project add new page to your project page and open
the page in design mode and drag and drop the control and rename the controls properly.
And double click on the Save button now in code behind we need to write
statements to insert data into database this entire process related to Business
Logic Layer and Data Access Layer.
Now we will discuss about
Business Access Layer or Business Logic Layer
Business Access Layer (BAL) or Business Logic Layer (BLL)
This layer contains our
business logic, calculations related thing with the data like insert data,
retrieve data and validating the data. This acts as an interface between
Application layer and Data Access Layer.
Now I will explain this business logic layer
with my sample
I have already finished form
design (Application Layer) now I need to insert user details into database if
user click on button save. Here user entering details like Username, password, First
Name, Last Name, Email, phone no, Location. I need to insert all these 7
parameters to database. Here we are placing all of our database actions into
data access layer (DAL) in this case we need to pass all these 7
parameters to data access layers.
In this scenario we will write
one function, we will pass these 7 parameters to function like this
String Username= InserDetails (string
Username, string Password, string Email, string Firstname, string Lastname,
string phnno, string Location)
If we need this functionality
in another button click there also we need to declare the parameters like string
Username, string Password like this rite. If we place all these
parameters into one place and use these parameters to pass values from
application layer to data access layer by using single object to whenever we
require how much coding will reduce think about it for this reason we will create entity
layer or property layer this layer comes under sub group
of our Business Logic layer.
Follow my instructions that are
enough. Creation of the entity layer is very simple.
Right click on your project web
application---> select add new item ----> select class file in
wizard --->give name as BEL.CS because here I am using
this name click ok
Open the BEL.CS class
file declare the parameters like this in entity layer
Don’t worry about code it’s
very simple for looking it’s very big nothing is there just parameters
declaration that’s all check I have declared whatever the parameters I need to
pass to data access layer I have declared those parameters only
BEL.CS
...................................................................................................................................
#region Variables
/// <summary>
/// User
Registration Variables
/// </summary>
private string _UserName;
private string _Password;
private string _FirstName;
private string _LastName;
private string _Email;
private string _Phoneno;
private string _Location;
private string _Created_By;
#endregion
/// <summary>
/// Gets
or sets the <b>_UserName</b> attribute value.
/// </summary>
/// <value>The <b>_UserName</b> attribute value.</value>
public string UserName
{
get
{
return _UserName;
}
set
{
_UserName = value;
}
}
/// <summary>
/// Gets
or sets the <b>_Password</b> attribute value.
/// </summary>
/// <value>The <b>_Password</b> attribute value.</value>
public string Password
{
get
{
return _Password;
}
set
{
_Password = value;
}
}
/// <summary>
/// Gets
or sets the <b>_FirstName</b> attribute value.
/// </summary>
/// <value>The <b>_FirstName</b> attribute value.</value>
public string FirstName
{
get
{
return _FirstName;
}
set
{
_FirstName = value;
}
}
/// <summary>
/// Gets
or sets the <b>_LastName</b> attribute value.
/// </summary>
/// <value>The <b>_LastName</b> attribute value.</value>
public string LastName
{
get
{
return _LastName;
}
set
{
_LastName = value;
}
}
/// <summary>
/// Gets
or sets the <b>_Email</b> attribute value.
/// </summary>
/// <value>The <b>_Email</b> attribute value.</value>
public string Email
{
get
{
return _Email;
}
set
{
_Email = value;
}
}
/// <summary>
/// Gets
or sets the <b>_Phoneno</b> attribute value.
/// </summary>
/// <value>The <b>_Phoneno</b> attribute value.</value>
public string Phoneno
{
get
{
return _Phoneno;
}
set
{
_Phoneno = value;
}
}
/// <summary>
/// Gets
or sets the <b>_Location</b> attribute value.
/// </summary>
/// <value>The <b>_Location</b> attribute value.</value>
public string Location
{
get
{
return _Location;
}
set
{
_Location = value;
}
}
/// <summary>
/// Gets
or sets the <b>_Created_By</b> attribute value.
/// </summary>
/// <value>The <b>_Created_By</b> attribute value.</value>
public string Created_By
{
get
{
return _Created_By;
}
set
{
_Created_By = value;
}
--------------------------------------------------------------------------------------
Our
parameters declaration is finished now I need to create Business logic layer
how I have create it follow same process for add one class file now give name
called BLL.CS. Here one point don’t forget this layer will act as
only mediator between application layer and data access layer based on this
assume what this layer contains. Now I am writing the following BLL.CS(Business
Logic layer)
...................................................................................................................................
#region Insert
UserInformationDetails
/// <summary>
/// Insert
UserDetails
/// </summary>
/// <param
name="objUserBEL"></param>
/// <returns></returns>
public string InsertUserDetails(BEL objUserDetails)
{
DAL objUserDAL
= new DAL();
try
{
return objUserDAL.InsertUserInformation(objUserDetails);
}
catch (Exception ex)
{
throw ex;
}
finally
{
objUserDAL
= null;
}
}
#endregion
Here
if you observe above code you will get doubt regarding these
what
is
BEL objUserDetails
DAL objUserDAL
= new DAL();
...................................................................................................................................
and
how this method comes
return objUserDAL.InsertUserInformation(objUserDetails);
Here BEL objUserDetails
means we already created one class file called BEL.CS with some parameters have
you got it now I am passing all these parameters to Data access Layer by simply
create one object for our BEL class file
What
is about these statements I will explain about it in data access layer
DAL objUserDAL
= new DAL();
return objUserDAL.InsertUserInformation(objUserDetails);
This DAL related
our Data access layer. Check below information to know about that function and
Data access layer
Data Access Layer (DAL)
Data
Access Layer contains methods to connect with database and to perform insert,
update, delete, get data from database based on our input data
I
think its much data now directly I will enter into DAL
Create
one more class file like same as above process and give name as DAL.CS
Write
the following code in DAL class file
..................................................................................................................................
//SQL
Connection string
string ConnectionString
= ConfigurationManager.AppSettings["LocalConnection"].ToString();
#region Insert
User Details
/// <summary>
/// Insert
Job Details
/// </summary>
/// <param
name="objBELJobs"></param>
/// <returns></returns>
public string InsertUserInformation(BEL objBELUserDetails)
{
SqlConnection con
= new SqlConnection(ConnectionString);
con.Open();
SqlCommand cmd
= new SqlCommand("sp_userinformation",
con);
cmd.CommandType
= CommandType.StoredProcedure;
try
{
cmd.Parameters.AddWithValue("@UserName",objBELUserDetails.UserName);
cmd.Parameters.AddWithValue("@Password",
objBELUserDetails.Password);
cmd.Parameters.AddWithValue("@FirstName",
objBELUserDetails.FirstName);
cmd.Parameters.AddWithValue("@LastName",
objBELUserDetails.LastName);
cmd.Parameters.AddWithValue("@Email",
objBELUserDetails.Email);
cmd.Parameters.AddWithValue("@PhoneNo",
objBELUserDetails.Phoneno);
cmd.Parameters.AddWithValue("@Location",
objBELUserDetails.Location);
cmd.Parameters.AddWithValue("@Created_By", objBELUserDetails.Created_By);
cmd.Parameters.Add("@ERROR", SqlDbType.Char,
500);
cmd.Parameters["@ERROR"].Direction
= ParameterDirection.Output;
cmd.ExecuteNonQuery();
string strMessage
= (string) cmd.Parameters["@ERROR"].Value;
con.Close();
return strMessage;
}
catch (Exception ex)
{
throw ex;
}
finally
{
cmd.Dispose();
con.Close();
con.Dispose();
}
}
#endregion
..................................................................................................................................
Here if you observe above functionality I am getting all the parameters by simply creating BEL objBELUserDetails. If we create one entity file we can access all parameters throughout our project by simply creation of one object for that entity class based on this we can reduce redundancy of code and increase re usability
Observe above code have u seen this function before? in BLL.CS . I said, I will explain it later got it in DAL.CS I have created one function Insert User Information and using this one in BLL.CS by simply creating one object of DAL in BLL.CS.
Here
you will get one doubt that is why BLL.CS we can use
this DAL.CS directly into our code behind we already
discuss Business logic layer provide interface between DAL and Application
layer by using this we can maintain consistency to our application.
Now our Business Logic Layer is ready and our Data Access layer is ready now how we can use this in our application layer write following code in your save button click like this
..................................................................................................................................
protected void btnsubmit_Click(object sender, EventArgs e)
{
string Output
= string.Empty;
if (txtpwd.Text
== txtcnmpwd.Text)
{
BEL objUserBEL
= new BEL();
objUserBEL.UserName
= txtuser.Text;
objUserBEL.Password
= txtpwd.Text;
objUserBEL.FirstName
= txtfname.Text;
objUserBEL.LastName
= txtlname.Text;
objUserBEL.Email
= txtEmail.Text;
objUserBEL.Phoneno
= txtphone.Text;
objUserBEL.Location
= txtlocation.Text;
objUserBEL.Created_By
= txtuser.Text;
BLL objUserBLL
= new BLL();
Output
= objUserBLL.InsertUserDetails(objUserBEL);
}
else
{
Page.RegisterStartupScript("UserMsg", "<Script
language='javascript'>alert('" + "Password
mismatch" +"');</script>");
}
lblErrorMsg.Text
= Output;
}
...............................................................................................................................
Here if you observe I am passing all parameters using this BEL(Entity Layer) and we are calling the method InsertUserDetails by using this BLL(Business Logic Layer)
Now
run your application test with debugger you can get clarity about this
application flow.
No comments:
Post a Comment