PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : معماری ۳ لایه



آبجی
14th February 2010, 04:10 PM
معماری ۳ لایه که این روزها در موردش زیاد شنیده میشه اصلا چیز عجیب و محیر العقولی نیست!
در این مقاله سعی می کنم این مفهوم رو با زبان ساده توضیح بدم.
همه میدونیم که دسته بندی موضوعات باعث میشه که رجوع به اونها سریع تر صورت بگیره.
تفکیک و در کنار هم قرار دادن مطالب مرتبط با هم به کارها نظم میده.
معماری چند لایه (n-tier) که متداولترین اون ۳ لایه هست، از همین مفهوم برای پیاده سازی برنامه ها بهره میبره.
در معماری ۳ لایه، برنامه رو به ۳ قسمت (۳ لایه) تقسیم می کنند و به هر قسمت (لایه) وظیفه ای رو محول میکنند.
این ۳ قسمت شامل:
۱) لایه ی دسترسی به داده ها (Data Access Layer که به اختصار DAL نامیده میشه)
۲) لایه ی منطقی (Business Logic Layer که به اختصار BLL نامیده میشه)
۳) لایه نمایش (Presentation Layer)
این لایه ها با همدیگه در ارتباط هستند و لایه ی منطقی، واسط لایه ی “دسترسی به داد ها” و “لایه ی نمایش” هست.
به عبارت دیگه، لایه ی نمایش هیچگاه نمیتونه به صورت مستقیم با لایه ی دسترسی به داده ها ارتباط برقرار کنه.

روش ها و ابزارهای مختلفی برای ایجاد برنامه های ۳ لایه وجود داره اما در تمامی این روش ها، فرآیند کار یکیست.
برای درک بهتر موضوع، بهتره که بحث رو با یک مثال عملی در #C ادامه بدیم.
پایین ترین لایه در معماری ۳ لایه، لایه ی DAL هست.
در این لایه، متدهای دسترسی به پایگاه داده شامل اعمال DML و DDL انجام میگیره.
روال هایی همانند اضافه، حذف، آپدیت و بازیابی داده ها (اعمال DML) ، ایجاد عناصر پایگاه داده در صورت نیاز (اعمال DDL)
به عنوان یک مثال ساده، من برنامه ای دارم که اطلاعات افراد شامل نام، نام خانوادگی، شماره تماس و آدرس اونها رو ذخیره و بازیابی می کنه.
قصد دارم تا این برنامه رو با استفاده از معماری ۳ لایه پیاده سازی کنم.
حداقل ۲ متد نیاز دارم. یکی برای ثبت داده ها در پایگاه داده و دیگری برای بازیابی داده ها.
پس ابتدا لایه ی DAL رو پیاده سازی می کنیم.
یک Class به پروژه اضافه و این دو متد رو در اون پیاده سازی می کنیم.
دستورات رو دیگه ننوشتم و به صورت شبه کد هستند. مطمئنا خودتون میتونید این کار رو انجام بدید:

Public class DAL
{
public void Insert(string pName, string pFamily, string pTel, string pAddress)
{
//do with INSERT statement
}
public DataSet GetPersons()
{
// do with SELECT statement
//return DataSet as result
}
}

بسیار خوب. لایه ی DAL ما به همین سادگی ایجاد شد!
حالا نوبت لایه ی منطقی یا BLL هست.
یک Class دیگه ایجاد می کنیم و نام اون رو BLL میگذاریم.
در این کلاس، دو متد (یکی برای فراخوانی متد Insert کلاس DAL و دیگری برای فراخوانی متد GetPersons این کلاس) ایجاد می کنیم:

public class BLL

{
public void Insert(string pName, string pFamily, string pTel, string pAddress)
{
DAL obj_DAL = new DAL();
obj_DAL.Insert(pName, pFamily, pTel, pAddress);
}
public DataSet GetPersons()
{
DAL obj_DAL = new DAL();
DataSet ds = new DataSet();
ds = obj_DAL.GetPersons();
}
}

همان طور که میبینید، لایه BLL از متدهای لایه DLL استفاده کرده و وظیفه ی فراهم کردن داده ها لازم برای لایه ی نمایش رو بر عهده داره.
البته کارهای دیگری نیز در لایه ی BLL انجام میگیره همانند بررسی صحت داده های ورودی.
شاید اینطور به نظر برسه که لایه ی BLL یک لایه ی اضافه است اما این لایه در حقیقت باعث میشه که اگر تغییراتی در لایه ی DAL ایجاد شد، کمترین آسیب به برنامه وارد بشه و خیلی راحت میشه این تغییرات رو با لایه BLL سازگار کرد.
در نهایت به لایه ی نمایش (Presentation) میرسیم.
این لایه همان اینترفیس یا محیطی هست که کاربر نهایی (End User) با اون سر و و کار داره.
به عنوان مثال، فرم ورود اطلاعات در برنامه ی ما که حاوی چند TextBox و یک دکمه است.
کاربر اطلاعاتی رو در TextBox ها وارد می کنه و این اطلاعات با کلیک بر روی دکمه در پایگاه داده قرار میگیرند.
روال Click دکمه رو با استفاده از لایه ی BLL و به شکل زیر پیاده سازی می کنیم:

private void btnInsert_Click(object sender, System.EventArgs e)
{
BLL obj_BLL = new BLL();
obj_BLL.Insert(txtName.Text, txtFamily.Text, txtTel.Text, txtAddress.Text);
}

همان طور که دیدید پیاده سازی یک برنامه با معماری ۳ لایه بسیار آسونه و منطق و فهم برنامه رو تسهیل میکنه.

استفاده از تمامی مطالب سایت تنها با ذکر منبع آن به نام سایت علمی نخبگان جوان و ذکر آدرس سایت مجاز است

استفاده از نام و برند نخبگان جوان به هر نحو توسط سایر سایت ها ممنوع بوده و پیگرد قانونی دارد