CS-422 Enterprise Computing Preview

Download Report

Transcript CS-422 Enterprise Computing Preview

CS-422
Enterprise Computing
Preview
Client Server Strategies
• CGI (Common Gateway Interface)
• Active Server Pages
– Personal Home Pages (PHP)
– MS Active Server Pages (ASP)
– Cold Fusion
• Java Servlets and JSP
• Enterprise Java Beans
CGI
• Program run by web server in response to client
request
• perl, C, C++, VB, Java, python, tcl
• handles submitted HTML forms data and
dynamically creates a web page in real time and
returns it to the requesting client
• Old Technology; pre- HTTP, rooted in gopher
• reliable
• resource hog
CGI (more)
• Very useful used in conjunction with Java based
clients for things like:
– Report Generation (WebFocus)
– Data retrieval (files and RDBMS)
– Persistent object storage (files)
• Could almost be replaced by server side Java
• Hard to maintain program state
– must rely on programming tricks
• cookies, hidden variables
CGI (more)
Static Web page with forms tags
Browser
<form action=/CGI-BIN/AAA.PL>
Web
Server
CGI
Program
DB
CGI (more)
• If another user requests a CGI while the CGI is
already running; the web server spawns a child
process and runs another instance of the CGI
there.
• For frequently run CGIs there may be many
copies in the machine at the same time
•
…resource hog (web servers that run a lot of
CGIs will use all of the memory you can afford)
CGI (more)
Browser
Browser
Browser
Web
Server
CGI
CGI
CGI
Program
Program
Program
DB
Active Server Page Technologies
• HTML pages that appear to be database aware
• HTML with an embedded scripting language and
either CGI or proprietary server support are used
to make forms objects appear to be database
aware
• Main contenders:
–
–
–
–
PHP (Open Source)
Microsoft Active Server Pages (OEM Product)
Cold Fusion (OEM Product)
Java Server Pages (Open licensing from Sun)
PHP (Personal Home Pages)
• Core Technologies
– HTML
– PHP Script
– JavaScript
• Platforms
– Primarily LINUX, Apache
– Windows
– UNIX
• Databases
– Primarily used with MySQL (Open Source)
– Oracle, DB2 (MyODBC Open Source Database Driver))
PHP (More)
• How it works
– PHP processor usually installs as a CGI that is invoked in response
to a request for a .php file (on Windows NT can run as a service)
– the CGI retrieves the requested file, parses it looking for PHP tags
– PHP tags are resolved and the tag is replaces by that resolution
• Benefits
– Cheap, Open Source
– Easy to learn
• special HTML-like tags
• very reminiscent of C
– many Open Source, domain specific add ons available
• Problems
– Support is typical of Open Source (but quality is high)
PHP (typical) Architecture
HTML
Apache Web
Server
PHP CGI
JavaScript
MySQL DB
Microsoft Active Server Pages
• Core technologies
–
–
–
–
–
–
–
MS Internet Information Server
MS Internet Explorer (IE4.0)
VBScript
Java
ActiveX
SQL Server & Access
DCOM
Microsoft Active Server Pages
• Works only on Windows (NT Server
and W2000 Server)
Microsoft ASP Architecture
IIS
HTML
JavaScript
VBScript
VBScript
Java
ActiveX
IE 4.0
Data Base,
(Access
SQLServer)
Microsoft ASP
• How it works
– IIS retrieves the requested file, parses it looking for
Jscript/VBScript and resolves the script by replacing it with the
resolution (values/text)
• Benefits
– A 100% MS solution, important for many corporate IS shops
– Easy to learn
• based on VB
• skills are readily available from the large number of VB programmers
– easy accessibility to Windows API and DLLs
• Problems
– Security has always been a problem due to MS frequent OS and
product release cycle
Cold Fusion
• Core Technologies
– Proprietary, tag based, embedded scripting language
– Javascript, Java
• Platforms
– NT, LINUX, Solaris
– Apache, Netscape/iPlanet, IIS
• Databases
– Access, MS SQL Server (NT W/2000 Only)
– Sybase, Oracle, DB2
– MySQL (requires MYODBC driver)
Cold Fusion Architecture
HTML
Web Server
JavaScript
Java
ODBC
JDBC
ColdFusion
Server
Native
Database
Cold Fusion
• How it works
– Web server receives request for .cfm file and passes the request to
the CF server. CF Server parses the file returning all non- CF tags
to the requesting browser and resolving the CF tags into their
resolved text/values
• Benefits
– Multi-platform
– Easy to learn
• tag based (looks like HTML, gives web community comfort that its
just some additional tags)
– much support available via the web, wide following in the web
community
• Problems
– OEM pricing (current price of $5K/server)
Java Servlets
• Core Technologies
– Java
– HTML, Javascript
• Platforms
– NT, LINUX, Solaris
– Apache/Tomcat, Netscape/iPlanet, JRun
• Databases
– all JDBC enabled (DB2, Oracle, Sybase, Informix)
Java Servlet Architecture
Web Server
with servlet
engine & JRE
Database
HTML
Servlet
Cache
JavaScript
Java Servlets
• How it works
– Web server receives request for servlet (name is mapped to a class
file by Java web server) . Servlet is loaded into cache and run in
the JRE. HTML produced by servlet is returned to browser
• Benefits
–
–
–
–
Cross platform as long as compliant servlet engine is availabe
Easy to learn for Java/C++ programmers
much support available via the web
faster than interpretive technologies (like PHP, ASP, CF)
• Problems
– still hard to find skills
– still considered to be “bleeding edge” by many IS shops
Java Server Pages
• Core Technologies
– Java
– HTML, Javascript
• Platforms
– NT, LINUX, Solaris
– Apache/Tomcat, Netscape/iPlanet, JRun
• Databases
– all JDBC enabled (DB2, Oracle, Sybase, Informix)
JSP Architecture
Web Server
with JSP
engine & JRE
Database
HTML
Servlet
Cache
JavaScript
What is a JSP
• Combination of HTML, Javascript,
and a set of Java tags (5)
– Java tags allow java code and calls to Javabeans
to be embedded in line
– Java tags also allow control of the Java runtime
environment
Java Server Pages
• How it works
– Web server receives request for .jsp. JSP engine converts the page
to source code for a Java Servlet, source is compiled by javac and
class is moved to cache for deployment
• Benefits
– Cross platform as long as compliant engine is availabe
– Allows Integrated Product Team development
– faster than interpretive technologies (like PHP, ASP, CF)
• Problems
– still hard to find skills
– still considered to be “very bleeding edge” by many IS shops
Deployment Strategies
2-Tier Client Server
• Java based Client; application or
applet
• JDBC
• Database
2-Tier Client-Server - application
Java Client
Application
using JDBC
APIs
TCP/IP
JDBC
Enabled
Database
This application architecture is simple
but won’t scale to very many users
2-Tier Client-Server - applet
Browser
HTML
Unix or Windows
Webserver
applet
JVM
JDBC
Enabled DB
Webserver and DB must be on same IP address
2-Tier Problems
• Client has to do everything
• DBs aren’t meant to handle large
numbers of transient connections
(connections are often more
expensive than the db transaction
being done)
• Good only for infrequently used apps
3-Tier Client-Server
• Java based Client; application or
applet
• Server/middleware
• Database
3-Tier Client Server
Sockets
JavaIDL
Client
JDBC
JavaRMI
Native
Client
Client
Server
DB
3-Tier Advantages
• Server can manage database
connections efficiently
• Client can focus on business logic
• Server can preformat data for client
• Running server on high performance
hardware can improve client
perceived performance
JavaIDL
• In Java we cannot separate a class’s
definition from its implementation as
we can in C++
– Header files
– Implementation files
• CORBA allows the separation of
definition and implementation
JavaIDL
• CORBA uses IDL for defining
interfaces, language specific IDL
compilers are available
– create target language skeletons and stubs to be
used by developers for building CORBA clients
and servers
– CORBA objects talk to each other via interfaces
CORBA Object Communications
IIOP
Object A
Interface
Object B
Interface
Conceptually ...
Client
Client
Client
Server
ORB
Server
Server
What happens...
• Server objects register their methods
with the orb naming service
• Client binds to the orb naming server
for a server object method
• Naming service returns location of
server object and disconnects
• Client connects to server at returned
location
Really though...
ORB
Client
Services
Registration
1
Server
2
Client
Server
3
Client
Server
This is very simplified
• Very…
Other ORB services...
• Depending on vendor
implementation:
– automatic failover for servers
– load balancing
– real time, online database
Orb Info
• The Visigenics VisiBroker Orb is built
into Netscape Communicator 4.0 to
aviod having to download 100+
Corba class files; Netscape browser
is ready to be a CORBA client
• Borland bought Visigenics
• Borland’s and Visigenics vision is a
CORBA based world
• Why didn’t Microsoft buy Visigenics?
Why MS didn’t buyVisigenics
• Wrong vision…
• MS Vision is DCOM not CORBA
CORBA +’s & -’s
•
•
•
•
•
Very robust and scalable
Language independent
Multi-platform
very steep learning curve
specification addresses functionality
not a standardized API
– every ORB programs differently
Remote Method Invocation
• Similar to C++ RPCs
• Instead of creating and instantiating
an object on your machine create it
on another machine and
communicate with it as if it were a
local object
• eliminates much CORBA overhead
• comes with JDK (unlike CORBA)
RMI
• RMI classes let you generate stubs
and skeleton layers like JavaIDL
• Remote reference Layer translates
stub and skeletion calls to native
transport calls on the host
architecture and carries out remote
reference protocols
RMI Model
Client
Server
Stubs
Skeletons
Remote
Reference
Remote
Reference
Transport
RMI
• Currently RMI uses its own “on the
wire” protocol that is based on the
Java serialization API
• IIOP over RMI is a currently an
option for CORBA compatibility
Enterprise Java Beans
• Java, server side component
technology
• Application Server Based
Technology (IBM Websphere, BEA
Weblogic, Silverstream, Macromedia
JRun
• Draws heavily on RMI, CORBA
EJB Architecture
Application Server
EJB Container
Browser
EJB Server
Transactions
Security
Database
Transaction Management
• EJBs are transactional by nature
– can be non-transactional but defined for
distributed transactions
– two-phase commit protocol
– uses Java Transaction Service (JTS)
• Java binding for CORBA Object Transaction
Service (OTS)
• spans multiple transactions across multiple database
on multiple platforms
• insures interoperability with other EJB servers
Persistance
• EJBs provide a simple programming
model for managing object
persistance
– beans can manage their own persistance
– persistance can be managed by the EJB
container
– big improvement over active server page
technologies
Security
• Java policy based security
– J2EE
– built into JDK since ver 1.1
EJB Server
• Provides services for the EJB
container
• provides distributed transaction
management
EJB Container
• EJB Life cycle management (creation
to destruction)
• implicit transaction control
• persistance management
• transparent distribution services
• security services
• isolates the developer from platform
dependent APIs
Standards based approach
• Based on industry standards (TCP/IP,
IIOP, DCOM…)
• the model applies to both small scale
and large scale applications
• transparent access to backend
databases (direct JDBC/JSQL access
is allowed)
Benefits
• Highly scaleable
–
–
–
–
–
load balancing
automatic failover
managed persistance
high transaction rates
portability
Problems
• High capital and software investment
• Steep learning curve
• Considered “bleeding edge”and
therefore high risk by most IS shops.