?? three_layers.html
字號:
<TD>
</TD>
<TD>
<FONT SIZE = "2" FACE = "HELVETICA, ARIAL, SANS SERIF">
<A HREF="javascript:if(confirm('http://webcompare.internet.com/isapiperl/index.html \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://webcompare.internet.com/isapiperl/index.html'" tppabs="http://webcompare.internet.com/isapiperl/index.html"
TARGET = "Resource Window">ISAPI Perl Primer</A><BR>
</FONT>
</TD>
</TR>
<TR>
<TD VALIGN = "TOP">
<IMG SRC = "pointerbk.gif" tppabs="http://www.extropia.com/graphics/template/pointerbk.gif" BORDER = "0"
WIDTH = "8" HEIGHT = "8" ALT = "::">
</TD>
<TD>
</TD>
<TD>
<FONT SIZE = "2" FACE = "HELVETICA, ARIAL, SANS SERIF" COLOR = "#FFFFFF">
<A HREF="javascript:if(confirm('http://webcompare.internet.com/webbasics/index.html \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://webcompare.internet.com/webbasics/index.html'" tppabs="http://webcompare.internet.com/webbasics/index.html"
TARGET = "Resource Window">Serving up web server basics</A>
</FONT>
</TD>
</TR>
<TR>
<TD VALIGN = "TOP">
<IMG SRC = "pointerbk.gif" tppabs="http://www.extropia.com/graphics/template/pointerbk.gif" BORDER = "0"
WIDTH = "8" HEIGHT = "8" ALT = "::">
</TD>
<TD>
</TD>
<TD>
<FONT SIZE = "2" FACE = "HELVETICA, ARIAL, SANS SERIF" COLOR = "#FFFFFF">
<A HREF = "javascript:if(confirm('http://www.extropia.com/tutorials/dna/tutorials/itj_slovak.zip \n\nThis file was not retrieved by Teleport Pro, because it did not meet the project\'s file type specifications. \n\nDo you want to open it from the server?'))window.location='http://www.extropia.com/tutorials/dna/tutorials/itj_slovak.zip'" tppabs="http://www.extropia.com/tutorials/dna/tutorials/itj_slovak.zip">Introduction to
Java (Parts 1 and 2) in Slovak</A><BR>
</FONT>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<P> <P>
<!-- ##### END TUTORIALS NAVIGATION ssi -->
<!-- START PAGE_HEADER_WITH_SEARCH_TOP.SSI HERE-->
<!-- first close the left hand cell -->
</TD>
<!-- then open the right hand cell -->
<TD VALIGN = "TOP">
<!-- start table 1 -->
<TABLE BORDER = "0" WIDTH = "100%" CELLPADDING = "0" CELLSPACING = "0">
<TR>
<TD COLSPAN = "3"><IMG SRC = "clear.gif" tppabs="http://www.extropia.com/graphics/template/top/clear.gif"
BORDER = "0" HEIGHT = "20" WIDTH = "0" ALT = " "></TD>
</TR>
<TR>
<TD><IMG SRC = "clear.gif" tppabs="http://www.extropia.com/graphics/template/top/clear.gif" BORDER = "0"
HEIGHT = "0" WIDTH = "30" ALT = " "></TD>
<TD WIDTH = "100%"><FONT FACE = "VERDANA, HELVETICA, SAN-SERIF"
SIZE = "+2" COLOR = "#999999">
<!-- END PAGE_HEADER_WITH_SEARCH_TOP.SSI INSERT PAGE NAME HERE -->
Introduction to Microsoft DNA
<!-- START PAGE_HEADER_SEARCH_BOTTOM.SSI HERE -->
</FONT>
</TD>
<TD>
<!-- this is the start of the right hand search box -->
<FORM METHOD = "POST" ACTION = "http://www.extropia.com/cgi-bin/prod/Search/search_engine.cgi">
<TABLE BORDER = "0" CELLPADDING = "0" CELLSPACING = "0">
<TR>
<TD><IMG SRC = "newsearch1.gif" tppabs="http://www.extropia.com/graphics/template/newsearch1.gif"
HEIGHT = "31" WIDTH = "11"></TD>
<TD WIDTH = "100%" BACKGROUND = "newsearch2.gif" tppabs="http://www.extropia.com/graphics/template/newsearch2.gif"><FONT
FACE = "ARIAL, HELVETICA" SIZE = "1"><INPUT
SIZE = "15" TYPE = "TEXT" NAME = "keywords"></FONT></TD>
<TD><INPUT TYPE = "IMAGE" SRC = "newsearch4.gif" tppabs="http://www.extropia.com/graphics/template/newsearch4.gif"
WIDTH = "85" HEIGHT = "31" ALT = "search" NAME = "submit_keyword_search"
VALUE = "on" BORDER = "0"></TD>
</TR>
</TABLE>
</FORM>
</TD>
</TR>
</TABLE>
<!-- HERE STARTS THE RIGHT HAND MAIN CONTENT THE FIRST HEADER WILL WANT TO CLOSE A TABLE CELL SO WE SHOULD OPEN ONE HERE THEN WE DONT HAVE TO WORRY ABOUT STARTING THE MAIN PAGE USING A FIXED FORMAT -->
<CENTER>
<TABLE BORDER = "0" CELLPADDING = "0" CELLSPACING = "0" WIDTH = "90%">
<TR>
<TD>
<FONT SIZE = "2" FACE = "ARIAL, HELVETICA, SANS SERIF">
<!-- END PAGE_HEADER_WITH_SEARCH_BOTTOM.SSI HERE -->
<!-- BEGIN SECTION_HEADER_TOP SSI -->
</FONT>
</TD>
</TR>
<TR>
<TD>
<TABLE BORDER = "0" WIDTH = "100%" CELLPADDING = "0"
CELLSPACING ="0">
<TR>
<TD COLSPAN = "4">
<IMG SRC = "clear_dot-1.gif" tppabs="http://www.extropia.com/graphics/template/clear_dot.gif"
WIDTH = "10" HEIGHT = "20" BORDER = "0">
</TD>
</TR>
<TR>
<TD ALIGN = "LEFT"><IMG SRC = "tab1.gif" tppabs="http://www.extropia.com/graphics/template/tab1.gif"
WIDTH = "8" HEIGHT = "19"></TD>
<TD ALIGN = "CENTER" BGCOLOR = "#666666" nowrap>
<FONT FACE = "ARIAL, VERDANA, SAN SERIF" COLOR = "#FFFFFF" SIZE = "2">
<!-- END SECTION HEADER TOP SSI INSERT SECTION TITLE HERE -->
Understanding the 3 Layers of an Applicaiton
<!-- START SECTION HEADER BOTTOM HERE --></FONT></TD>
<TD><IMG SRC = "tab2.gif" tppabs="http://www.extropia.com/graphics/template/tab2.gif"
WIDTH = "8" HEIGHT = "19"></TD>
<TD WIDTH = "100%" BACKGROUND = "tabext.gif" tppabs="http://www.extropia.com/graphics/template/tabext.gif"> </TD>
</TR>
<TR>
<TD COLSPAN = "4">
<IMG SRC = "clear_dot-1.gif" tppabs="http://www.extropia.com/graphics/template/clear_dot.gif"
WIDTH = "10" HEIGHT = "20" BORDER = "0">
</TD>
</TR>
</TABLE>
</TD>
</TR>
<!-- THIS OPENS A NEW CELL AND STARTS FONT -->
<TR>
<TD><FONT SIZE = "2" FACE = "ARIAL, HELVETICA, SANS SERIF" >
<!-- END OF SECTION_HEADER_BOTTOM.SSI -->
<CENTER>
<FONT FACE = "ARIAL">
<A HREF = "monolithic_apps.html" tppabs="http://www.extropia.com/tutorials/dna/monolithic_apps.html">Previous Page</A> |
<A HREF = "client_server_intro.html" tppabs="http://www.extropia.com/tutorials/dna/client_server_intro.html">Next Page</A> |
<A HREF = "toc.html" tppabs="http://www.extropia.com/tutorials/dna/toc.html">Table of Contents</A>
</FONT>
</CENTER>
<P>
All applicaitons can be broken into three layers
<P>
<OL>
<LI><B>Presentation Layer</B> - What the user sees. (aka GUI,
Client-side, or "view")
<LI><B>Business Rules Layer</B> - The underlying processing engines
and their rules (aka middle-tier, backend, or "control")
<LI><B>Data Layer</B> - The physical data storage layer (aka: "model")
</OL>
<P>
Most applications have requitements that span all three of the layers.
That is, most applications need a user interface (1) and process (2)
user requests based upon some underlying data (3).
<P>
However, as a developer, it is usually better to make sure that
within the design of your applicaiton, that you separate the three
layers.
<P>
Why?
<P>
Well, mainly because things change. Especially in the world of
computers. In fact, things don't just change, they change
extremely quickly and often dramatically.
<P>
As a result, developers must often modify applications to meet
new requirements in short order. And how flexible your application
will be, will depend on how well the three layers have been separated.
<P>
Let's understand this by exaple. Suppose you wrote an applicaiton
that drew its data from a simple delimited data file.
<P>
<CENTER>
<IMG SRC = "flat_file.gif" tppabs="http://www.extropia.com/tutorials/dna/flat_file.gif">
</CENTER>
<P>
If the data manipulation code were embedded into the
presentation and Rules layer, what do you suppose would
happen if you decided at a later date that you preferred
to store your data in a relationsal database like Oracle?
(Or what would happen if the technical environment suddenly
changed and B2B XML streams were the norm?)
<P>
<CENTER>
<IMG SRC = "oracle.gif" tppabs="http://www.extropia.com/tutorials/dna/oracle.gif">
</CENTER>
<P>
Well, in this case, you would most certainly have to
<B>rewrite</B> your application because your code would be
hand-carved for flat files.
<P>
As you might imagine, this is incredibly inefficient.
Rewriting is never a very good situation to be in.
<P>
Since the environment in which your application must
survive will change so fast, you need a design that
will allow you to switch in new technologies without
having to rewrite.
<P>
In order to do this however, the layers must be very
distinct...they must be "pluggable". In the example below,
we show that an "interface" can sit between the application
(the presentatin and rules layers) and the data layer.
<P>
The interface separates them safely into distinct layers.
<P>
<CENTER>
<IMG SRC = "driver.gif" tppabs="http://www.extropia.com/tutorials/dna/driver.gif">
</CENTER>
<P>
As you might imagine, a good program will also separate the presentation
layer from the rules layer as well. With good separation,
one can switch presentation drivers as desired....whether the client
uses a browser, a handphone, or a PDA should not matter!
<P>
<CENTER>
<FONT FACE = "ARIAL">
<A HREF = "monolithic_apps.html" tppabs="http://www.extropia.com/tutorials/dna/monolithic_apps.html">Previous Page</A> |
<A HREF = "client_server_intro.html" tppabs="http://www.extropia.com/tutorials/dna/client_server_intro.html">Next Page</A> |
<A HREF = "toc.html" tppabs="http://www.extropia.com/tutorials/dna/toc.html">Table of Contents</A>
</FONT>
</CENTER>
<!-- #### START NAVIGATION_TEMPLATE_BOTTOM.SSI HERE #### -->
<!-- #### THIS ENDS THE MAIN PAGE CONTENT TABLE AND THE MAIN PAGE ENCLOSURE TABLE #### -->
</FONT>
</TD>
</TR>
<TR>
<TD><IMG SRC = "clear_dot.gif" tppabs="http://www.extropia.com/graphics/clear_dot.gif" BORDER = "0"
WIDTH = "1" HEIGHT = "60"></TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<!-- #### BOTTOM BANNER AND COMPANY LOGO START HERE #### -->
<TABLE WIDTH = "100%" BORDER = "0" CELLPADDING = "0"
CELLSPACING = "0" ALIGN = "CENTER">
<TR>
<TD BGCOLOR = "#000000">
<A HREF = "javascript:if(confirm('http://www.extropia.com/contactus.html \n\nThis file was not retrieved by Teleport Pro, because it is addressed on a domain or path outside the boundaries set for its Starting Address. \n\nDo you want to open it from the server?'))window.location='http://www.extropia.com/contactus.html'" tppabs="http://www.extropia.com/contactus.html">
<IMG BORDER = "0" SRC = "contactbot.gif" tppabs="http://www.extropia.com/graphics/template/contactbot.gif"
HEIGHT = "19" WIDTH = "133" ALT = "contact us"></A></TD>
<TD WIDTH = "100%" BGCOLOR = "#000000"> </TD>
<TD BGCOLOR = "#000000">
<A HREF = "#top" TARGET = "_top"><IMG SRC = "backtop.gif" tppabs="http://www.extropia.com/graphics/template/backtop.gif" BORDER = "0"
HEIGHT = "19" WIDTH = "93" ALT = "back to top"></A>
</TD>
</TR>
</TABLE>
<TABLE WIDTH = "100%" BORDER = "0" CELLPADDING = "0"
CELLSPACING = "0" ALIGN = "CENTER">
<TR HEIGHT = "30">
<TD WIDTH = "100%" COLSPAN = "2" ALIGN = "RIGHT" VALIGN = "BOTTOM"
BACKGROUND = "greylinesbot.gif" tppabs="http://www.extropia.com/graphics/template/greylinesbot.gif"
HEIGHT = "33" WIDTH = "8">
<FONT SIZE = "1" FACE = "ARIAL, HELVETICA, SANS SERIF" COLOR = "#000000">
design & copyright: eXtropia - the open web technology company
</FONT>
</TD>
</TR>
<TR>
<TD ALIGN = "RIGHT" COLSPAN = "2"> </TD>
</TR>
</TABLE>
<TABLE WIDTH = "100%" BORDER = "0" CELLPADDING = "0"
CELLSPACING = "0" ALIGN = "CENTER">
<TR>
<TD ALIGN = "CENTER" COLSPAN = "3">
<IMG SRC = "clear_dot-1.gif" tppabs="http://www.extropia.com/graphics/template/clear_dot.gif" BORDER = "0"
WIDTH = "1" HEIGHT = "20">
<BR>
<!-- BEGIN LINKEXCHANGE CODE -->
<CENTER>
<iframe src="showiframe-.htm" tppabs="http://leader.linkexchange.com/1/X1188309/showiframe?"
width=468 height=60 marginwidth=0 marginheight=0
hspace=0 vspace=0 frameborder=0 scrolling=no>
<a href="http://leader.linkexchange.com/1/X1188309/clickle"
target="_top"><img width=468 height=60 border=1 ismap alt=""
src="showle-" tppabs="http://leader.linkexchange.com/1/X1188309/showle?"></a></iframe><br><a
href="http://leader.linkexchange.com/1/X1188309/clicklogo"
target="_top"><img
src="showlogo-" tppabs="http://leader.linkexchange.com/1/X1188309/showlogo?"
width=468 height=16
border=0 ismap alt=""></a>
<!-- END LINKEXCHANGE CODE -->
</CENTER>
</TD>
</TR>
</TABLE>
</TABLE>
<!-- BOTTOM BANNER AND COMPANY LOGO END HERE -->
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>
<!-- END NAVIGATION_TEMPLATE_BOTTOM.SSI HERE: THAT'S ALL FOLKS ! -->
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -