۱۳۸۸ دی ۲, چهارشنبه

در يك برنامه 3 لايه،لايه داده (Data Layer) مي تواند يك يا چند Stored Proceture باشد كه حاوي دستورات Sql مي باشند و در زمان لازم اجرا مي شوند.وقتي كه از Stored Proceture ها استفاده مي كنيم باعت مي شود كه ديگر لازم نباشد دستورات Sql خود را توسط برنامه حاوي رابط كاربر به بانك اطلاعات بفرستيم و اين باعث مي شود كه برنامه ما در لايه هاي منطقي و نمايش اطلاعي از اين دستورات و ساختار آنها نداشته باشند.در ضمن استفاده از Stored Proceture باعث افزايش سرعت برنامه مي شوند.

لايه منطقي مي تواند يك سرويس وب (Web Service) باشد.در اين لايه قوانين تجاري و محاسبات برنامه قرار مي گيرند واين لايه كه يك لايه مياني نيز مي باشد با لايه داده و نمايش در ارتباط است و مثلا داده ها را از لايه داده دريافت كرده و به لايه نمايش ارسال مي كند.تغييراتي كه در لايه نمايش بر روي داده ها انجام مي گيرد توسط لايه منطقي به لايه داده فرستاده مي شود.

لايه نمايش هم مي تواند يك برنامه Windows Application و يا Web Application باشد كه به عنوان يك رابط كاربر قرار گرفته و كاربر نهايي با آن در تعامل مي باشد

در معماری 3 لایه برنامه به چه بخش هایی تقسیم می شود و هر یک چه وظیفه ای را بر عهده دارند و چگونه با یکدیگر ارتباط برقرار می کنند؟

در معماری 3 لایه برنامه به چه بخش هایی تقسیم می شود و هر یک چه وظیفه ای را بر عهده دارند و چگونه با یکدیگر ارتباط برقرار می کنند؟






در معماری 3 لایه برنامه دارای بخش های زیر می باشد :



1) Presentation Layer لایه نمایش

2) Business Logic Layer لایه منطق

3) Data Access Layer لایه دسترسی به داده



در لایه دسترسی به داده هرگونه عملیات خواندن درج بروز رسانی و حذف داده های پایگاه داده را بر عهده می گیرد



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

نکته مهم در لایه منطق این است که گردش کار برنامه در این لایه انجام میشود .

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



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

نکات مهم

می توان نکات مهم بحث را اینطور خلاصه کرد:


1)در معماری چند لایه، برنامه به قسمت های کوچکتری تقسیم می شود که هریک وظیفه ی خاصی را بر عهده دارند، بدین معنا که هر Task(وظیفه) در لایه ی مخصوص به خود انجام می شود،

2)اگر لایه ها به طور فیزیکی از یکدیگر مجزا شده باشند، به هر یک از آن ها یک Tier گفته می شود و هر یک از این Tier ها می توانند بر روی یک سرور مجزا قرار گیرند(Distributed Applications)، (در یک Solution، برای هر Tier، یک پروژه جدید ایجاد می گردد)

3)در صورتی که لایه ها به طور منطقی از یکدیگر مجزا شده باشند، به هر یک از آنها یک Layer گفته می شود و عموما" تمامی لایه ها در یک پروژه قرار خواهد گرفت،

4)نگهداری(Maintenance) آسانتر می گردد، بدین صورت که با بهره گیری از یک سری استاندارد ها و فریم ورک ها و نیز برتامه نویسی شیء گرا این امر محقق می گردد،

5)امکان اضافه کردن یک لایه به لایه های موجود و یا تعویض یک لایه با یک لایه ی دیگر وجود دارد،

6)کار گروهی نیز بسیار منظم تر خواهد شد،

7)با بهره گیری از قوانین برنامه نویسی شیء گرا می توان هر تغییری در عملکرد برنامه را در کمترین زمان و با پایین ترین میزان تاثیر منفی در کارکرد سایر قسمت ها، اعمال نمود،

8)با به کار گیری مکانیزم های موجود، اشکال زدایی(Debugging) پروژه بسیار راحت تر خواهد بود و در حقیقت موجب ارتقاء Manageability سیستم می گردد،

9)امنیت(Security) نیز ارتقاء می یابد،

10)...

معماری سه لایه

معماری سه لایه چیست؟


این معماری در اصل می‌توان گفت برگرفته شده از ایده معماری چند لایه (Multi tire) می‌باشد. در معماری سه لایه پروژه‌های نرم افزاری بر خلاف مدل دو لایه که باعث افزایش ترافیک و کاهش شدید انعطاف پذیری می‌شود، در سه لایه اصلی طراحی و پیاده سازی می‌شوند.این سه لایه عبارت اند از:

۱) لایه نمایش (Presentation Layer)

۲) لایه ی منطقی (Business Logic Layer)

۳) لایه ی دسترسی به داده ها (Data Access Layer)










این سه لایه هر کدام وظایف جداگانه و خاص خود را دارند.ولی این لایه ها با یکدیگر در ارتباط هستند و لایه ی منطقی، واسط لایه ی “دسترسی به داده ها” و “لایه ی نمایش” می باشد. به عبارت دیگر، لایه ی نمایش نباید به صورت مستقیم با لایه ی دسترسی به داده ها ارتباط برقرار کند.

اکنون به صورت مختصر به شرح هر لایه می پردازیم:

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



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



لایه دسترسی به داده ها: این لایه نقش ذخیره،حذف، بازیابی و بروزرسانی اطلاعات را برعهده دارد که داده‌ها را از لایه منطقی گرفته یا اطلاعات درخواستی را به آن تحویل می‌دهد. در عمل ثابت شده است که ارتباط مستقیم لایه دسترسی به داده ها با لایه نمایش در سیستم های بزرگ هم از جهت امنیت و هم کارآیی سیستم را دچار مشکل می‌کند. به همین دلیل است که از لایه ی منطقی (Business) در معماری سه لایه استفاده می کنیم.



نحوه همکاری و تعامل این سه لایه:










• کاربر برای داده های موجود در پایگاه داده درخواستی را ارسال می کند.

• لایه Data Access داده های درخواسای را بازیابی می کند و از طریق لایه Business آنها را برای مشاهده کاربر به لایه Presentation می فرستد.(البته برای بازیابی اطلاعات می توان اطلاعات را مستقیمآ از لایه Data Access به لایه Presentation نیز فرستاد.)

• در این مرحله لایه Presentation اطلاعاتی که از لایه Business (و یا مستقیمآ از پایگاه داده) گرفته است را نشان می دهد.

• اکنون کاربر می تواند داده های نمایش داده شده را با توجه به نیاز خود پردازش کند.(کارهایی از قبیل درج، حذف، ویرایش و ...)

• لایه Business صحت و درستی داده هایی که کاربر برای پردارش اطلاعات وارد نموده است را بررسی می کند.

• اگر اطلاعات درست باشند لایه Business آنها را برای ثبت در پایگاه داده به لایه Data Access می فرستد.



چرا از معماری سه لایه استفاده می کنیم؟



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



ویژگی دیگر معماری سه لایه امکان گسترش آن می‌باشد.در این معماری برنامه نویسان می‌توانند در صورت تغییرات که می‌تواند کوچک یا بزرگ باشد در هر لایه این تغییرات را اعمال نمایند بدون اینکه نیاز به تغییر در لایه‌های دیگر باشد یا کمترین تغییرات متوجه لایه دیگر می‌شود. بعنوان مثال امروزه در سیستمهای مدرن بانکی قوانین تغییرات زیادی را دارند که اگر از معماری دو لایه استفاده شود جهت اعمال این تغییرات نیاز به تغییرات فراوانی در فایلهای اجرایی یا بانک اطلاعاتی و نصب مجدد آنها برای تمامی کاربران می‌باشد ولی در معماری سه لایه اگر به فرض فرمول محاسبه سود تغییر کند با اعمال تغییر در لایه Business و عوض کردن این لایه با ویرایش جدید، تمامی سیستمها بدون آنکه متوجه تغییر شوند و یا نیاز به نصب مجدد داشته باشند می‌تواند با سیستم جدید ارتباط برقرار کنند.همچنین پایگاه داده (DataBase) برنامه را می توان به راحتی تغییر داد .










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