خوب مثل اينكه دوباره خودم بايد همه دعوا ها رو حل كنم :
همانطور كه دوستان اشاره كردند و تعريف لايه هارو گفتند .3 تا لايه تو هر برنامه مي تونه وجود داشته باشه.اگه 1 برنامه نويس حرفه اي باشين و از ويزارد ها براي ساخت برنامه استفاده نكنيد مي تونيد به روش زير برنامه 3 لايه بنويسيد:
اول فرم برنامه و كامپوننت هاي مورد نظرتون رو بنويسيد
دوم كلاسي تهيه كنيد كه حاوي خواص مورد نظر براي پياده سازي شي شما جهت اتصال به پايگاه داده باشه.اين خواص وظيفه ايجاد ارتباط بين لايه مياني(bll) را بر عهده دارد .مثلا كلاس مشتري كه داراي خواص نام و فاميل و آدرس مشتري و... مي باشد.تو اين لايه شما ميتونين قوائد تجاري مربوط به اون سازمان كه واسش برنامه مي نويسين رو اعمال كنيد.مثلا چك كنيد كه اگه بدهي شخصي از 2000000 بيشتر هست نتونه خريد كنه و از اينجور موارد يا اينكه اگه فرد يك مشتري دائمي هست بهش تخفيف داده بشه و.....
سوم كلاسي تهيه كنيد كه وظيفش ايجاد ارتباط بين برنامه و پايگاه داده باشه يعني به زبان خودموني وظيفش اجراي رويه هاي ذخيره شده درون پايگاه داده باشه.
خوب حالا كه اين 3 تا مرحله رو انجام دادين 1 برنامه 3 لايه نوشتيد.
تذكري كه بايد بدم اينه كه واسه ايجاد ارتباط بين لايه ها مي تونيد از اين روش استفاده كنيد كه :
اكه قراره يك دستور select از پايگاه داده انجام بشه بايد نوع برگشتي توابع درون كلاس هاي لايه Data access و Business از نوع Datatable يا Dataset و از اين موارد باشند تا لايه به لايه در صورتي كه عمليات از پايين ترين سطح درست انجام شد مقادير رو برگردونن و اگه قرار يك دستور مثل Insert,delete,... اجرا بشه بهتره نوع توابع از نوع bool باشه تا لايه به لايه در صورت درستي عمليات مقدار True برگردونه تا لايه بالايي از اجراي صحيح لايه پايين مطمئن بشه :
نكته:اغلب كلاس لايه DAL يك كلاس هست كه اين قابليت رو داره كه هر رويه اي كه بهش اعلام ميشه رو اجرا كنه اما كلاس لايه BLL بهتره كه واسه هر موجوديتي تو سيستم جداگانه طراحي بشه مثلا يك BLL واسه مشتري يكي واسه كالا يكي واسه فاكتور .....
يك مثال از تابعي در لايه DAL :
public bool Insert(string procname, SqlParameter[] Params)
{
SqlConnection con = Publicclass.CreateCon();
try
{
SqlCommand cmd = new SqlCommand(procname, con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddRange(Params);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
return true;
}
catch (Exception)
{
con.Close();
return false;
}
}
اينم يه مثال از لايه BLL :
public bool BLLInsert()
{
DAL dalobject = new DAL();
SqlParameter[] param = new SqlParameter[5];
param[0] = new SqlParameter("@sid", pid);
param[1] = new SqlParameter("@title", title);
param[2] = new SqlParameter("@f_text", f_text);
param[3] = new SqlParameter("@s_date", date);
param[4] = new SqlParameter("@adress", adress);
return dalobject.Insert("add_contents", param);
}
متغيير هاي pid,title,_text,... خواص كلاسي هستند كه اين تابع درون اون تعريف شده.
در فرم برنامه يا همون لايه PL اين خواص بايد مقدار دهي بشن و بعد تابع BLLInsert صدازده ميشه
البه بحث برنامه نويسي لايه اي خيلي گسترده تر از اين حرفا هست و اين در واقع يك نمونه كوچيك اون هست.اصلا اين 3Layer programing hast كه با 3tire programing فرق داره .
يك نكته ديگه هم بگم و تمام : اگه از روش كامپوننتي با پايگاه داده كار كنيد مي تونين از اشيايي مثل Dataset به عنوان لايه Dal استفاده كنيد.
بسه ديگه فكر كنم زياد حرف زدم : من دير به دير ميام تو اين سايت .شايد ديكه اين تاپيك رو ادامه ندم.اكه كسي سوالي داشت مي تونه بهم ايميل بزنه به آدرس
EsfahanITG@yahoo.com