PDA

نسخه کامل مشاهده نسخه کامل : معماری چند لایه یا تک لایه... مساله این است!



dogtag
14-04-2010, 21:13
سلام.
جدیداً خیلی مُد شده که همه چند لایه استفاده می کنند و خیلی هم بهش می نازن!

اما نظر شخص من اینه که اصلاً روش جالبی نیست!

می خوام یکی بیاد من رو توجیه کنه که باید از این روش استفاده کرد!

نمی دونم می تونم مثال بزنم یا نه!
قضیه تبلیغ نیست! بدی کار ایشون رو هم نمی خوام بگم!
فقط یه مثال ه:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

برید ببینید چه کد گیج کننده و نا فرمی داره!

واقعاً چه نیازی هست به این همه کلاس بندی و ارث بری و نمونه سازی و ...؟!
این همه، چقدر از حافظه رو اشغال می کنند؟!
الان واقعاً خوانایی برنامه بالا رفته؟! :27:

به نظر من که فوق استفاده اش تو Code ReUse ه!

حالا منتظر نظر های دوستان هستم تا به یه نتیجه ای برسیم.
مرسی

---

راستی، تعداد پست هام به «2به توان 11» رسید! :31: به خودم تبریک می گم! :46: :11:

mahdi7s
14-04-2010, 21:57
سلام

من مثالی که گذاشتید ندیدم ولی برنامه نویسی چند لایه را ترجیح می دهم به همین دلایلی که خودتان گفتید و شاید بهتر باشد برخی فصل ها ی کتاب معرفی شده در لینک زیر رو بخونید!(مخصوصا فصل آخر که بیشتر روی همین مسائل تاکید کرده)


برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

anvar.net
14-04-2010, 23:25
با سلام
من اون لینک شما رو ندیدم اما توضیحات و پست هاش رو خوندم, نمی دونم به قول شما از بدکاری ایشون نتیجه سوء گرفتید یا مشکل مربوط به چیزه دیگریست. به هر حال

سیستم های توزیع شده دارای مزایایی هستند که قابل توجه می باشند منجمله :

1 -
با قطعه قطعه کردن برنامه کاربردی به چند لایه می توان تغییرات صورت گرفته در لایه های مختلف رو از دید لایه نمایش پنهان کرد. در این حالت اگر تغیراتی در لایه های زیرین داشته باشیم تاثیر این تغییرات در برنامه کاربردی به حداقل خود می رسد. این حالت زمانی بوضوح مشاهده می شود که شما بخواهید تغییراتی را بصورت مرتب در برنامه کاربردی اعمال کنید. اگر بگید که تغییرات در برنامه های کاربردی اونقدر سریع اتفاق نمی افتند که این همه حساسیت از خودمون نشون بدیم, به نظر بنده ساده انگاری موضوعه. سازمان ها چه دولتی و چه خصوصی در صرف هزینه ها از روندهایی تبعیت م یکنند که حداقل ریسک رو داشته باشه. با پیشرفت سیستم های مدیریت, استاندارد و ....... و حتی تکنولوژیهای IT و غیره اگر پیشرفت نکنید از قافله عقب می مونید. در صورتی که از برنامه های توزیع شده چند لایه استفاده کنید خیلی راحت می تونید تغیرات خودتون رو در لایه های مختلف انجام بدید بدون اینکه به سایر لایه های کاری داشته باشد. ......................... این خیلی مهمه, کاهش هزینه و کاهش زمان

2 -
با لایه بندی برنامه , در صورتی که برنامه پیچیده باشه می توانیم, پیچیدگی ها رو محدود به لایه ها کنیم در این حالت نیز کنترل روند ساخت برنامه بهتر و بهینه تر مدیریت میشه. .................. الیته ذکر این نکته لازمه که تو کشور ما شاید زیاد به چشم نیاد ولی در سایر کشورها از کوچکترین فرصت به نحو احسن و بهینه شده استفاده میشه. ...... به امید آن روز

3 -
مهمتر از همه امنیت : در صورتی که از برنامه توزیع شده چند لایه استفاده کنیم. می توانیم امنیت را نه فقط در سطح پایگاه داده بلکه در همه سطوح مورد توجه قرار دهیم.

4 -

اگه طراحی بصورت استاندارد انجام شده باشد این معماری موجب افزایش سرعت و انعطاف پذیری برنامه میشود.

شاید هم بحث وب سرورها چیز مفید دیگه ای باشد که بنوعی دارای رابطه تنگاتنگ با این معماری است... و مقوله کاملا مجزایی است.

من یه مقاله فارسی داشتم که اطلاعات مبسوط و جامعی داشت منتها الان هر چی نگا می کنم پیداش نمی کنم. به ضمیمه کتاب اموزش برنامه نویسی ویژوال بیسیک دات نت و سی شارپ دات نت اقای "سید محمد هاشمیان" مراجعه کنید. حدود 20 صفحه رو به این موضوع اختصاص داده و ......................... نتیجه با خود شما

در پایان : شما نباید برنامه های کوچک خیلی ساده رو که برای یادگیری و سرگرمی نوشته میشه با سیستم های پیچیده تجاری و محاسباتی و آنالیز مالی .... مقایسه کنید. تو این سیستم ها بهترین راه تفکیک قطعات برنامه به چندین لایه هست که هر کدوم مستقل باشه و پیچیدگیهاش از سایر لایه ها منفک باشه

dogtag
15-04-2010, 08:32
ممنون که در بحث شرکت می کنید.

1- شما تصور کن که یه فیلد جدید به اطلاعات کاربر اضافه بشه! خب حالا باید تکلیف این فیلد رو تو تک تک لایه هات مشخص کنی! غیر از این که تو برنامه کاربردی تاثیر می ذاره، کار رو هم متناسب با تعداد لایه ها، بیشتر می کنه!

2- با 2 موافقم.

3- این رو متوجه نشدم! به نظر من امنیت در این روش کم تر هم میشه! حالا اگه لازم باشه، توضیح می دم. ولی دوست دارم اول شما توضبح بدید که این روش چجوری می تونه امنیت رو بالا ببره.

4- انعطاف رو نمی دونم، باید بیشتر توضیح بدید. سرعت رو هم همینطور. منظورتون سرعت اجراست یا مثلاً عیب یابی یا چی؟

منتظر جوابتون هستم :11:

anvar.net
15-04-2010, 22:07
با سلام

تغیرات اجتناب ناپذیره . . . اما این هم بستگی داره به شما که اصلا چه جوری برنامه رو نوشته باشی , در شرایطی میشه یک فیلد به بانک اضافه کرد اما هیچ کاری به لایه نمایش نداشته باشیم (گرچه شرایط خاص خودش رو داره). ولی در هر صورت مدیریت همین تغیرات متوالی در شرایط چند لایه بودن خیلی راحت تر از حالت عادیه. همین مثالی که خود شما زدید ... البته نه در هر شرایطی ولی در حالت هایی براحتی میشه با کمترین تغیرات در تمامی لایه ها کنترلش کرد.

ذکر این نکته هم لازمه که در صورت تغییر لایه سرویس های تجاری اگر این لایه بر روی یک سرور مستقل باشه در واقع نیازی به توزیع آن بین تمامی سرویس گیرندگان هم نیست.

منظور من امنیت کلی بود, شاید دقیقا اون چیزی نباشه که مد نظر شماست. مثل کلاس های رمزنگاری و رمز گشایی در لایه تجاری, اعتبار داده های ورودی در تمامی لایه ها و ......
مهمتر از همه شما باید شرایط طبیعی رو مد نظر داشته باشید. ابتدایی ترین تعریف این معماری تقسیم فیزیکی برنامه به چند قسمت و توزیع هر قسمت از آن بر روی یک سرور.معماری چند لایه اصولا بصورت ایده ال خودش زمانی پیاده میشه که قطعات مختلف بر روی سرورهای مختلف قرار داشته باشند. نه اینکه همه لایه ها در یک کامپیوتر باشند , گرچه در همین حالت هم باز بعضی از مزایا کماکان باقی می مانند اما این وضعیت حالت تاپ نیست

شما هم دلایل خودتون رو مطرح کنید شاید حق با شما باشه .....................

بابت انعطاف پذیری : البته منظورم مقیاس پذیری بود
فبلش مفهومش رو مشخص می کنم : منظور از مقیاس پذیری در برنامه های توزیع شده تعداد کاربرانی هست که می توانند یک وظیفه خاص را به صورت همزمان از سیستم درخواست کنند.

بنابراین نکته اصلی در طراحی برنامه های مقیاس پذیر , طراحی کامپوننت ها به صورتی است که با کمترین مقدار استفاده از منابع یک وظیفه خاص را اجرا کنند. در برنامه های چند لایه هم مقیاس پذیری در سطح خوبی بهبود می یابد. زیرا اتصالات بانک اطلاعاتی می توانند بدون انکه قطع شوند از کاربری که به آن نیاز ندارد گرفته شده و برای دیگر کاربران نگه داشته شود. این امر موجب می شود که تعداد کاربرانی که بخواهند از لایه میانی به یانک دسترسی داشته باشند افزایش یابند. در ثانی پردازش از از سمت سرویس گیرنده به لایه سرویس های تجاری منتقل می شود و در مجموع به واسطه دسته بندی لایه سرویس های تجاری و سرورهای بانک اطلاعاتی مقیاس پذیری افزایش می یابد ..... و کارایی شبکه به علت ارتباط لایه سرویس های تجاری با لایه بانک اطلاعاتی به جای ارتباط لایه سرویس گیرنده با بانک نیز افزایش پیدا می کند.

همچنین کامپوننت های تجاری می توانند به وسیله ابزارهای ارائه شده توسط Com+ و Enterprise services در حافظه بارگذاری شوند و تا موقع نیاز در انجا باقی بمانند این امر هم موجب افزایش تعداد کاربرانی می شود که لایه سرویس تجاری می تواند به انها پاسخ دهد زیر زمان مورد نیاز برای بارگذاری کامپوننت های لازم حذف می شود

در صورتی که هم که تعداد لایه ها بیشتر از 3 عدد باشد مدیریت آنها و قدرت عملکرد هر کدام از کلاس های موجود نیز بهتر و مفید تر میشود.

dogtag
15-04-2010, 22:36
در مورد کارایی در چند سرور، حق با شماست و من رو کاملاً قانع کرد.
ولی در یک سیستم و در یک برنامه ی کوچک، به نظرم کار اشتباهی میاد!

آخه متاسفانه جدیداً تو این مملکت گل و بلبل، اگر برای طراحی یک سیستم ساده، از این روش استفاده نکنی، بهت به چشم یه بی سواد نگاه می کنند! (باور کنید!)

ممنون از جواب هاتون. :11:

anvar.net
15-04-2010, 22:48
حق با شماست ما به جای اینکه زیرساخت های مهارت های خودمون رو تقویت کنیم با آب و تاب دنبال چیزهای جدید راه می افتیم غافل از اینکه وقتمون رو داریم هدر می دیم بدون اینکه چیز مفیدی رو یادگرفته باشیم(البته منظور برنامه نویسی چند لایه نیست . کلی میگم). ولی چاره ای نداریم باید پیش بریم.

در پناه حق,

VILIBILI
16-04-2010, 10:14
با سلام خدمت دوستان
به نظر من این مطلب در پروژه ها بزرگ و با افراد حرفه ای بیشتر می تونه خودش رو نشون بده و همچنین زمان زیادی می بره تا یک فرد بتونه در عمل با مفهوم اون آشنا بشه.
منهم چند لینک به شما معرفی می کنم بد نیست اون ها رو مطالعه کنید جواب سوال هاتون رو می تونید توشون پیدا کنید:

[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ] ([ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ])