CS 318 - Week 1 Lecture - 1-23-13

Intro to n-tiered architectures for interactive applications

*   *traditional* components of an interactive application:

    *   presentation - what the user sees and interacts with

    *   application - the business logic -- implementing
        business rules

    *   database software - Oracle, SQLServer, mySQL, etc.

*   you can structure these components in different ways,
    using different architectures;

    *   1-tier architecture -
        *   monolithic!

        *   all components combined, typically on a single
	    processor;

    *   2-tier architecture -
        *   classic client-server!

        *   in this classic client-server,
	    there's a client, and there's a server;

            the presentation components tend to be put,
	    pretty obviously, on the client-side;

	    the database components tend to be put,
	    pretty obviously, on the server-side

            is a classic 2-tier, client-server
	    architecture, it ISN'T obvious where
	    the APPLICATION components go;

        *   this does have some weaknesses; a few include:
            *   often the application components
	        were put on the client side,
                (fat client), harder/more expensive
		to maintain;

            *   can lead to increased network load;

            *   can lead to security issues;

*   seeking a better approach leads to
    3- and n-tier architectures;

    *   MOVE the application components to one
        or more servers DISTINCT from the database server?

        THAT's 3- or 3+- or n-tier architecture;

    *   (and, yes, even with this n-tier approach,
        sometimes application components will STILL
        creep onto the client or database server

        ...but discussing the pros and cons of this
	will be a course topic, also)

    *   BASICALLY then (with some creeping in practice),

        CLIENT tier - presentation components typically go here

        ...but actual business logic is moved to a SEPARATE 
        tier (mostly)

        APPLICATION tier (or tiers) 
	*   business rule implementation/business logic
	    (mostly)

        *   these tend to SEPARATE the presentation parts
	    FROM direct access to the database tier;

        *   there can be MULTIPLE servers here;

        DATABASE tier (or data tier or data-server tier)
        *   the data storage tier -- your DBMS is here

*   these are actually LOGICAL rather than necessarily
    physical boundaries;

*   MIDDLEWARE, in an n-tier architecture sense,
    software or products that glue the applications
    on these different tiers together;