PDA

View Full Version : تفاوت tier با layer



delphi developer
شنبه 09 اردیبهشت 1385, 16:53 عصر
یکی از دوستان با سواد لطف کنند در مورد وارد زیر یه توضیحی بدهند:
1- تفاوت tier با layer
2- تفاوت n tier با tier 3
3- تفاوت n layer با layer 3

شاید جوابهای 2و 3 یه خورده شبیه هم دیگه بشن.
لطفاً راهنمایی کنید.

omid_Ahmadi
شنبه 09 اردیبهشت 1385, 16:57 عصر
1) اغلب کتابهایی که من در این زمینه خوندم، از این دو واژه به صورت معادل استفاده می کنه. فکر نکنم با هم فرقی داشته باشن و هر دو یه مفهوم رو می رسونن (اگر هم تفاوتی داره، من تا حالا نشنیدم).

2) به برنامه هایی که دارای بیش از سه لایه باشن میگن برنامه های n tier یا n layer. حالا این n معمولا بیشتر یا 5 تا لایه میشه یا 7 تا.

3) به دو مراجعه کنید!

delphi developer
شنبه 09 اردیبهشت 1385, 17:42 عصر
در مورد 3 tier و 3 layer مطمئاً یه تفاوت اساسی وجود داره، شاید اینکه layer ها در یک exe ارئه مشوند ولی tier ها حتماً باید به صورت remote باشند و با listener و این جور مسائل با هم ارتباط برقرار کنند.

در مورد 3 در layer, tier حتماً می دونید که منظور PS, BS, DS است ولی n ??

این اطلاعاتی است که من از research خودم حالیم شده می خواستم یکی از دوستان موضوع را کاملتر باز کنه.
با تشکر ....

manager
شنبه 09 اردیبهشت 1385, 19:46 عصر
به نظر من tier دیدگاه لاجیکال رو توصیف می کنه در حالی که ما در پیاده سازی یک tier ممکنه که چند تا layer داشته باشیم مثلا در business tier ممکنه ما احتیاج به 3 لایه برای پیاده سازی باشیم..با شما موافقم آقا ناصر..

M.GhanaatPisheh
شنبه 09 اردیبهشت 1385, 19:57 عصر
در مورد 3 tier و 3 layer مطمئاً یه تفاوت اساسی وجود داره، شاید اینکه layer ها در یک exe ارئه مشوند ولی tier ها حتماً باید به صورت remote باشند و با listener و این جور مسائل با هم ارتباط برقرار کنند.

در مورد 3 در layer, tier حتماً می دونید که منظور PS, BS, DS است ولی n ??

این اطلاعاتی است که من از research خودم حالیم شده می خواستم یکی از دوستان موضوع را کاملتر باز کنه.
با تشکر ....


Martin Fowler توی کتاب Patterns of Enterprise Application Architecture اولین Pattern رو به اسم Layering معرفی کرده و اسمی توی کتابش از Tierنبرده.
ولی تشریح این Pattern دقیقا همون مفهوم Tier هست.
پس این دو دقیقا یکی هستند.


در مورد سوالهای دوم و سوم مراجعه کنید به توضیح محمد هاشمیان

omid_Ahmadi
شنبه 09 اردیبهشت 1385, 20:41 عصر
توی کتابهایی که من خوندم هم از این دو واژه به صورت معادل استفاده شده بودن. کتاب The Book Of Visual Studio .NET توی فصل دو و سه که مربوط به این مبحث میشد، هم از اصطلاح Tier استفاده کرده و هم اصطلاح Layer.



Martin Fowler توی کتاب Patterns of Enterprise Application Architecture اولین Pattern رو به اسم Layering معرفی کرده و اسمی توی کتابش از Tierنبرده.


مجتبی این کتابی رو که اسم بردی داری؟ من تا حالا اسمشو نشنیده بودم، ولی از نویسنده ش یه کتاب خوندم خیلی عالی بود. به این کتاب هم می خوره که خیلی جذاب باشه!

Mohsen_4194
یک شنبه 10 اردیبهشت 1385, 12:19 عصر
Tier یک مفهوم فیزیکی است اما Layer لزوماً مفهومی فیزیکی را القا نمی کند.
به این معنا که ما می توانیم یک معماری با چند layer داشته باشیم بدون اینکه این لایه ها لزوماً در مکان های فیزیکی مختلفی(Tier) باشند.
Layering به معنای جداسازی منطقی بخش های مختلف برنامه از یکدیگر است مثلاً جداسازی Business از Presentation و Data Access
این هم چیزی که Martin Fowler گفته:
When people discuss layering, there's often some confusion over the terms layer and tier. Often the two are used as synonyms, but most people see tier as implying a physical separation. Client?server systems are often described as two-tier systems, and the separation is physical: The client is a desktop and the server is a server. I use layer to stress that you don't have to run the layers on different machines. A distinct layer of domain logic often runs on either a desktop or the database server. In this situation you have two nodes but three distinct layers. With a local database I can run all three layers on a single laptop, but there will still be three distinct layers.

M.GhanaatPisheh
یک شنبه 10 اردیبهشت 1385, 16:02 عصر
این کتابی رو که اسم بردی داری؟
توی eMule پیداش می کنی.
به دو زبان #C و JAVA ; کدها رو نوشته.
از Addison-Wesley هست.

delphi developer
دوشنبه 11 اردیبهشت 1385, 08:25 صبح
از جوابهایتون ممنونم اما هنوز کسی در مورد تفاوت three با n در 3tier با n tier چیزی نگفته.
آیا اطلاعاتی در این زمینه هم دارید؟

omid_Ahmadi
دوشنبه 11 اردیبهشت 1385, 11:52 صبح
من که همون اول گفتم، به برنامه هایی که بیشتر از 3 tier باشن، برنامه های n tier گفته میشه. مثل برنامه های 5 tier که شامل این tier ها هستن:
User Services
Facades Tier
Business Tier
Data Access Tier
Data Services

delphi developer
دوشنبه 11 اردیبهشت 1385, 12:08 عصر
آقای Ahmadi امکان داره در مورد User Services و Facades tier یه توضیحی بدید و مصداقش را در یه پروژه ی واقعی بیان کنید.

Mohsen_4194
دوشنبه 11 اردیبهشت 1385, 15:19 عصر
دوست عزیز تفاوت n با 3 در Tier مثل تفاوت n با 3 در فرمول های زیر است
3*2, 2n
n یک عدد فرضی بزرگتر از یک است
در مورد Service Layer و Facade می توانید به کتاب های مربوط به Design Pattern مثل Gang Of Four مراجعه کنید.

delphi developer
دوشنبه 11 اردیبهشت 1385, 16:21 عصر
این نتیجه Search من در msdn است:
The facade layer is not always required to send or receive data through the Business Rules layer. If the data it needs is read only, it can communicate directly with the Data Access layer. Updates, Inserts, and Deletes should be processed by the Business Rules layer on the assumption that rules have been set that apply to the data in these circumstances.

(درست ناقص، ولی بهتر از تدریس ریاضیات پیشرفتست)

omid_Ahmadi
دوشنبه 11 اردیبهشت 1385, 16:57 عصر
برنامه نویسی چند لایه:
تقسیم بندی یک برنامه به چند لایه، به صورت استراتژیک، می تواند باعث افزایش مقیاس پذیری، کارایی، انعطاف پذیری و قدرت مدیریت شود، این مورد که به هر لایه یک وظیفه خاص داده شود باعث می شود که طراحان آن لایه، بر روی توسعه و پیکر بندی وظیفه مشخص شده عمل کنند.
هر برنامه ای که شامل بیش از سه لایه شود، جزء برنامه های چند لایه قرار می گیرد. اما در این بخش منظور از برنامه های چند لایه برنامه های پنج لایه است. این برنامه ها مشابه برنامه های سه لایه هستند ولی در آنها لایه سرویس های تجاری به سه لایه یا سه کلاس دیگر تقسیم می شود که عبارت اند از: کلاس خارجی، کلاس اصلی تجاری و کلاس دسترسی اطلاعات.

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

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

کلاسهای دسترسی اطلاعات:
کامپوننت های دسترسی به اطلاعات یا لایه دسترسی به اطلاعات امکان استفاده از اطلاعات را برای لایه اصلی تجاری فراهم می کند. در مدل پنج لایه فقط این لایه به ساختار بانک اطلاعاتی دسترسی دارد بنابراین تغییرات در بانک اطلاعاتی فقط نیاز به ایجاد تغییرات در این لایه دارد. قسمت های دیگر این برنامه نیازی به اطلاع از زیر ساخت بانک اطلاعاتی ندارند.
بدون توجه به نوع برنامه استفاده شده در لایه بانک اطلاعاتی، ADO.NET روش پیشنهادی مایکروسافت برای این لایه محسوب می شود. ADO.NET توانایی برقراری ارتباط با انواع منابع اطلاعاتی را از قبیل SQL Server ، Oracle ،Sybase،Access ، Word ، Excel و... را دارد. در طراحی لایه ای معمولا منبع اطلاعاتی، یک سیستم مدیریت بانک اطلاعاتی (DBMS) است که دسترسی به اطلاعات را فراهم می کند. هنگام استفاده از ADO.NET طراحان می توانند از کامپوننت های این کلاس برای ایجاد پرس و جو های مختلف استفاده کنند. علاوه بر این استفاده از روش های داخلی سیستم های بانک اطلاعاتی نیز امکان پذیر است. مثلا در SQL Server می توان از پروسیجر های آماده استفاده کرد که حدود 40 در صد سریعتر از روش های دیگر است.

delphi developer
سه شنبه 12 اردیبهشت 1385, 13:55 عصر
از جوابتون ممنونم...

homeshahab
پنج شنبه 24 شهریور 1390, 11:01 صبح
Tiers and Layers
There is a misunderstanding that tier and layers are two different names for the same
entity. The concept of tier and layers came into being with the need for identifying
and segregating different parts of an application into separate connected components.
This separation can be at two levels:
Physical Separation
Logical Separation

Physical Separation
In a tier-based architecture, we separate code physically into different assemblies (or a set of assemblies). For example, we may have a single assembly for the web project, and another one for the class project having business code. If we want to deploy our application across multiple servers, spanning different geographical locations, then we need to use an n-tier architecture (which we will study in the coming chapters of this book).

Logical Separation
Separating into layers mean that we logically separate the code, but the entire application will be a part of a single physical assembly (or a set of assemblies depending on the compilation model). We may put the code files into separate folders, each having its own namespace for easier code management and readability, but we won't have a separate assembly for each different namespace or part of the code. Also, unlike physical separation, it will not be possible to deploy parts of the application in a distributed maner.
So a "tier" is a unit of deployment, while a "layer" is a logical separation of responsibility within the code. A layer becomes a tier if it can be physically
separated from the layers consuming it. Alternatively, a tier is a layer which could be physically separated from the layers consuming it.