Victor Mushkatin, MCSE, MCSD CORPORATION Alexander Zakonov, MCSE, MCSD Stephen Pelletier, MCSE
AVICODE provides PRODUCTS to facilitate integration of LEGACY BACK-END servers with FRONT-END WEB applications. CODE LIBRARIES APPLICATION FRAMEWORKS ESSENTIAL SERVER TOOLS RAPID DEVELOPMENT TECHNIQUES CORPORATION
VALUE PROPOSITION Lower Software Development Costs Enable Rapid Development Enable Connectivity to Business Portals and Application Service Providers TARGET MARKETS Web Developers, Internet Start-ups Corporate Intranet Developers CORPORATION
B2B – BUSINESS PORTALS CYNOPS.COM – Legal Services E-SHIPPINGSOLUTIONS.COM – Shipping Transactions B2C - COMMERCIAL WEB SITES MIMRX.COM – Prescription Orders LEASETRADING.COM – Leased Equipment CORPORATION
Programming techniques for developing stateless web applications using VB under IIS and COM+ CORPORATION
What is a Stateless Object ? Object that does not maintain state across method calls called stateless Object Object = State + Behavior Stateless Object = Object - State
Why do we need Stateless Objects ? Scalability Transactions Nature of the Internet (HTTP)
What are the issues introduced by stateless approach ? Context recreation Difficult design
What is the context ? Application context – configuration information for different resources User state – information specific to the user session
Custom “class factory” Class factory is an agent that creates instances of objects that initialized with application context (Code example)Code example
Adding transaction support to “class factory” (AppContext) (Code example)Code example
Adding object caching to “class factory” (AppContext) (Code example)Code example)
Additional techniques that simplify coding and system maintenance Custom resource wrapper Performance logging Error Handling DB COM Wrapper
Managing State in Web Applications CORPORATION
What is a Web farm ? Web farm is a GROUP of SERVERS that use load balancing techniques to distribute the workload of incoming requests Application availability Horizontal Scalability
Load balancing techniques Session-based load balancing Round-robin DNS Software based products (WLBS) Request-based load balancing Hardware based product (LocalDirector/CISCO, BigIP/F5, NetFoundry)
Maintaining state in load balancing scenario Client Side Very easy to store and retrieve data Limited size of the state data Security issues Middle tier IIS Single point of failure Supports only session-based LB Bad distribution of request Database Data durability Virtually “unlimited” size Could be expensive
approach … Sign URL with embedded session ID Minimize number of hits to the DB server (Code example)
What are the common problems of persistent session management solutions ? Flat nature of all existing session mechanisms ASP/HTTP does not provide infrastructure for defining variable scope
Typical Scenario ASP1 ASP2 Call ASP2.ASP Work within ASP2.ASP Return back to the page that called ASP2 (Code example)Code example
ASP Call Stack using AVICODE AX Code Library axCall, axCallEx – PUSH return address to stack axReturn – POP return address from stack axPass – call page without modifying stack axEscape – clear the stack
How does it work ? ASP1 ASP2 axCall(“ASP2.ASP?_mode=view”) axPass(“ASP2.ASP?_mode=view”) axReturn() (Code example)Code example
Yet another problem – Heavy Objects Very time consuming to initialize and destroy objects (i.e. Exchange and Index Server recordsets) Legacy objects
AVICODE DECA Distributed Caching for Applications Scales COM - DCOM Applications Provides tools to migrate single server application onto Server Farms environment Provides COM-based interfaces for integration with COM-enabled languages (VB, C++) Provides Distributed Object Pool to minimize object instantiation time and memory resources
AVICODE DECA Principal Architecture
Example of performance benefits of storing heavy Recordset in DECA (Code example)Code example
TEL: FAX: CORPORATION