معماری چند لایه

استفاده از معماري Multi-tier (چندلايه) 

 

در معماری چند لایه تمام برنامه به چندین بخش تقسیم می‌شود. این بخش‌ها می‌توانند فیزیکی یا منطقی باشند. هر بخش کار خاصی را انجام می‌دهد مثلا نمایش interface کاربر یا دسترسی به داد‌ه‌ها. برنامه می‌تواند به هر تعداد لایه داشته باشد ولی به هر حال بیش‌تر برنامه‌ها سه لایه‌ی مجزا دارند که عبارت‌اند از:
ـ Presentation Layer
ـ Business Logic Layer
ـ Data Access Layer
همان‌طور که احتمالا حدس زده‌اید، لایه‌ی Presentation چیزی نیست به جز بخشی از نرم‌افزار که با کاربر برنامه‌ی شما ارتباط برقرار می‌کند (interface برنامه‌ی شماست). نمایش داده‌ها به کاربر نهایی و اجازه به آنان برای ارتباط داشتن با داده‌ها، اصلی‌ترین وظیفه‌ی این لایه است.
در بیش‌تر موارد، داده‌هایی که توسط کاربر وارد می‌شوند نیاز به اعتبارسنجی یا پردازش اضافی دارند. این مسؤولیت لایه‌ی Business Logic است.
در نهایت داده‌های برنامه‌ی شما نیاز به ذخیره و بازیابی از طریق یک انبار داده دارند (مثلا سیستم مدیریت DataBaseهای رابطه‌ای یا RDBMS و یا XML و …) این وظیفه توسط لایه‌ی دسترسی به داده انجام می‌شود

ه‌طور خلاصه، فرایند مورد نظر این‌گونه کار می‌کند:
- کاربر برای داده‌های برنامه، درخواستی ارسال می‌کند.
- لایه‌ی Data Access داده‌های مورد نظر را بازیابی می‌کند و از طریق لایه‌ی Business Logic آن‌ها را به لایه‌ی نمایش می‌فرستد. بعضی مواقع لایه‌ی دسترسی به داده‌ها، این داده‌ها را مستقیما به لایه‌ی نمایش ارسال می‌کند.
- لایه‌ی نمایش اطلاعاتی که باید نمایش داده شوند را از طریق لایه‌ی Business Logic دریافت می‌کند.
- کاربر داده‌ها را تغییر می‌دهد و عمل مناسب در مورد آن‌ها را اجرا می‌کند (مثل اضافه یا به‌روز کردن داده‌ها)
- لایه‌ی Business Logic صحت داده‌های وارد شده توسط کاربر را بررسی می‌کند (داده‌ها را اعتبارسنجی می‌کند)
- اگر داده‌ها معتبر باشند آن‌ها را برای به‌روز رسانی در بانک اطلاعاتی به‌دست لایه‌ی دسترسی به داده می‌سپارد.
● مزیت‌های برنامه‌های چند لایه
- برنامه‌ها به چند بخش منطقی جدا از هم تقسیم می‌شوند و اتصال میان UI (رابط کاربری)، پردازش‌ها و بانک اطلاعاتی کم می‌شود.
- تغییر در بانک اطلاعاتی یا روال‌های دسترسی به داده‌ها، تاثیری در لایه‌ی نمایش یا برنامه‌ی کلاینت نخواهد گذاشت.
- برنامه‌ی کلاینت با عبارات SQL آمیخته نخواهد شد.
- نام جداول و ستون‌ها به‌طور مؤثری از برنامه‌ی Client حذف می‌شوند.
- برنامه‌ی Client نمی‌فهمد که داده‌ها از کجا آمده‌اند (چیزی که به آن Location Transparency گفته می‌شود)
- تغییر یا گسترش برنامه بسیار ساده‌تر خواهد شد، بدون نیاز به تغییر یا کامپایل مجدد برنامه‌ی Client.
نکته‌ی منفی در معماری چند لایه این است که شما باید تعداد زیادی بخش‌ها و کلاس‌های ازهم جدا در نرم‌افزار بسازید. اما به هر حال مزایای این روش بیش‌تر و برتر از معایب آن است.
● انتخاب‌های لایه‌ی Presentation
دو انتخاب اصلی برای ساخت یک لایه‌ی نمایش در دات نت وجود دارد. آن‌ها فرم‌های ویندوزی یا فرم‌های وبی ASP.NET هستند.
با استفاده از ویندوز فرم‌ها شما می‌توانید برنامه‌های دسکتاپ فرم محور (Form Base) معمول را بسازید. برنامه‌های ویندوز فرمی می‌توانند المان‌های رابط کاربری بسیار غنی به‌کاربر پیشنهاد کنند. آن‌ها کم و بیش شبیه به فرم‌های ویژوال بیسیک هستند.
جذاب‌ترین گزینه برای توسعه‌ی لایه‌ی نمایش استفاده از وب فرم‌های ASP.NET است. کنترل‌هایی مثل: دیتاگرید، دیتالیست و تقویم (Calendar) یک رابط کاربری قدرتمند را با مقدار کمی کد فراهم می‌کنند.
انتخاب‌هایی که در بالا برای ساخت یک لایه‌ی نمایش بررسی کردیم می‌توانند توسط زبان‌های مختلفی مثل C#Visual Studio.Net پیاده‌سازی شوند.
● انتخاب‌های لایه‌ی Business Logic
لایه‌ی Business Logic از چندین بخش که کارهایی نظیر اعتبار سنجی کار، گردش کار یا کارهای مشابه را انجام می‌دهند تشکیل شده است.
Componentهای .Net این لایه را شکل می‌دهند. شما می‌توانید با Interop از Componentهای COM استفاده کنید ولی این کار کارایی را پایین خواهد آورد.
وب‌سرویس‌های ASP.NET هم می‌توانند به‌عنوان یک Business Logic عمل کنند. اما به هر حال آن‌ها را نمی‌توان در همه‌ی شرایط به‌عنوان جایگزین Componentها به‌کار برد. وب‌سرویس‌ها تنها زمانی قابل استفاده خواهند بود که اعتبارسنجی در جایی بیرون از شبکه‌ی شما اتفاق افتاده باشد.
Componentهایی که توسعه می‌دهید به ماندن روی ماشین‌های مشابه نیازی ندارند. با استفاده از دات NET Remoting می‌توانید آن‌ها را روی چندین ماشین توزیع کنید.
● انتخاب‌های لایه‌ی Data Access
این لایه با دستکاری داده‌ها مثل اضافه، حذف و به‌روز رسانی آن‌ها سر و کار دارد. داده‌هایی که به آن‌ها اشاره کردیم می‌توانند در RDBMS یا XML قرار داشته باشند. شما باید لایه‌ی دسترسی به داده را چنان طراحی کنید که دیگر لایه‌ها نیازی به دانستن وضعیت انبار داده‌ها نداشته باشند.
ADO.NET فناوری دسترسی به داده‌ی تحت دات .Net است. اگر چه ADO.NET از طریق کلاس‌های DataReader اجازه‌ی دسترسی به داده‌های در هنگام اتصال را می‌دهد ولی بیش‌ترین تمرکز روی دسترسی به داده‌ها در زمان متصل نبودن است. DataSet نقش کلیدی را در این مورد بازی می‌کند. در بعضی موارد می‌توانید ADO را هم برای دسترسی به داده‌ها استفاده کنید ولی استفاده از آن باید دلیل معتبری داشته باشد. از ADO استفاده نکنید فقط به خاطر این‌که RecordSetها را دوست دارید!
این‌جا هم Componentهای .Net لایه را تشکیل می‌دهند. همان‌طور که قبلا گفته شد می‌توانید از Componentهای کلاسیک COM هم استفاده کنید.
هم‌چنین وب‌سرویس‌ها هم می‌توانند لایه‌ی دسترسی به داده را شکل دهند. این مخصوصا زمانی درست است که DataBase شما فراهم‌کننده‌ی (Provider) داده ندارد. در این‌گونه موارد شما می‌توانید مقداری کد برای اتصال به داده‌ها و پر کردن DataBaseها و بازگرداندن نتایج درون DataSet به درخواست‌کننده‌ی داده بنویسید.
علاوه بر ADO.NET شما می‌توانید از امکانات سیستم مدیریت DataBase خود مثل توابع و یا روال‌های ذخیره شده (Stored Procedures) استفاده کنید.
● ارسال داده از یک لایه به لایه‌ی دیگر
در تمام موارد به ارسال اطلاعات از یک لایه به لایه‌ی دیگر نیاز است؛ به‌طور معمول برنامه‌نویسان از رشته‌ها، آرایه‌ها، RecordSetهای غیرمتصل برای رسیدن به این هدف استفاده می‌کنند. در .Net ، DataSetها یک راه فوق‌العاده برای انتقال اطلاعات میان لایه‌ها فراهم می‌کنند. شما حتی می‌توانید با برنامه‌نویسی یک DataSet بسازید و آن را با داده‌های خودتان پر کنید. اگر اشیا را خیلی دوست دارید می‌توانید از Typed DataSets استفاده کنید که در واقع کلاسی مشتق شده از کلاس DataSet است که جداول و سطرها را به شکل یک شی معرفی می‌کند.

   

معماري هر سيستم توصيفي از ساختار و رفتار سيستم که بيشترين تاثير را بر عمکرد سيستم دارند به دست مي دهد. به عبارت ديگر توصيف بخشهايي از سيستم که بر عرض (مجموعه موارد کاربرد) نرم¬افزار و يا طول (طول عمر، مدت استفاده و نگارشهاي مختلف) نرم¬افزار تاثير بسزايي دارند بر عهده معماري نرم افزار است. معماري هر سيستم شمايي کلان از اجزاء سيستم و ارتباط آن اجزاء را به دست مي دهد. در فرآيند طراحي سيستمهاي بزرگ در صورتي که معماري مناسبي جهت کاربرد موردنظر طراحي نشده باشد احتمال شکست سيستم به شدت افزايش مي‌يابد و اين نکته اهميت معماري را در سيستم هاي امروزه به ما گوشزد مي کند. شرکت صفا رايانه با چندين سال تجربه کاري خود اکنون به اجزاء خاصي در معماري خود رسيده است که حداکثر انعطاف پذيري و قدرت را در نرم افزارهاي طراحي شده ايجاد مي کند. در مقايسه با معماري قديمي Client/Server معماري چندلايه صفارايانه از مزاياي مهم زير سود مي برد:


  • کاهش وابستگي اجزاي کد به همديگر و در نتيجه امکان اعمال تغييرات در لايه هاي مختلف با حداقل تاثير در بخشهاي مرتبط . بعنوان مثال امکان تغيير در ظاهر برنامه ها بدون هيچگونه تغيير در کدهاي برنامه نويسي وجود دارد.
  • امکان Scalability يا گسترش پذير بودن نرم افزار که اجازه توزيع واحدهاي پردازشگر روي سرورهاي متعدد را به طراحان مي دهد.
  • تحمل خطاي بالا (Fault tolerance) در برپايي مجموعه سخت افزاري و نرم افزاري
  • Manageable Component based Programming کاهش زحمات برنامه نويسان و افزايش خوانايي سورس برنامه ها و در نتيجه افزايش کيفيت کد و کاهش هزينه و اتلاف وقت براي نگهداري آن
  • راحتي بروزرساني با توجه به جدابودن محصولات و فايلهاي هر لايه از لايه ديگر
  • افزايش قابليت مانور در بکارگيري نيروها و استفاده از تخصص هاي هر نيرو در لايه مربوطه


در طراحي معماري صفارايانه نکات زير مورد توجه و تاکيد قرار داشته اند:

  • با توجه به استفاده از سکوي دات نت ، معماري طراحي شده از اصول ارائه شده از سوي شرکت Microsoft براي طراحي صحيح نرم¬افزارهاي مبتني بر .Net پيروي کند.
  • معماري از الگوي معماري پنج لايه پيروي کند.
  • معماري طراحي شده قابل توزيع بر روي سخت¬افزارهاي متعدد به منظور پشتيباني از مقياس¬پذيري باشد.
  • نرم¬افزارهاي طراحي شده بر اساس اين معماري، قابل نگهداري و گسترش با کمترين هزينه ممکن باشند.
  • معماري طراحي شده بايد حداکثر امکان کار موازي براي طراحان تفصيلي و برنامه¬نويسان را در فاز ساخت داشته باشد. معماري بايد امکان اجراي موازي تمامي موارد کاربرد نگاهداشت و گزارش¬گيري را به صورت همزمان در اختيار تيم استفاده کننده قرار دهد.
  • نرم¬افزارهاي توليد شده بر اساس اين معماري توان توزيع و اجرا بر روي روشهاي مختلف توزيع از يک ايستگاه کاري تا شبکه¬اي با خادمهاي متفاوت و ايستگاه هاي کاري متعدد را داشته باشند.
  • هزينه ارتقاء نرم¬افزارهاي توليد شده بر اساس اين معماري، از رابط کاربر مبتني بر Windows به رابط کاربر مبتني بر Web پايين باشد
  • نرم-افزارهاي توليد شده بر اساس اين معماري حداکثر قابليت استفاده مجدد از اجزاء موجود در هر يک از لايه ها را داشته باشند. اين موضوع در رابطه با اجزاء رابط کاربر (UI) نيز بايد صادق باشد.
  • وابستگي (coupling) ميان اجزاء يک نرم¬افزار توليد شده بر اساس اين معماري بايد حداقل بوده و حداکثر فقط در دو نقطه رابط کاربر و سرويسهاي نرم¬افزار وابستگي به آن جزء وجود داشته باشد.


اين معماري بايد راه حلهاي مشخص و فراگيري براي برآورده¬کردن نيازمنديهاي زير در اختيار طراحان و برنامه نويسان استفاده کننده، قرار دهد:

  • نمايش و ثبت خطاهاي کاربر نرم¬افزار و يا عوامل خارجي درگير در اجراي نرم افزار نظير شبکه، سيستم عامل، پايگاه داده و ...
  • امکان پيگيري خطاهاي پيدا شده براي کاربر، حتي اگر دسترسي به کاربر و خطا در زمان رخ دادن امکان¬پذير نباشد.
  • امنيت و کنترل آن در دو لايه رابط کاربر و لايه سرويسها.
  • ثبت عملکرد کاربران به صورت قابل تنظيم در اختيار مدير سيستم.


شکل زیر شمايي از معماري عام نرم افزارهاي صفارايانه را نشان مي دهد. بديهي است هر نرم افزار بسته به مورد کاربرد ممکن است از نوع تغيير يافته و Customize شده اي از اين معماري استفاده کند:



 



 



 



 


 



 
 


 


 

 

   


مطالب مشابه :


معماری 3 لایه

c# , asp.net, sql, ajax در زبانهای برنامه نویسی در مقالات بعدی نحوه پیاده سازی معماری سه لایه در




تعریف چند لایه نویسی (برنامه نویسی 3 لایه)

(برنامه نویسی 3 لایه) حال بیشتر برنامه ها سه لایه وظیفه این لایه است. در بیشتر




نمایش اطلاعات در کنترل DataGridView از طریق کد نویسی

برنامه نویسی سه لایه معرفی سرویس های ایمیل تاریخ شمسی در vb.net دانلود کتاب VB.NET نمایش اطلاعات




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

Performance برنامه در معماری سه لایه پایینه چون ارتباطات لایه برنامه نویسی به زبان C#.




پروژه کامل شرکت توضیع دستگاه آب و هوا

برنامه نویسی سه لایه معرفی سرویس های ایمیل تاریخ شمسی در vb.net دانلود کتاب VB.NET نمایش اطلاعات




برنامه نویسی

پایین بودن سرعت برنامه c# در اجرای برنامه نویسی برای استفاده از GPU در معماری سه لایه;




پروژه آموزشگاه رانندگی به زبان C# و دیتابیس sql server همراه با داکیومنتها

رفع اشکال برنامه نویسی , در و php به صورت یک لایه یا سه لایه برنامه نویسی این پروژه c#.




معماری چند لایه

در معماری چند لایه تمام بیش‌تر برنامه‌ها سه لایه‌ی با برنامهنویسی یک DataSet




برچسب :