PDA

View Full Version : آموزش: برنامه نویسی چند لایه



mehrdad85
یک شنبه 18 تیر 1391, 08:59 صبح
سلام
دوستان تو این تاپیک قصد دارم به امید خدا در مورد برنامه نویسی چند لایه مطلب ترجمه و جمع آوری کنم و برای دوستان بذارم .
دوستان عزیز اگه جایی اشتباه میکنم ممنون میشم که تصحیح کنید و در تاپیک شرکت کنین

التماس دعا

mehrdad85
یک شنبه 18 تیر 1391, 09:00 صبح
مدل سه لایه یک معماری کلاینت / سرور است که واسط کاربر ، پردازش ها و فرایند ها ، ذخیره سازی و بازیابی اطلاعات تحت ماژول های مستقل توسعه داده می شوند . به طور کلی سه لایه وجود دارد لایه اول به لایه نمایش معروف است و به عبارت دیگر لایه واسط گرافیکی کاربر یا GUI ، لایه دوم به business object معروف است یا لایه منطق کار و نهایتا لایه سوم به لایه دسترسی به داده ها اطلاق می شود . این لایه ها هر کدام می توانند به تنهایی و به طور مستقل و کاملا مجزا تست و توسعه داده شوند .
شاید از خود بپرسید که دلیل جداسازی و تفکیک کد به سه قسمت چیست؟جدا سازی لایه دسترسی به داده ها با لایه پردازش ها و لایه واسط گرافیکی مزایای بسیاری دارد که که برخی از آن ها در زیر آمده است :
استفاده مجدد از لایه پردازش د رپروژ های دیگر توسعه سریع تر آن ها را امکان پذیر می کند . به عنوان مثال تصور کنید که ما یک ماژول داریم که افزودن ، بروز رسانی و نهایتا حذف و جستجوی اطلاعات یک مشتری را انجام می دهد . پس از پیاده سازی این ماژول می توان از آن در سایر پروژه هایی که نیاز به مدیریت مشتری دارند استفاده کنیم .
انتقال و جابجایی سیستم را ساده تر و راحتتر می کند . از آنجایی که لایه پردازش ها از لایه دسترسی به داده ها جدا و مستقل است تغییرو تحول در لایه دسترسی موجب تغییرات اساسی در لایه پردازش ها نخواهد شد . مثلا فرض کنید که ما به جای استفاده از SQl اکنون تصمیم به استفاده از Oracle داریم . این تغییر نباید موجب تغییر در لایه واسط گرافیک یکاربر و لایه پردازش ها شود .
مدیریت تغییرات برای سیستم آسان می شود . مثلا اگر بخشی از منطق یا روال انجام یک کار عوض شود دیگر نیازی نیست که بر روس تک تک سیستم ها کاربران لایه دیگر را اصلاح کرد . به عنوان مثال تصور کنید برای پیگیری یک نامه در یک اداره ابتدا باید به قسمت الف و سپس به قسمت ب روجع کرد حال اگر روال عوض شود و ابتدا رجوع به قسمت ب و سپس الف شود دیگر نیاز ینیست که بخش های دیگر از پروژه را به صورت مجزا تغییر داد یا مثال فرض کنید نرخ اضافه کار کارمندان یک ادره X باشد اگر این نرخ به Y تغییر یابد دیگر نیازی به تغییرات در لایه های دسترسی داده و واسط کاربر نمی باشد .
وجود لایه های مجزا و مستقل امکان توسعه نرم افزار و برنامه کاربردی را به صورت موازی امکگان پذیر می کند . به عنوان مثال در نظر بگیرید که برای یک پروژه طراح واسط گرافیکی می تواند هنگامی که برنامه نویس و کد زن مشغول کار است و طراحی پایگاه نیز پروژه خود را پیش می برد کار کند به عبارت دیگر طراحی واسط گرافیکی کاربر ، طراحی پایگاه داده و کد زنی تا حد و حدودی می تواد به صورت موازی پیش برود .
نهایتا تفکیک برنامه به لایه های مستقل استفاده بهینه تری از منابع را سبب می شود . مثلا می تواند با داشتن سرور های عملیاتی که دارای یک معماری دقیق می باشند قبل از ارسال داده ها موجب کاهش ترافیک شبکه شود.
راستی یادم رفت که این مطلب هم اضافه کنم اگه من مطلبی را ترجمه کنم حتما ارجاع میدم که اگه با لاتینش راحتتر بودید اونو مطالعه بفرمایید
مطلب بالا از سایت http://www.codeproject.com ترجمه شده بود


با تشکر

mehrdad85
یک شنبه 18 تیر 1391, 09:16 صبح
این کامپوننت دارای سه لایه است . لایه اول یا لایه واسط گرافیک است با نام FrmGUI ، لایه دوم یا لایه پردازش که آن نیز با نام BOCustomer که مخفف Business Object Customer است و نهایتا لایه سوم که لایه دسترسی به داده است و با ناام DACustomer شناخته می شود که مخفف Data Access Customer است . کل سه لایه در یک پروژه برای راحتی کار کامپایل شده است .این کد در ضمیمه آمده است .
لایه واسط کاربر
یک نمونه کد برای این لایه در ذیل اورده شده است . که در آن تنها توابعی را استفاده شده و تعریف شده که در لایه بعدی یعنی لایه پردازش و فرایند ها مورد استفاده قرار می گیرد .

//This function get the details from the user via GUI
//tier and calls the Add method of business logic layer.
private void cmdAdd_Click(object sender, System.EventArgs e)
{
try
{
cus = new BOCustomer();
cus.cusID=txtID.Text.ToString();
cus.LName = txtLName.Text.ToString();
cus.FName = txtFName.Text.ToString();
cus.Tel= txtTel.Text.ToString();
cus.Address = txtAddress.Text.ToString();
cus.Add();
}
catch(Exception err)
{
MessageBox.Show(err.Message.ToString());
}
}

//This function gets the ID from the user and finds the
//customer details and return the details in the form of
//a dataset via busniss object layer. Then it loops through
//the content of the dataset and fills the controls.

private void cmdFind_Click(object sender, System.EventArgs e)
{
try
{
String cusID = txtID.Text.ToString();

BOCustomer thisCus = new BOCustomer();

DataSet ds = thisCus.Find(cusID);

DataRow row;
row = ds.Tables[0].Rows[0];

//via looping
foreach(DataRow rows in ds.Tables[0].Rows )
{
txtFName.Text = rows["CUS_F_NAME"].ToString();
txtLName.Text = rows["CUS_L_NAME"].ToString();
txtAddress.Text = rows["CUS_ADDRESS"].ToString();
txtTel.Text = rows["CUS_TEL"].ToString();
}
}
catch (Exception err)
{
MessageBox.Show(err.Message.ToString());
}

}

//this function used to update the customer details.
private void cmdUpdate_Click(object sender,
System.EventArgs e)
{
try
{
cus = new BOCustomer();
cus.cusID=txtID.Text.ToString();
cus.LName = txtLName.Text.ToString();
cus.FName = txtFName.Text.ToString();
cus.Tel= txtTel.Text.ToString();
cus.Address = txtAddress.Text.ToString();

cus.Update();
}
catch(Exception err)
{
MessageBox.Show(err.Message.ToString());
}
}

mehrdad85
یک شنبه 18 تیر 1391, 17:29 عصر
تفاوت tier و layer
Tier تمایز فیزیکی اجزا را نشان می دهد که می تواند به معنای اسمبلی های مختلف همچون dll ها فایل های exe و غیره در یک سرور واحد یا در چندین سرور باشد .
همانطور که در شکل مشاهده می شود data tier هیچ ارتباطی با presentation tier ندارد و تنها business tier به عنوان یک tier واسط بین data tier و presentation tier عمل می کند . بنابراین 3 tier فوق را از یکدیگر تفکیک کنیم . در این شرایط وظیفه هر یک به صورت زیر بیان می شود :
Presentation Tier
بجایی است که کاربر با برنامه کاربردی ارتباط برقرار می کند و در تعامل است .
Middle Tier
کمک می کند که data tier و Presentation Tier بتوانند با یکدیگر ارتباط برقرار کنند.
Data Tier
به طور کلی سرور است که اطلاعات و داده های برنامه کاربردی را نگهداری میکند .

Layer
تمایز منطقی اجزا را نشان می دهد. به عنوان مثال داشتن فضا نام های خاص و منحصربفرد برای لایه های دسترسی داده ، لایه منطق برنامه ، لایه واسط کاربر