PDA

View Full Version : محلي براي پاسخ به سوالات معماري چند لايه



man_iran
شنبه 17 بهمن 1388, 16:55 عصر
همانطور که می دونید در این بخش چندین تاپيك در مورد معماری سه لایه و چند لایه تشکیل شده و دوستان در آنجا به بحث های خود پرداختند. ولی برای کنترل بحث از بعضی از سوالات که بحث را به بی راهه می کشه خودداری می کردند. همچنین سوال های زیادی پرسیده شده که حاوی مشکلات دوستان در قسمت طراحی معماری سه لایه است که ممکنه جواب مشکل دیگری باشه.
بدلیل اینکه تاکید می شه برنامه با این نوع معماری ها نوشته بشه، با اجازه اساتید من این قسمت را ایجاد کردم تا اگر کسی سوالی یا مشکلی در مورد نحوه طراحی معماری سه لایه داشته باشه در این قسمت بپرسه تا بقیه نیز استفاده کنند.
فقط یه خواهش : تا وقتی فردی که سوال را می پرسه به جواب نرسیده کس دیگه ای سوال نپرسه!

man_iran
شنبه 17 بهمن 1388, 16:57 عصر
اولین سوال را هم خودم می پرسم! در یکی از بخش ها که بحث در مورد معماری سه لایه بود گفتند که سعی شود برای بررسی و مهار خطا ها از



throw new Exception("error");


و امثال آن استفاده بشه و به جای آن مستقیما از مسیج باکس استفاده نشه. چرا؟ این کار ما را بیشتر نمی کنه؟ آن موقع برای مهار این ارور نیازه کدی که مربوط به ارسال اطلاعات می شه را توی try catch بزاریم سپس مسیج اخطار را نمایش بدیم! خب چرا به جای کد بالا مستقیما مسیج باکس استفاده نشه که نیازی به try catch هم نباشه.

naeeme
یک شنبه 18 بهمن 1388, 10:30 صبح
بخاطر اینکه هدف از معماری چند لایه این هست که شما به راحتی بتونین مدیا رو عوض کنین. مثلا اگر این برنامه برای وب نوشته شده به راحتی با تغییر لایه نمایشی اون بشه برنامه رو در ویندوز استفاده کرد. اگر شما در لایه DAL بخواین خطا رو نمایش بدین، در واقع لایه نمایشی و لایه دسترسی به داده ها رو با هم ترکیب کردین و دیگه نمیشه از DAL در برنامه وب استفاده کرد.
البته دلایل دیگه هم میشه اورد اما همه در واقع همین موضوع رو بیان می کنن.

M.YasPro
یک شنبه 18 بهمن 1388, 11:34 صبح
سلام
برای کامل کردن جواب دوستان
تو محیط classLibrary نمیشه messagebox داشت .
البته اگه اشتباه نکنم .

seven7777777
یک شنبه 18 بهمن 1388, 12:28 عصر
دوست عزیز فقط مو رو نگاه نکن . یکمم به پیچش مو نگاه کن .خیلی موارد برای این کار هست :
1. همونایی که دوستان قبل و بعد از من می گن .
2. شما حاضری مثلا برای هر خطات یه بار بشینی مسیج باکس رو با کل تنظیماتش بنویسی ( یا حتی کپی پیست کنی ) ؟!؟!؟!؟
3. اگه یه موقع خواستی مثلا نمایش خطاهات با آیکون مثلا فلان باشه میشینی همه اینارو تغییر میدی ؟
4. شما کلی انعطاف تو هندل کردن خطاهات بدست میاری ، مثلا میگی اگه خطایی که اومده کدش فلان بود این پیغام رو نمایش بده ، بدون اینکه کاری به محل وقوع خطا داشته باشی .
5. و ...

FirstLine
یک شنبه 18 بهمن 1388, 16:31 عصر
با سلام
من یک سایت دارم که لایه دیتا و لایه نمایشی ان ایجاد شده است. (البته تمام موارد dataset, Data connectionو... بصورت کد های دستی نوشته شده است و از کنترلهای ویژوال استودیو استفاده نکرده ام) تمام موارد واکشی اطلاعات با sp نوشته شده.
برای لایه بین لایه نمایشی و دیتا از چه ابزاری میتوان استفاده نمود؟ که کلاسهای مرتبط بین این دو لایه را ایجاد کند.

با تشکر

naeeme
سه شنبه 20 بهمن 1388, 13:22 عصر
برای کامل کردن جواب دوستان
تو محیط classLibrary نمیشه messagebox داشت .
البته اگه اشتباه نکنم .

دوست عزیز! شما به اضافه کردن namespase مربوطه می تونید به این کلاس دسترسی داشته باشید.


با سلام
من یک سایت دارم که لایه دیتا و لایه نمایشی ان ایجاد شده است. (البته تمام موارد dataset, Data connectionو... بصورت کد های دستی نوشته شده است و از کنترلهای ویژوال استودیو استفاده نکرده ام) تمام موارد واکشی اطلاعات با sp نوشته شده.
برای لایه بین لایه نمایشی و دیتا از چه ابزاری میتوان استفاده نمود؟ که کلاسهای مرتبط بین این دو لایه را ایجاد کند.

با تشکر

من هم یک زمانی فکر می کردم که واقعا نیاز هست یه لایه بین DAL و PRL وجود داشته باشه اما بعد از انجام 3 تا پروژه که نمیگم خیلی بزرگ بودن، به این نتیجه رسیدم که خیلی از مواقع اصلا نیازی به لایه BLL نیست. چون در خیلی از جاها فقط ورود اطلاعات و نمایش اونها هست و هیچ کار دیگه ای انجام نمیدیم! به خاطر همین وجود BLL در این موارد کاملا بی معنی هست.
در مورد سوالتون هم، شما به چه روشی DAL رو تولید کردید؟ خروجی متدهای getData شما از جه نوعی هستند؟
پاسخ به این سوال کمک می کنه تا راهنمایی دقیقتری دریافت کنید.

davoodadeli
چهارشنبه 21 بهمن 1388, 14:20 عصر
سلام به همه دوستان
من بعد از 8 سال برنامه نويسي حرفه اي و چندين پروژه بزرگ تازه ميخوام برنامه نويسي چند لايه با سي شارپ رو شروع كنم. در مورد خود زبان سي شارپ

davoodadeli
چهارشنبه 21 بهمن 1388, 14:26 عصر
سلام به همه دوستان
من بعد از 8 سال برنامه نویسی حرفه ای با دلفي و چندین پروژه بزرگ تازه میخوام برنامه نویسی چند لایه با سی شارپ رو شروع کنم. نیاز به یک کتاب یا جزوه فارسی و یک نمونه برنامه ساده براساس معماری چندلایه برای شروع کار دارم. با تشکر از همه دوستان

man_iran
یک شنبه 25 بهمن 1388, 19:17 عصر
سلام به همه دوستان
من بعد از 8 سال برنامه نویسی حرفه ای با دلفی و چندین پروژه بزرگ تازه میخوام برنامه نویسی چند لایه با سی شارپ رو شروع کنم. نیاز به یک کتاب یا جزوه فارسی و یک نمونه برنامه ساده براساس معماری چندلایه برای شروع کار دارم. با تشکر از همه دوستان

یه سرچی بکنید توی همین تالار پیدا می کنید.

man_iran
سه شنبه 27 بهمن 1388, 07:59 صبح
من تمام بررسی های لازم برای موجودیت های برنامه ام را در لایه دوم انجام می دم یعنی در لایه دوم بررسی می کنم که نام کالای وارد شده نباید خالی باشدو...با این کار دیگه لازم نیست توی لایه اول (فرم) دوباره بررسی کنم و اگر خالی باشد لایه دوم اخطار را ایجاد می کند.
ولی یه مشکل : برای رشته های مشکلی پیش نمیات ولی برای موجودیت هایی که مثلا اینت باشند باید چه کار کرد؟ چون اگر قرار اینت را از یه تکست باکس در لایه اول بگیرم و به لایه دوم بفرستم نیاز به تبدیل داره و اگر خالی باشه اخطار می زنه (اصلا به لایه دوم فرستاده نمی شه و اخطار تبدیل می زنه)، مگه اینکه در لایه اول قبل از ارسال به لایه دوم بررسی کنم که خالی است یا نه و اگر خالی باشه اخطار بزنه!!
ولی من می خوام تمام بررسی ها درلایه دوم انجام بشه برای این کار باید چه کار کنم ؟

man_iran
چهارشنبه 28 بهمن 1388, 07:54 صبح
کسی نظری درباری این کار نداره ؟
راستی سرعت هم میات پایین.

neynavaz
چهارشنبه 10 فروردین 1390, 09:22 صبح
سلام
من تو asp میخوام معماری سه لایه کار کنم
حالا لایه دسترسی داده خودمو آماده کردم ولی مشکل نمایش خطا دارم
ببنید طبیعتا از msgbox() نمیتونم استفاده کنم چون رو سرور ارور میده
از کد زیر هم استفاده کردم بعضی جاها جواب نمیده!!1


Public Sub ASPNET_MsgBox(ByVal Message As String)

System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE=""JavaScript"">" & vbCrLf)

System.Web.HttpContext.Current.Response.Write("alert(""" & Message & """)" & vbCrLf)

System.Web.HttpContext.Current.Response.Write("</SCRIPT>")

End Sub

javad_r_85
چهارشنبه 10 فروردین 1390, 10:42 صبح
با سلام. بحث جالبی هست امیدوارم به جاهای خوب برسیم من برای برنامه نویسی سه لایه یه سولشن خالی ایجاد کرد ه که پروژه از نوع ویندوز فرم با نام UI و دو پروژه کلاس لایبرری با نام DAL , BL ایجاد کرده و ادامه کار اما این کار را برای ADO.NET می کردم وزمانی که از Entity استفاده می کنم احساس کردم کمی به مشکل بر می خرم مثلا فایل کانفیگ حتما باید در UI باشد تا برنامه به درستی کار کند برای این نوع از پروژه ها از ASP.NET MVC2 الگو برداری کردم یعنی یه پروژه ایجاد کردم سپس پوشه های به آن افزودم برای هر لایه و ادامه کار از دوستان اگر کسی نظری در مورد این شیوه و صحت آن دارد خوشحال می شم بیان شود . عکس های زیر این دو پروژه را نشان می دهد


6803968040

amir-yeketaz
چهارشنبه 10 فروردین 1390, 12:54 عصر
خوب جواد جان شما میتونی همون Entity رو تو یه Library جدا بذاری به همراه فایل کانفیگ و تو پروژه ای که قراره از این Library استفاده بشه فایل کانفیگ موجود رو به Solutionش اضافه کنی! البته من دقیق منظورتو متوجه نمیشم!

javad_r_85
چهارشنبه 10 فروردین 1390, 15:57 عصر
درسته دوست عزیز ولی بالاخره فایل کانفیگ باید در سولشین قرار گیرد که زیاد به دلم نشست و با بازکردن آن می شه کانکشن استرینگ را دید و اینکه دردسرهای دیگری نیز داشت که الان زیاد یادم نیست البته من این کاررو به تبعیت از mvc کردم وگرنه را ه شما نیز درست می باشد....