/N-Tier Architecture

N-Tier Architecture

كلما زادت تعقيدات ومتطلبات وظائف المشروع يصبح مطلب إلزامي الاعتماد على التطبيقات المتعددة الطبقاتN-Tierفي هذا المقال أحاول تقديم هذا المفهوم للمبتدئين

.

 

من الصورة المغرية السابقة واضح انى هشرح طريقة عمل الهامبورجر …. فعلا هى دى الحقيقة مش بس لانه من الرموز الصارخة للعولمة ولكن لانه اقرب مثال عملى من واقع الحياة على التصميم متعدد الطبقات :d

اولا نبدأ المكونات خبز + تشكيلة متنوعة من الخضروات + شريحة من اللحم

ثانيا الطريقة :-

السفلية،تبدأ الطبقة العلوية Upper Tier بقطعة من الخبز التي تمثل الواجهة العلوية والمغلفة للساندويتش وهي نفس الطبقة

ومن ثم طبقة تحتوي على تشكيلة متنوعة من الخضروات Vegetable Tier،

وبعدها الطبقة الرئيسية (طبقة شريحة اللحم Meat Tier وهي أهم ما في الوجود (المحرك الأساسي للنظام( Core Engine)

طيب هنستفاد بايه من الطريقة دى ؟؟

ولا طريقة عمل الساندويتش بالشكل ده مفيدة جدا جدا وطبعا مش من منظور الطعم او الشكل

  1. Specialisation او مفهوم التخصص بمعنى ان كل طبقة من الطبقات المنفصلة عن بعضها اقدر احصل عليها من متخصص ليها وده طبعا هيزود الجودة والكفاءة الانتاجية

مثال .. طبقة الخبز مثلا هحصل عليها من الخباز ببساطة لانه شخص ذو خبرة عالية ودراية بالدقيق ومكونات الخبز وكذلك الخضروات ممكن نعتمد على أحد المراكز التي تعرض أنقى وأفضل أنواع الخضراوات الطازجة، وكذلك الحال مع طبقة اللحم، يمكننا أن نتعامل مع مطبخ يأتي يوميا بلحوم طازجة ذبحت للتو، وبذلك تزيد الجودة Quality للمنتج بشكل خرافي بسبب تخصص كل شخص في بناء الطبقة المناسبة، ويبقى علينا تجميع الطبقات ومن ثم بيعها للمستخدم النهائي.

  1. Debugging او مفهوم تعديل المنتج مثلا هنحاول نعمل نسخة أخرى خفيفة من المنتج لاشخاص بيعملوا دايت على سبيل المثال (على افتراض ان حد بيعمل دايت وياكل همبورجر: d) كل اللى هنعمله هنغير طبقة الخبز العادى بطبقة خبز أسمر من غير ما اضطر لتعديل اى طبقة تانية.
  2. Internationalization او Localizations او مراعاة القواعد الاقليمية والدولية فالمسألة لن تتعدى طبقة اللحم Meat Tier بمعنى ان المسلمين لا يأكلون لحوم الخنزير أو زيوت من مشتقاته، وكذلك اليهود ، فلابد أن تكون طريقة ذبح اللحم حلال Halal، وعند الهندوز فلا يمكن أن يكون لحم بقري (فهو محرم أكلها بعقيدتهم) ، كل ما نحتاجه تعديل في طبقة اللحم فقط وتبقى باقى الطبقات كما هى دون تغيير.
  3. واخر حاجة عند ظهور شوائب Bugs او أخطاء في هذا المنتج، فيمكن إصلاح المشكلة في الطبقة التي ينتمي لها ((فقط)) دون ان تتأثر ودون أن نحتاج الى تعديل الطبقات الاخرى.

ماذا لو ؟؟

تعالوا نتخيل ان الهامبورجر بالشكل ده نفس المكونات بالظبط بس بدون طبقات

.

هنا أي تعديل او تطوير او صيانة ستستهلك جهد ووقت اضافي (إن لم تكن مستحيلة)، بل سنحتاج الى اعادة البناء من جديد عند التعديلات الجوهرية، وكل المزايا التي عرضناها بالفقرات السابقة واختصار الوقت وتوفير الاموال كلها لا تصلح بالشكل ده وبالتالى اى تعديل ولو بسيط يحتاج تغيير كامل للمنتج.

بعيدا عن الهامبرجر

يقال أنه توجد علاقة عكسية بين عمل العقل وعمل المعدة، فعندما تعمل المعدة يتعطل العقل، وبما أني بحاجة ماسة لاستهلاك كل طاقة عقلك الإنتاجية، فسأتوقف هنا عن عروض الهامبرجر

Multitier architecture

(Often referred to as n-tier architecture) is a client–server architecture in which the presentation, the application processing, and the data management are logically separate processes.

Presentation tier

This is the topmost level of the application. The presentation tier displays information related to such services as browsing merchandise, purchasing, and shopping cart contents. It communicates with other tiers by outputting results to the browser/client tier and all other tiers in the network.

Application tier

(Business logic, logic tier, data access tier, or middle tier)The logic tier is pulled out from the presentation tier and, as its own layer; it controls an application’s functionality by performing detailed processing.

Data tier

This tier consists of database servers. Here information is stored and retrieved. This tier keeps data neutral and independent from application servers or business logic. Giving data its own tier also improves scalability and performance.

The benefits of the 3-tier model:

 

  1. Scalability: The key 3-tier benefit is improved scalability since the application servers can be deployed on many machines. Also, the database no longer requires a connection from every client — it only requires connections from a smaller number of application servers. In addition, TP monitors or ORBs can be used to balance loads and dynamically manage the number of application server(s) available.
  2. Better Re-use: The same logic can be initiated from many clients or applications. If an object standard like COM/DCOM or CORBA is employed (as discussed in tool dependence), then the specific language implementation of the middle tier can be made transparent.
  3. Improved Data Integrity: since all updates go through the middle tier, the middle tier can ensure that only valid data is allowed to be updated in the database and the risk of a rogue client application corrupting data is removed.
  4. Improved Security: Security is improved since it can be implemented at multiple levels (not just the database). Security can be granted on a service-by-service basis. Since the client does not have direct access to the database, it is more difficult for a client to obtain unauthorized data. Business logic is generally more secure since it is placed on a more secure central server.
  5. Reduced Distribution: Changes to business logic only need to be updated on the application servers and do not have to be distributed to all the clients.
  6. Improved Availability: mission-critical applications can make use of redundant application servers and redundant database servers. With redundant servers, it is possible to architect an application so that it can recover from network or server failures.
  7. Hidden Database Structure: since the actual structure of the database is hidden from the caller, it is possible that many database changes can be made transparently. Therefore, a service in the middle tier that exchanges information/data with other applications could retain its original interface while the underlying database structure was enhanced during a new application release.

The drawbacks of the 3-tier model:

  1. Increased Complexity/Effort: In general, it is more difficult to build a 3-tier application compared to a 2-tier application. The points of communication are doubled (client to middle tier to server, instead of simply client to server) and many handy productivity enhancements provided by client tools (e.g. Visual Basic, PowerBuilder, Delphi) will be foregone or their benefit will be reduced with 3-tier architecture.
  1. Fewer Tools: There are many more tools available for a 2-tier model (e.g. most reporting tools). It is likely that additional programming effort will be required to manage tasks that an automated tool might handle in a 2-tier environment.

Model–View–Controller

Model–View–Controller (MVC) is a software architecture, currently considered an architectural pattern used in software engineering. The pattern isolates “domain logic” (the application logic for the user) from the user interface (input and presentation), permitting independent development, testing and maintenance of each (separation of concerns).

The model manages the behavior and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller). In event-driven systems, the model notifies observers (usually views) when the information changes so that they can react.

The view renders the model into a form suitable for interaction, typically a user interface element. Multiple views can exist for a single model for different purposes. A viewport typically has a one to one correspondence with a display surface and knows how to render to it.

The controller receives input and initiates a response by making calls on model objects. A controller accepts input from the user and instructs the model and viewport to perform actions based on that input.

Comparison with the 3-tier architecture

The three tiers may seem similar to the model-view-controller (MVC) concept. However, topologically they are different. A fundamental rule in three tier architecture is the client tier never communicates directly with the data tier; in a three-tier model all communication must pass through the middleware tier. Conceptually the three-tier architecture is linear. However, the MVC architecture is triangular: the view sends updates to the controller, the controller updates the model, and the view gets updated directly from the model.