HOW 2 LEARN ASP.NET
نویسنده : delshad
تاریخ  : ۱۳۸۹/۱/۱۴
امتیاز :
بازدید : 2361
موضوع : برنامه نویسی چند لایه قسمت اول : مقدمه (n-tierd Programming)
توضیحات : در این سری مقالات معماری 3 لايه و چند لایه (multi tier) با استفاده از مفاهیم شی گرایی مورد بررسی قرار می گیرد .
     

برنامه نویسی چند لایه قسمت اول : مقدمه (n-tierd Programming)

پیش نیاز این سری مقالات :

  1. برنامه نویسی شی گرا
  2. کار با پایگاه داده Ado.NET

خیلی از ما در مورد برنامه نویسی چند لایه بارها و بارها شنیده ایم ، بعضی از ما درست یا غلط از آن استفاده می کنیم و برخی هیچ گاه از آن استفاده نکرده ایم .

در این سری مقالات تلاش بنده این است که به صورت ملموس تجربیان شخصی خود را در مورد برنامه نویسی چند لایه در اختیار دوستان قرار دهم .

می دانم در ابتدای امر چندین سوال در ذهن شما مطرح شده است ، برای همین  به برخی از مهمترین سوالات می پردازم :

  •  منظور از لایه در برنامه نویسی چیست  ؟

برای پاسخ به این سوال یک پروژه تحت وب را در نظر بگیرید ، در این پروژه شما قرار است یک عملیات بانک اطلاعاتی مانند درج و به روز رسانی و دریافت اطلاعات را انجام دهید ، شما میتوانید تمامی کد های مربوط به این عملیات را در یک صفحه (CodeBehind) بنویسید یا میتوانید این عملیات را به چند بخش تقسیم کرده و آنها را بر مبنای خاصی دسته بنده کنید ، این مبنا را لایه می نامیم .

حال سوال این است که مبنای دسته بندی چیست و این دسته بندی به چه صورت انجام میشود ؟

شما باید بدانید که یک روش ثابت برای دسته بندی وجود ندارد ولی برنامه نویسان و توسعه دهندگان طی تجربه به این نتیجه رسیده اند که یک پروژه را به سه یا چهار یا... لایه تقسیم کنند ، لایه اول Presention Layer یا User Interface نام دارد ، این لایه نهایی ترین لایه است و در دسترس کاربر نهایی قرار می گیرد ، کمترین کد در این لایه نوشته می شود (مثلا Default.aspx و Default.aspx.cs جزئی از این لایه هستند)

لابه دیگری به نام Data Access Layer (یا DAL) وجود دارد ، این لایه ارتباط با دیتابیس را برقرار می کند ، تمامی کد های مربوط به عملیات بانک اطلاعاتی (دریافت ، درج ، حذف و به روز رسانی و...) و کد های مربوط به ارتباط و قطع ارتباط در این لایه پیاده سازی می شود .

لایه ای به نام Bussiness Logic Layer نیز وجود دارد که بین DAL و UI قرار میگیرد ، این لایه وظایف متعددی را میتواند ایفا کند ، چک کردن شرط ها ، برخی اعتبار سنجی ها ، فراخوانی متدهای DAL و همچنین OR Mapping (مپ کردن فیلدهای بانک اطلاعاتی به کلاس) و .... از را می توان از وظایف این لایه نام برد .

لایه دیگری نیز میتوان به لایه های فوق اضافه کرد ، Cache Layer لایه ذخیره اطلاعات در حافظه کش است ، همانطور که میدانید کش از حافظه کوتاه مدت استفاده می کند بنابراین بسیار سریعتر از دیتابیس( که بر روی هارد دیسک ذخیره می شود ) قابل دسترسی است . برخی اطلاعات پر استفاده که نیازی ندارد به روز باشند را میتوان در کش ذخیره کرد . این لایه بین BLL و UI قرار میگرد تا UI به جای استفاده از اطلاعات تازه از کش اطلاعات را واکشی نماید .

میتوان لایه های دیگری را نیز بر حسب نیاز اضافه کرد و یا از برخی لایه های فوق استفاده نکرد ، هیچ الزامی وجود ندارد .

برخی از افراد خود دیتابیس را هم یک لایه در نظر میگیرند و برخی خیر ، بنابراین اگر اسمی از برنامه نویسی سه لایه یا چهارلایه یا پنج لایه به گوش شما خورد بدانید که به کمی توضیح بیشتر نیاز دارد

معمول ترین روش برنامه نویسی چند لایه برنامه نویسی سه لایه ( 3tierd ) است  » UI , BLL , DAL

  • چه نیازی به لایه بندی پروژه است ؟

شرکتی را در نظر بگیرید که 40 کارمند دارد ، این شرکت میتواند یک آپاراتمان 200 متری را اجاره کرده و تمام کارمندان خود را در این واحد مستقر کند . با این کار همه کارمندان واحد های مختلف (بازرگانی ، اداری ، مالی ، فنی و...) در کنار هم خواهند بود ، هم همه ، ازدحام رفت و آمد مشتری و.... از ابتدایی ترین مشکلات این روش خواهد بود .

اما این شرکت میتواند 3 طبقه 80 متری تهیه کند و واحد های مختلف را در طبقات مختلف مستقر نماید ، با این کار شاید شرکت هزینه بیشتری را متقبل شود و دسترسی واحد ها به یکدیگر به سادگی قبل نباشد ولی در عوض آرامش ، افزایش بازدهی کار ، برقرار شدن نظم و سکوت ، رضایت مشتری و.... از نتایج آن خواهد بود .

کد نویسی هم از این قاعده مستثنی نیست ، در حقیقت با این کار هر قطعه کد در سر جای خود قرار می گیرد .

علاوه بر نظم دهی به کد نویسی و خوانا شدن کد ، روش های چند لایه مزایای دیگری نیز دارند :

  • هر لایه در نهایت به Dll تبدیل شده و مجزا می شود بنابراین قابلیت استفاده از هر لایه در پروژهای مختلف یا حتی چند پروژه در آن واحد (مثلا پنل مدیریت و نمایه یک وب سایت به صورت اشتراکی از لایه BLL و DAL استفاده می کنند ) را در اختیار توسعه دهنده قرار می دهد .
  • جداشدن لایه ها و تمیز شدن کد ها به تیم برنامه نویس کمک می کند که بتوانند در کنار هم راحت تر کار کنند
  • در هنگام تغییر بانک اطلاعاتی کل پروژه تحت الشعاع قرار نمی گیرد و تغییرات فقط در لایه ارتباط با بانک اطلاعاتی اعمال می شود .
  • روند خطا یابی (Debuging) تسهیل می گردد
  • برنامه نویسی شی گرا OOP در روش چند لایه نمود پیدا کرده و قابل پیاده سازی می گردد
  • از تکرار کد در صفحات مختلف جلوگیری می شود .
  • کامپایل شدن و بارگذاری پروژه بسیار ساده تر خواهد شد . 
  • احتمال بروز خطای انسانی در هنگامی کد نویسی به حداقل کاهش می یابد .

 و...

 

  • لایه بندی پروژه در سرعت توسعه پروژه و همچنین سرعت لود شدن صفحات چه تاثیری دارد ؟

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

میتوان گفت تاثیری خاصی در بارگذاری صفحات ندارد مگر اینکه از لایه CL یا Cache Layer استفاده کنید که این کار مسلما باعث افزایش سرعت و بازدهی پروژه شما خواهد شد .

 

در مقاله بعد از تئوری خارج شده و اولین پروژه 3 لایه را پیاده سازی می کنیم .


 

 

 
امتیاز بدهید :

نویسنده : احمد ahmd.ph@gmail.com ۱۳۸۹ بيست و ششم تير
سلام ممنون از مطالب ارائه شده. مفید بود
نویسنده : علی دلشاد delshad@faradade.com ۱۳۸۹ چهاردهم خرداد
سلام ، برنامه نویسی چند لایه را n-tiered مینامند ، به هر یک از لایه ها layer یا tier می گویند هیچ تفاوتی نمی کند ، در ضمن پیشنهاد می کنم خیلی خودتان را درگیر این مسائل کلیشه ای نکنید و به عمق مسئله که لایه بندی پروژه برای یک هدف مهم تر هست بپردازید
نویسنده : sara sara_sara@yahoo.com ۱۳۸۹ سيزدهم خرداد
سلام ممنون از آموزش هاتون یه نکته من جایی خوندم که لایه با تایر فرق میکنه در واقع این چیزی که شما بهش پرداختین Leyers هست که مفهوم منطقی داره و Tierd یه مفهوم فیزیکی داره و این دو با هم فرق میکنند.
نویسنده : mohsen Absolute.hck@gmail.com ۱۳۸۹ يازدهم ارديبهشت
ممنونم از زحمات شما برای اولین با در ایران همچین سایت پر محتوا و با نظم درباره برنامه نویسی میبینم برای پیشرفت و یکه تاز بودن در این امر همه جوره آماده همکاری هستم
نویسنده : nader minaie nader.mineh@gmail.com ۱۳۸۹ ششم ارديبهشت
ممنون علی آقا دستت درد نکنه
نویسنده : Aghamohammadi Ir.WebDeveloper@Yahoo.com ۱۳۸۹ بيست و يکم فروردين
بسیار عالی،این بحث در ایران بسیار پیچیده و مهم (از لحاظ خیلی ها)دیده میشه،واقعا جای تشکر داره که شما این بحث رو به سادگی و روانی هرچه تمام تر در اختیار همه قرار میدید،براتون آرزوی موفقیت میکنم.
نویسنده : Ali Darabian Darabian@gmail.com ۱۳۸۹ هجدهم فروردين
ممنون از مقاله خوبتون , منتظر ادامه هستم . با تشکر

 
نظر بدهید :
لطفا سوالات فنی خود را در تالار گفتگو www.forum.how2learnasp.net مطرح نمایید
نام :  
ایمیل :    
نظرات :
 
Xml rss feed

 

Valid CSS! Atom rss feed
Ali Delshad Official Site