معماری n-layer
بسم الله الرحمن الرحیم
معماری n-layer
بخش سوم
در بخش قبل معماری های نرم افزار را بررسی کردیم و همچنین معماری سه لایه را بیان کردیم. در این بخش قصد داریم معماری های n-Layer یا معماری های چند لایه ای را بررسی کنیم.
سبک طراحی و شیوه ساخت را معماری می نامند. با اتکا به همین تعریف طبیعتا به چیدمان بخش های مختلف نرم افزار معماری نرم افزار می گویند. حال پس از گذشت سال ها در حوزه ی طراحی نرم افزار معماری هایی به عنوان معماریی های شناخته شده مورد استفاده قرار می گیرند مانند معماری 3 لایه که در بخش پیش بررسی کردیم. پس از معرفی شدن معماری نرم افزار و گرایش بسیاری از شرکت های کوچک و بزرگ به پیروی از این معماری، آرام آرام این دانش کامل شد و معماری های مختلفی ظهور پیدا کردند که امروزه نرم افزار های مختلف از این معماری ها بهره می برند.
مدتی پیش یکی از دوستان سوالی در خصوص معرفی بهترین معماری نرم افزار مطرح کرده بودند. این سوالی است که بسیاری از افراد به دنبال پاسخ آن هستند. شاید بتوان با ذکر یک مثال پاسخ این مسئله را بهتر بیان کرد، اگر از شما به عنوان طراح و معمار یک شرکت ساختمانی بخواهند برای چندین پروژه ی متفاوت مسکونی، تجاری، دانشگاهی، بیمارستانی و... نقشه های ساختمان را طراحی کنید. بهترین معماری را چگونه انتخاب خواهید کرد.
طبیعتا معماری یک بیمارستان با معماری یک پاساژ تجاری یا معماری ساختمان مسکونی قابل مقایسه و ارزیابی نیست زیرا هر یک نیازمندی های خود را دارند و برای هر یک باید روش خاصی را در نظر گرفت.
تصور می کنم پاسخ سوال را بیان کرده باشم، طبیعتا نمی توان یک معماری را خوب و یا یک معماری را بد دانست (البته اگر موارد فنی آنها رعایت شده باشند)، معماری های متفاوتی وجود دارند که شما می بایست بر اساس تیم فنی خود، پروژه و سایر عوامل، معماری مناسب را برای سازمان و کار خود انتخاب کنید. اما با وجود همه ی این مسائل معماری هایی وجود دارند که نسبت به سایر معماری ها شهرت دارند، مانند معماری 3 لایه و یا معماری 5 لایه.
پیشنهاد می کنم برای انتخاب یک معماری ابتدا مفاهیم آن را فرا بگیرید و سپس بر اساس نیاز خود معماری مناسبی را انتخاب و یا طراحی کنید.
در طراحی معماری یک نرم افزار می بایست مباحثی را مد نظر قرار داد که برخی از آنها را در این بخش بررسی خواهیم کرد.
معماری سه لایه
1- لایه هایی در معماری نرم افزار وجود دارند که این لایه ها معمولا به صورت مشخص از یکدیگر تفکیک شده اند:
لایه Presentation
این لایه بالاترین لایه نرم افزار می باشد و در واقع لایه UI می باشد که کاربر به صورت مستقیم با آن در ارتباط است.
لایه Business
این لایه بعد از لایه Presentation قرار دارد و وظیفه جمع آوری اطلاعات از کاربر و ارسال آن به لایه های دیگر و همچنین دریافت درخواست کاربر از طریق لایه UI برای ارسال به سایر لایه ها را بر عهده دارد. این لایه معمولا بیشترین حجم کد نویسی کنترل اطلاعات، دستورات شرطی و.. را در بر می گیرد.
لایه Data Access
وظیفه ی انجام عملیات درج، حذف و به روز رسانی داده ها بر روی پایگاه داده را بر عهده دارد.. این لایه در پایین ترین سطح قرار دارد. لایه Data Access مستقیما با بانک اطلاعاتی شما در ارتباط خواهد بود.
نکته ای که باید در این بخش به آن بپردازم نام لایه ها می باشد، در بسیاری از معماری ها این نام ها مشابه هستند اما در برخی مقالات و معماری ها این نام ها متفاوت خواهند بود، در نتیجه لطفا به جای پرداختن به نام ها بیشتر به کاربرد آنها بپردازید به طور مثال در برخی مقالات به جای لایه Business از نام لایه Logic استفاده می کنند اما نکته ای که مشخص است این لایه بعد از لایه UI قرار می گیرد و وظیفه آن جمع آوری اطلاعات از کاربر و یا ارسال آنها به لایه UI می باشد.
معماری چند لایه ای n-Layer
لایه Presentation
این لایه را بررسی کردیم
لایه Business
این لایه تنها مقادیر و پارمترهای مورد نیاز را از لایه UI به لایه Service انتقال می دهد و همچنین مقادیر مورد نیاز لایه UI را از لایه Service دریافت می کند.
لایه Service
این لایه شامل متدها و عملیاتی هایی هستند که در معماری سه لایه در Business قرار می گرفتند، در اینجا به دلیل تفکیک بیشتر لایه ها بخش های اصلی کد نویسی در این لایه قرار خواهند گرفت.
لایه IService
همانطور که می دانید حرف I وقتی پیش از نام ها در برنامه نویسی قرار می گیرد به معنای interface می باشد. در نتیجه در این لایه ما Service ها را فقط معرفی می کنیم تا در لایه Service بعدا آنها را پیاده سازی کنیم.
لایه Entity Model
این لایه در واقع MAP تمامی Table های بانک اطلاعاتی شما می باشد که در برنامه ایجاد شده است. مثلا اگر شما در دیتابیس خود Table ایی با نام User داشته باشید در این لایه نیز کلاسی با نام User خواهید داشت که شامل تمامی Column های Table مربوط به User می باشد.
لایه Data Access
این لایه را بررسی کردیم
لایه Infrastructure
در این لایه مباحث پایه معماری شما انجام می شود مثلا، شما می خواهید در تمامی متدها هنگامی که خطایی اتفاق افتاد، مدیریت آن در یک مکان مشخص انجام شود. وظایف و قابلیت هایی که می بایست به صورت ساختاری در پروژه رعایت شوند معمولا در این لایه قرار می گیرند.
لایه Library
در این لایه همانطور که از نام آن مشخص است، کلاس هایی قرار می گیرند که معمولا در تمامی پروژه ها مورد استفاده قرار خواهند گرفت، مانند کلاس ارسال ایمیل
لایه Test
در هر نرم افزاری می بایست، Test Case هایی برای بررسی صحبت و تایید Function های برنامه نوشته شود. در این لایه Test Case های بخش های مختلف برنامه قرار خواهند گرفت.
در بخش پیاده سازی با این لایه ها بیشتر آشنا خواهیم شد.
هر یک از این لایه ها می تواند خود به بخش های مختلفی تبدیل شود، همانطور که کفتیم لایه بندی یک نرم افزار بر اساس تفکیک پذیری کارایی، افزایش قدرت توسعه و نگه داری و استفاده مجدد بخش های کد نویسی شده در برنامه های مختلف می باشد. از همین رو شما می توانید با رعایت اصول اصلی این مفاهیم، لایه بندی و معماری نرم افزار خود را کاملا متفاوت طراحی کنید.
در همین دوره انشالله در زمان طراحی عملی یک معماری هر یک از این مباحث را دقیق تر بررسی خواهیم کرد.
نظرات (۳)
سلام.
ممنون که اطلاعاتی رو که دارین با بقیه به اشتراک میذارین.
با عرض سلام
بله، حتما
سعی خواهیم کرد انشالله مطالب را هر چه سریعتر بر روی سایت قرار دهیم.