PDA

View Full Version : گفتگو: تفاوت معماری N-Tire با N-Layer



Programmer 1
شنبه 10 فروردین 1392, 21:47 عصر
سلام،

در StackOverflow (http://stackoverflow.com/questions/120438/whats-the-difference-between-layers-and-tiers) در مورد تفاوت بین Layer و Tire در بحث معماری نرم افزار بحث جالبی انجام شده، ولی پست یکی از آنها جالب و در عین حال بحث بر انگیزه:



Layers refer to logical seperation of code. Logical layers help you organise your code better. For example an application can have the following layers.

1)Presentation Layer or UI Layer 2)Business Layer or Business Logic Layer 3)Data Access Layer or Data Layer

The aboove three layers reside in their own projects, may be 3 projects or even more. When we compile the projects we get the respective layer DLL. So we have 3 DLL's now.

Depending upon how we deploy our application, we may have 1 to 3 tiers. As we now have 3 DLL's, if we deploy all the DLL's on the same machine, then we have only 1 physical tier but 3 logical layers.

If we choose to deploy each DLL on a seperate machine, then we have 3 tiers and 3 layers.

So, Layers are a logical separation and Tiers are a physical separation. We can also say that, tiers are the physical deployment of layers.

دوستان به نظرتون دیدگاه این فرد در مورد این قضیه درسته؟

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


The application architectures (monolithic, N-tier, etc.) refer to the physical separation of components. The layered architecture refers to the logicalseparation of components.

در مجموع ، دقیقا فرق بین معماری N-Tire با N-Layer چیه؟

cups_of_java
یک شنبه 11 فروردین 1392, 02:49 صبح
جفت این نوشته ها درست هستن و یک حرف رو میزنن.
لایه (layer) یک تقسیم بندی منطقی در سطح کد برنامه هستش که به منظور جداسازی بخش های کدی که مربوط به هم هستند (مثلن کد های مربوط به دیتابیس، کدهای مربوط به فرم های UI و ...) انجام میشه. لایه بندی کد در طراحی (Design) صورت میگرده و به شما Loose Coupling و Separation of Concerns میده که اینا همه در نگهداری و قابلیت استفاده مجدد کد تاثیر مثبت دارن.
ردیف (Tier) تقسیم بندی (فیزیکی) کدهای نرم افزار روی ماشین ها در زمان اجراست. مثلن شما یک ماشین سرور دیتانیس جدا دارید، یک سرور دیگه دارید که کدهای منطق برنامه (php, asp,...) روش اجرا میشن و کلاینت ها هم کدهای جاوااسکریپت و HTML شما رو مثلن اجرا می کنن. در همچین مدل کلاسیکی شما 3 ردیف (لایه) اجرایی فیزیکی دارید!

اگه توی دیکشنری انگلیسی هم نگاه کنید، Layer یک معنای دسته بندی یا سطح بندی داره! (یعنی مفهوم منطقی بودن اون رو میرسونه) در حالی که در تعریف Tier میگه ردیف هایی از صندلی ها یا مکان ها... که فیزیکی بودن این لغت رو میرسونه. اما توی فارسی به طور تخصصی من نمی دونم هم معنای درستی برای ایندو به طور جدا داشته باشیم. چون هر دوشو خیلی هامون لایه معنی می کنیم این سوال برای شما به وجود اومده.