0

مقدمه ای بر برنامه نویسی چند لایه

 
saem1390
saem1390
کاربر برنزی
تاریخ عضویت : شهریور 1391 
تعداد پست ها : 3
محل سکونت : تهران

مقدمه ای بر برنامه نویسی چند لایه

 

در کل برنامه­ها را می­توان به گونه­های ذیل پیاده سازی میکرد :

·         برنامه­های ویندوزی[1]

·         برنامه­های رومیزی[2]

·         برنامه­های وبی[3]

در برنامه­های ویندوزی , برنامه­ها به صورت تک لایه ای نوشته می شوند و تمام آن لایه برای کاربر نصب می­گردد. برای مثال می­توان برنامه­های واژه پرداز[4] و یا ارائه نمایشی[5] را نام برد. در برنامه­های وبی , کل برنامه در سرور قرار می­گیرد و در کلاینت کاربر فقط با مرورگر وب[6] کار کرده و اطلاعات خواسته شده را از سرور درخواست و نمایش می­دهد و چیزی در کلاینت قرار نمی­گیرد. اما در برنامه­های رومیزی هدف این می باشد که برنامه به صورت سرویس دهنده[7] , سرویس گیرنده[8] پیاده سازی گردد. در این نوع برنامه­ها برنامه به صورت چند لایه[9] نوشته می­شوند و لایه مربوط به ارتباط با بانک اطلاعاتی در سمت سرور و لایه­های تجاری و نمایش در سرویس گیرنده قرار می­گیرد.

کلید واژه :  لایه , سرویس دهنده , سرویس گیرنده



[1] Windows Application

[2] Desktop Application

[3] Web Application

[4] Microsoft Word

[5] Microsoft Power Point

[6] Web Browser

[7] Server

[8] Client

[9] N Layer 

 

 

برنامه­های چند لایه :

در معماری چند لایه, تمام برنامه به چندین بخش تقسیم می­شود. این بخش­ها می­توانند فیزیکی یا منطقی باشند.لایه­ها از هم مستقل و هر کدام کار خاصی را انجام می­دهدو ارتباط هر کدام از لایه ها از بالا به پایین می باشد.یعنی لایه بالایی فقط متد­های لایه پایین تر از خودش را فراخانی کند و لایه پایین نمی­تواند متد­های لایه بالایی خودش را فراخوانی نماید.

لایه A --> لایه B --> لایه C --> لایه D

در شکل فوق لایه A می­تواند به متد­های لایه B  دسترسی داشته باشد ولی لایه B نمی تواند­به متد­های لایه A دسترسی داشته باشد.

نکته :

اگر در لایه , هر لایه ( مثل لایه B ) که با لایه­های بالایی و پایینی خود در ارتباط است پارامتر­های ورودی و خروجی تغییر نکند می توانیم کد­های بدنه متد مورد نظر را تغییر دهیم و این همان مسئله مستقل بودن لایه ها می باشد.

 

 

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

·         لایه رابط کاربران[1]

·         لایه منطق تجاری[2]

·         لایه دسترسی به اطلاعات[3]

لایه رابط کاربری

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

لایه منطق تجاری

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

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

 در اصل مغز متفکر برنامه همین لایه منطق تجاری است.

هدف از لایه منطق تجاری کمک به لایه واسط کاربر برای ارئه خدمات بهتر به کاربر می­باشد.

لایه دسترسی به اطلاعات

این لایه با دستکاری داده ها مثل اضافه ، حذف و به روز رسانی آن ها سر و کار دارد. داده هایی که به آن ها اشاره کردیم می­توانند در سیستم مدیریت پایگاه داده رابطه­ای[4] یا  XML[5] قرارداشته باشند. لایه دسترسی به داده راباید چنان طراحی کردکه دیگرلایه ها نیازی به دانستن وضعیت انبارداده­هانداشته باشند.

 

نکته :

به دلیل اینکه لایه­ها به طور منطقی از یکدیگر مجزا و مستقل هستند هر کدام از آنها می توانند به طور مجزا کامپایل شده یا مجددا پیکریندی شوند بدون اینکه بر لایه های دیگر اثری بگذارند.

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

 

 

فرآیندها در برنامه­های چند لایه :

به طور کلی هر فرآیند در برنامه های چند لایه طبق مراحل ذیل کار می کند:

·         کاربر برای داده­های برنامه , درخواستی ارسال می کند

·         لایه دسترسی به داده , داده­های مورد نظر را بازیابی می­کند و از طریق لایه منطق تجاری آن ها را به لایه نمایش می­فرستد.

·         لایه نمایش , اطلاعاتی که باید نمایش داده شوند را از طریق لایه منطق تجاری دریافت می­کند.

·         کاربر داده­ها را تغییر می­دهد و عمل مناسب در مورد آن­ها را اجرا می­کند ( مثل اضافه یا به روز کردن داده­ها )

·         لایه منطق تجاری صحت داده­های وارد شده توسط کاربر را بررسی می­کند ( داده­ها را اعتبار سنجی می­کند)

·         اگر داده­ها معتبر باشند آن­ها را برای بروز رسانی در بانک اطلاعاتی به دست لایه دسترسی به داده می­سپارد.

 

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

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

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

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

 

·         هر لایه در نهایت به یکDLL تبدیل شده و مجزا می­شود, بنابراین قابلیت استفاده از هر لایه در پروژه­های مختلف یا حتی چند پروژه در آن واحد را در اختیار توسعه دهنده قرار می­دهد.

·         جدا شدن لایه ها و تمیز شدن کدها به تیم برنامه­نویس کمک می کند که بتوانند در کنار هم راحت­تر کار کنند.

·         اتصال میان رابطکاربری،پردازش­هاوبانکاطلاعاتیکممی­شود.

·         تغییردربانکاطلاعاتییاروال­هایدسترسیبهداده­هاتاثیریدرلایهنمایشیابرنامه کلاینت نخواهد گذاشت.

·         برنامه کلاینت با عبارات SQL آمیختهنخواهدشد.

·         نامجداولوستون­هابهطورموثریازبرنامهکلاینتحذفمی­شوند.

·         برنامهکلاینتنمی­فهمدکهداده­هاازکجاآمده­اند

·         تغییر یا گسترش برنامه بسیار ساده تر خواهد شد، بدون نیاز به تغییر یا کامپایل مجدد برنامه کلاینت.

·         روند خطایابی[6]  تسهیل می­شود.

·         از تکرار کد در صفحات مختلف جلوگیری می­شود.

·         کامپایل شدن و بارگذاری پروژه بسیار ساده­تر خواهد شد.

·         احتمال بروز خطای انسانی در هنگام کد نویسی  به حداقل کاهش می­یابد.

نکته منفی در معماری چند لایهاین است که باید تعداد زیادی بخش ها و کلاس­های از هم جدا در نرم افزار ساخته شود اما به هر حال مزایای این روش بیشتر و برتر از معایب آن است.



[1]Presentation Layer

[2]Business Logic Layer

[3]Data Access Layer

[4]RDBMS

[5]Extensible Markup Language

[6]Debuging

 

سه شنبه 14 شهریور 1391  9:24 AM
تشکرات از این پست
دسترسی سریع به انجمن ها