برنامه نویسی چند لایه قسمت اول : مقدمه (n-tierd Programming)
پیش نیاز این سری مقالات :
- برنامه نویسی شی گرا
- کار با پایگاه داده 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 لایه را پیاده سازی می کنیم .