📄 client_server_problems.html
字号:
<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 -->
Problems with the Client Server Model
<!-- 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 = "client_server_intro.html" tppabs="http://www.extropia.com/tutorials/dna/client_server_intro.html">Previous Page</A> |
<A HREF = "collaborative_systems.html" tppabs="http://www.extropia.com/tutorials/dna/collaborative_systems.html">Next Page</A> |
<A HREF = "toc.html" tppabs="http://www.extropia.com/tutorials/dna/toc.html">Table of Contents</A>
</FONT>
</CENTER>
<P>
However, though the client-server architecture was vastly
superior to the monolithic architecture, the approached
forced developers to locate the three main development
layers in just two locations (in the client or in the
server).
<P>
Typically, presentation and business rules logic
would always remain within the
purview of the client-side application.
<P>
For example, Decisions on locking, updating, deleting and
information presentation were encoded in the client application
directly. This enabled the client application to 'short-cut'
the UI to produce clever designs.
<P>
The data however, became the responsibility of
the database or messaging subsystems. As such they were
accessed either via direct API or through thin layers of
'enabling technology' such as ODBC. In some instances, this
provided limited flexibility enabling designers to substitute
like database for like without creating large amounts of work.
<P>
The presentation layer would exist as a single layer
within the client side application but the business and
database layers could exist in the database or messaging
server. This enabled the client side application to respond
quickly to cosmetic changes without having to test all
business logic cases, and at the same time allowed the
business rules to change without requiring mass rollouts
at every such occasion.
<P>
The client-server model presented a major paradigm shift
when compared to monolithic applications. However, it
remained far from ideal.
<P>
In one scenario, the presentation layer and business layer
are constantly diametrically opposed. Fewer updates to the
GUI engender familiarity with an application (and makes it
simple in deployment) but restrict the ability to change
the business rules. Frequent changes to the business rules
cause deployment and testing headaches.
<P>
The alternative
approach is to locate the business rules within the database/messaging
layers. However this tactic means that it is hard to uncouple the business
logic from the data and messaging structures.
<P>
The Client-Server architectures also suffered under constant
maintenance strains due to proprietary standards, technologies
and, most importantly, a lack of scalability.
<P>
Client/Server
applications performed best in a corporate environment where
groups of users require a focal application which integrates
tightly to key technologies such as database engines, email
server, work flow and document management systems.
<P>
As a result, most Client-Server application were
little more that file
and database sharing applications. In fact, early Client/Server
solutions were often oblivious to other clients, behaving in a
singular fashion.
<P>
While the Client-Server approach does much to create good
solutions there followed a painful growth period during which
applications were built, deployed and maintained. It was during
this "growth" that the issues with Client/Server development
became apparent.
<P>
In the client server model all clients have access to nearly
all the services. This forces the services, like email and
the database servers, to ensure that they can maintain
large numbers of permanently connected users.
<P>
Every
connection requires processing, memory resources and
extra network traffic - even when the clients are busy
doing nothing of significance against the servers. Load
balancing tools were scarce and the underlying technology
proved problematic to maintain.
<P>
From a development perspective there are also issues of
maintaining software that often needs updating when new
versions of API arrive, especially when the new version
fixes existing issues. When this situation occurs the
process of deployment becomes a major issue.
<P>
How best
do you deploy to hundreds (maybe thousands) of clients?
How can the developers ensure that there are no conflicts
with other installations? How do you deploy all the supporting
APIs and connectivity libraries?
<P>
Certainly, there are solutions to most of these problems,
however, one specific problem remains a constant problem
for all multi-client solutions; scalability. As users are
added to a solution it becomes more and more difficult to
maintain a consistently good level of service without diverting
significant resources.
<P>
Technology moves and grows but occasionally a conceptual
shift occurs (a paradigm shift). A shift of this magnitude
arrived in the form of the Internet. With the arrival of
the 'net' many of the client-server problems could be
solved. If not solved, they were meliorated.
<P>
<CENTER>
<FONT FACE = "ARIAL">
<A HREF = "client_server_intro.html" tppabs="http://www.extropia.com/tutorials/dna/client_server_intro.html">Previous Page</A> |
<A HREF = "collaborative_systems.html" tppabs="http://www.extropia.com/tutorials/dna/collaborative_systems.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 + -