PDA

View Full Version : نحوه پیاده سازی موجودیت های وابسته در معماری سه لایه



csharpcollegian
یک شنبه 26 اردیبهشت 1395, 20:50 عصر
سلام دوستان وقتتون به خیر
دوستان فرض کنید داریم برنامه ای برای مدیریت صندوق امانات بانک مینویسم. خب مثلا ساختار برنامه اینطوری میشه که برای ایجاد هر امانت بایستی قبل از اینکه اطلاعات خام مربوط به خود امانت (شناسه مشتری، تاریخ و ..) ثبت بشه، در ابتدا یک شی صندوق ایجاد بشه و به کمک اون شماره صندوقی که خالی هست برگرده و سپس شناسه این صندوق به همراه اطلاعات دیگر امانت در دیتابیس ثبت بشه. البته پیش نیازهای ایجاد امانت در واقعیت خیلی بیشتره، فقط یک مثال ساده زدم.
حالا سوال بنده این هست که با توجه به اصول معماری سه لایه، کدامیک از روش های زیر درسته ؟
روش اول : در لایه UI شی صندوق امانت را ایجاد می کنیم، شماره صندوق خالی رو برمی گردونیم، شی امانت رو ایجاد می کنیم و پس از دادن اطلاعات لازم امانت رو ثبت می کنیم :

private void button1_Click(object sender, EventArgs e)
{
FundBLL fuObj = new FundBLL();
int fuID = fuObj.GetEmpty();
EntrustBLL enObj = new EntrustBLL();
enObj.fuID = fuID;
enObj.Date = DateTime.Now;
.
.
.
enObj.Create();
}

روش دوم : در لایه UI فقط شی امانت رو ایجاد و پس از دادن اطلاعات لازم اون رو ثبت می کنیم. و چون عملیات ایجاد شی صندوق و برگردوندن صندوق خالی پیش نیاز ایجاد امانته، اون رو در لایه BLL و در متد Create خود شی امانت مینویسیم :

class EntrustBLL
{
public bool Create()
{
FundBLL fuObj = new FundBLL();
int fuID = fuObj.GetEmpty();
.
. //Inserting Entrust
.
}
}
خیلی ممنونم

ali_md110
یک شنبه 26 اردیبهشت 1395, 21:30 عصر
سلام
لایه UI که میشه لایه کاربری به نظر من فقط باید شامل طراحی ظاهری باشه و این فرم های wpf یا winشما که حاو ی کنترلهای بصری هست با یک مکانیسم خاص مثلا بایندینگ به لایه ViewModel یا همون بخش دستور دهی برنامه متصل بشه

فرض کنید دکمه save روی فرم شما هست این دکمه باید ارسال کننده مقادیر از درون تکست باکس و سایر کنترلهای روی فرم به لایه Viewmodel شما باشه و اونجا توی ViewModel از روی این مقادیر و داده هایی که از تکست باکسها رسیده تصمیم گیری بشه و اشیاء صندوق یا اشخاص با اون داده ها هرکاری خواست بکنه
پس لایه ساخت اشیاء میشه لایه میانی یعنی ViewModel یا Service دهنده

csharpcollegian
یک شنبه 26 اردیبهشت 1395, 22:00 عصر
سلام
لایه UI که میشه لایه کاربری به نظر من فقط باید شامل طراحی ظاهری باشه و این فرم های wpf یا winشما که حاو ی کنترلهای بصری هست با یک مکانیسم خاص مثلا بایندینگ به لایه ViewModel یا همون بخش دستور دهی برنامه متصل بشه

فرض کنید دکمه save روی فرم شما هست این دکمه باید ارسال کننده مقادیر از درون تکست باکس و سایر کنترلهای روی فرم به لایه Viewmodel شما باشه و اونجا توی ViewModel از روی این مقادیر و داده هایی که از تکست باکسها رسیده تصمیم گیری بشه و اشیاء صندوق یا اشخاص با اون داده ها هرکاری خواست بکنه
پس لایه ساخت اشیاء میشه لایه میانی یعنی ViewModel یا Service دهنده
سلام علی آقا، خیلی ممنونم ازتون
من هیچ اطلاعاتی راجع به لایه ViewModel ندارم و تا حالا اصلا با همچین روشی کار نکردم، ممنون میشم اگر براتون ممکنه یه سمپل برام بذارید.
و اینکه با توجه به راهنمایی هایی قبلی خود شما و اساتید محترم دیگر سایت، بایستی منطق برنامه در لایه BLL پیاده سازی بشه. خب حالا اینکه برای ایجاد یک امانت نیاز هست یه سری اشیای دیگه به جز شی خود امانت ساخته بشن و یه سری عملیات انجام بشه که زیر مجموعه ی ایجاد امانت هستند، جز منطق برنامه به حساب میاد دیگه درسته ؟ پس باید این عملیات ها درون لایه BLL و درون خود آبجکت امانت در متدهای مربوطه پیاده سازی بشن دیگه ! وگرنه که یه جورایی لایه ViewModel هم درگیر منطق برنامه میشه...
آیا این استدلال درسته ؟ ممکن نیست با این کار قوانین شی گرائی نقض بشن ؟
خیلی ممنون

ali_md110
یک شنبه 26 اردیبهشت 1395, 22:58 عصر
خواهش میکنم
منظور من از این ویومدل قسمتی از الگوی محبوب MVVM بود در این الگو که شامل Model , ViewModel ,View هست
کدنویسی از طراحی جدا میشه و هر کدوم از این قسمتها باز ممکنه به قسمتهای دیگه تقسیم بشه
در این پترن viewmodel مانند فرمانده برنامه شماست که داده ها را از لایه Model به لایه View یعنی همون Ui شما و برعکس بر عهده داره
در این میان الگوی
Repository هم میتونیم در کنارش بکار ببریم
این روش بر اساس بایندینگ و بیشتر با WPF کار میکنه و بسیار انعطاف بالایی داره
پیشنهاد میکنم اگر برنامه نویسی گروهی کار میکنید از این الگو استفاده کنید
در ضمن لایه های برنامه زیاد ربطی به نقض قوانین شی گرایی نداره