در کل برنامهها را میتوان به گونههای ذیل پیاده سازی میکرد :
· برنامههای ویندوزی[1]
· برنامههای رومیزی[2]
· برنامههای وبی[3]
در برنامههای ویندوزی , برنامهها به صورت تک لایه ای نوشته می شوند و تمام آن لایه برای کاربر نصب میگردد. برای مثال میتوان برنامههای واژه پرداز[4] و یا ارائه نمایشی[5] را نام برد. در برنامههای وبی , کل برنامه در سرور قرار میگیرد و در کلاینت کاربر فقط با مرورگر وب[6] کار کرده و اطلاعات خواسته شده را از سرور درخواست و نمایش میدهد و چیزی در کلاینت قرار نمیگیرد. اما در برنامههای رومیزی هدف این می باشد که برنامه به صورت سرویس دهنده[7] , سرویس گیرنده[8] پیاده سازی گردد. در این نوع برنامهها برنامه به صورت چند لایه[9] نوشته میشوند و لایه مربوط به ارتباط با بانک اطلاعاتی در سمت سرور و لایههای تجاری و نمایش در سرویس گیرنده قرار میگیرد.
کلید واژه : لایه , سرویس دهنده , سرویس گیرنده
[5] Microsoft Power Point
برنامههای چند لایه :
در معماری چند لایه, تمام برنامه به چندین بخش تقسیم میشود. این بخشها میتوانند فیزیکی یا منطقی باشند.لایهها از هم مستقل و هر کدام کار خاصی را انجام میدهدو ارتباط هر کدام از لایه ها از بالا به پایین می باشد.یعنی لایه بالایی فقط متدهای لایه پایین تر از خودش را فراخانی کند و لایه پایین نمیتواند متدهای لایه بالایی خودش را فراخوانی نماید.
لایه A --> لایه B --> لایه C --> لایه D
در شکل فوق لایه A میتواند به متدهای لایه B دسترسی داشته باشد ولی لایه B نمی تواندبه متدهای لایه A دسترسی داشته باشد.
نکته :
اگر در لایه , هر لایه ( مثل لایه B ) که با لایههای بالایی و پایینی خود در ارتباط است پارامترهای ورودی و خروجی تغییر نکند می توانیم کدهای بدنه متد مورد نظر را تغییر دهیم و این همان مسئله مستقل بودن لایه ها می باشد.
هر برنامه میتواند به هر تعداد لایه داشته باشد ولی به طور کلی بیشتر برنامهها سه لایه مجزا دارند که عبارتند از :
· لایه رابط کاربران[1]
· لایه منطق تجاری[2]
· لایه دسترسی به اطلاعات[3]
لایه رابط کاربری
بخشی از نرم افزار می باشد که با کاربر برنامه ارتباط برقرار مینماید.اصلی ترین وظیفه این لایهنمایش دادهها به کاربر نهایی و اجازه ارتباط داشتن با دادهها می باشد. این لایه ، درواقع لایهای است که اطلاعات سرور را به کاربر نشان می دهد ( به همین دلیل به آن لایه ارائه دهنده هم میگویند ) و اطلاعات مورد نیاز سرور را از کاربر دریافت می کند. در این لایه هیچ احتیاجی به دانستن ساختار بانک اطلاعاتی یا هر سرویس دیگری که توسط لایه سرویسهای اطلاعاتی ارائه می شود ندارد. این لایه فقط از متدهای لایه منطق تجاری استفاده میکند
لایه منطق تجاری
لایه منطق تجاری از چندین بخش که کارهایی نظیر اعتبار سنجی کار، گردش کار یا کارهای مشابه را انجام میدهند تشکیل شده است. این لایه مسئول چگونگی دسترسی به اطلاعات می باشد. این مسئولیت شامل دریافت تقاضای اطلاعات مورد نیاز از طرف لایه کاربر و فرستادن آن اطلاعات به لایه دسترسی به اطلاعات و البته بازگرداندن پاسخ درخواست ها به کاربر است.
در واقع لایه منطق تجاری است که عملیات اصلی برنامه در آن انجام میگیرد مثلا در برنامه حسابداری انجام فرمولها و محاسبات سود و زیان در این لایه صورت می گیرد .
در اصل مغز متفکر برنامه همین لایه منطق تجاری است.
هدف از لایه منطق تجاری کمک به لایه واسط کاربر برای ارئه خدمات بهتر به کاربر میباشد.
لایه دسترسی به اطلاعات
این لایه با دستکاری داده ها مثل اضافه ، حذف و به روز رسانی آن ها سر و کار دارد. داده هایی که به آن ها اشاره کردیم میتوانند در سیستم مدیریت پایگاه داده رابطهای[4] یا XML[5] قرارداشته باشند. لایه دسترسی به داده راباید چنان طراحی کردکه دیگرلایه ها نیازی به دانستن وضعیت انباردادههانداشته باشند.
نکته :
به دلیل اینکه لایهها به طور منطقی از یکدیگر مجزا و مستقل هستند هر کدام از آنها می توانند به طور مجزا کامپایل شده یا مجددا پیکریندی شوند بدون اینکه بر لایه های دیگر اثری بگذارند.
چون در مدل سه لایه پردازش اطلاعات از سمت سرویس گیرنده به لایه منطق تجاری انتقال میباید باعث افزایش کارایی شبکه به خاطر ارتباط لایه منطق تجاری با لایه دسترسی به اطلاعات به جای ارتباط سرویس گیرنده با لایه دسترسی به اطلاعات افزایش می یابد.
فرآیندها در برنامههای چند لایه :
به طور کلی هر فرآیند در برنامه های چند لایه طبق مراحل ذیل کار می کند:
· کاربر برای دادههای برنامه , درخواستی ارسال می کند
· لایه دسترسی به داده , دادههای مورد نظر را بازیابی میکند و از طریق لایه منطق تجاری آن ها را به لایه نمایش میفرستد.
· لایه نمایش , اطلاعاتی که باید نمایش داده شوند را از طریق لایه منطق تجاری دریافت میکند.
· کاربر دادهها را تغییر میدهد و عمل مناسب در مورد آنها را اجرا میکند ( مثل اضافه یا به روز کردن دادهها )
· لایه منطق تجاری صحت دادههای وارد شده توسط کاربر را بررسی میکند ( دادهها را اعتبار سنجی میکند)
· اگر دادهها معتبر باشند آنها را برای بروز رسانی در بانک اطلاعاتی به دست لایه دسترسی به داده میسپارد.
چه نیازی به لایهبندی پروژه است ؟
شرکتی را در نظر بگیرید که 40 کارمند دارد , این شرکت میتواند یک آپارتمان 200 متری را اجاره کرده و تمام کارمندان خود را در این واحد مستقر کند, با این کار همه کارمندان واحد های مختلف (بازرکانی , اداری , مالی , فنی و ... ) در کنار هم خواهند بود , هم همه , ازدحام رفت و آمد مشتری و ... از ابتدایی ترین مشکلات این روش خواهد بود.
اما این شرکت می تواند 3 طبقه 80 متری تهیه کند و واحدهای مختلف را در طبقات مختلف مستقر نماید , با این کار شاید شرکت هزینه بیشتری را متقبل شود و دسترسی واحدها به یکدیگر به سادگی قبل نباشد ولی در عوض آرامش , افزایش بازدهی کار , برقرار شدن نظم و سکوت , رضایت مشتری و ... از نتایج آن خواهد بود.
کدنویسی هم از این قاعده مستثنی نیست , در حقیقت با این کار هر قطعه کد در سر جای خود قرار میگیرد. علاوه بر نظم دهی به کد نویسی و خوانا شدن کد , روشهای چند لایه مزایای دیگری نیز دارند که به شرح ذیل میباشد :
· هر لایه در نهایت به یکDLL تبدیل شده و مجزا میشود, بنابراین قابلیت استفاده از هر لایه در پروژههای مختلف یا حتی چند پروژه در آن واحد را در اختیار توسعه دهنده قرار میدهد.
· جدا شدن لایه ها و تمیز شدن کدها به تیم برنامهنویس کمک می کند که بتوانند در کنار هم راحتتر کار کنند.
· اتصال میان رابطکاربری،پردازشهاوبانکاطلاعاتیکممیشود.
· تغییردربانکاطلاعاتییاروالهایدسترسیبهدادههاتاثیریدرلایهنمایشیابرنامه کلاینت نخواهد گذاشت.
· برنامه کلاینت با عبارات SQL آمیختهنخواهدشد.
· نامجداولوستونهابهطورموثریازبرنامهکلاینتحذفمیشوند.
· برنامهکلاینتنمیفهمدکهدادههاازکجاآمدهاند
· تغییر یا گسترش برنامه بسیار ساده تر خواهد شد، بدون نیاز به تغییر یا کامپایل مجدد برنامه کلاینت.
· روند خطایابی[6] تسهیل میشود.
· از تکرار کد در صفحات مختلف جلوگیری میشود.
· کامپایل شدن و بارگذاری پروژه بسیار سادهتر خواهد شد.
· احتمال بروز خطای انسانی در هنگام کد نویسی به حداقل کاهش مییابد.
نکته منفی در معماری چند لایهاین است که باید تعداد زیادی بخش ها و کلاسهای از هم جدا در نرم افزار ساخته شود اما به هر حال مزایای این روش بیشتر و برتر از معایب آن است.
[5]Extensible Markup Language