PowerPoint Slides (PPT)

Preview:

Citation preview

Death of the Browser?Death of the Browser?

Billy HollisBilly HollisNext Version Systems, LLCNext Version Systems, LLC

Presented for the Association of Presented for the Association of Information Technology ProfessionalsInformation Technology Professionals

October 31, 2002October 31, 2002

Recent historyRecent history Prior to 1984 – character-based interfacesPrior to 1984 – character-based interfaces 1984 – Apple Macintosh introduces first mainstream GUI 1984 – Apple Macintosh introduces first mainstream GUI

OSOS 1990 – GUI jumps in popularity with Windows 3.01990 – GUI jumps in popularity with Windows 3.0 1990 to circa 1996 – GUI-based client-server programs, 1990 to circa 1996 – GUI-based client-server programs,

rise of Visual Basicrise of Visual Basic Circa 1995 – Internet becomes a force in mainstream Circa 1995 – Internet becomes a force in mainstream

computing, browsers and HTML become commonplacecomputing, browsers and HTML become commonplace 1997 – Browser-based applications become popular 1997 – Browser-based applications become popular

because of increasing reach of Internet and cheap because of increasing reach of Internet and cheap deploymentdeployment

1997-2001 – Scripting languages used for application UI 1997-2001 – Scripting languages used for application UI in the browserin the browser

2002 – Microsoft .NET is introduced2002 – Microsoft .NET is introduced

Why did browser-based Why did browser-based applications become popular?applications become popular?

Not “because they’re cool”!Not “because they’re cool”! Deployment to the client became Deployment to the client became

more expensive with Microsoft’s COM more expensive with Microsoft’s COM platformplatform• No more “copy and run”No more “copy and run”• DLL HellDLL Hell

Simultaneously, browsers offered a Simultaneously, browsers offered a near-zero-cost deployment near-zero-cost deployment alternativealternative

But browsers are a giant step But browsers are a giant step backward!backward!

HTML not designed as application interface HTML not designed as application interface technologytechnology• Designed for hyperlinked documentsDesigned for hyperlinked documents

Bolt-on capabilities allowed only minimal Bolt-on capabilities allowed only minimal GUI elementsGUI elements

Limited control over user interaction in the Limited control over user interaction in the browser (keystrokes, drag and drop)browser (keystrokes, drag and drop)

Difficult to do client-side data validationDifficult to do client-side data validation Costly to produce even marginally Costly to produce even marginally

effective UIeffective UI Immature security modelImmature security model

The only reason we put up with The only reason we put up with browser-based applications is browser-based applications is because alternatives have had because alternatives have had limited reach and very high limited reach and very high deployment costs!!deployment costs!!

What if…What if…

……there was an alternative to there was an alternative to browser-based applications that browser-based applications that offeredoffered• Broad reachBroad reach• Very low cost deploymentVery low cost deployment• Slick, responsive UISlick, responsive UI• Better, far more flexible security modelBetter, far more flexible security model

The next generationThe next generation

Such an alternative represents the Such an alternative represents the next generation of Internet-enabled next generation of Internet-enabled applicationsapplications• Smart clients running on the user Smart clients running on the user

machinemachine• A standard way to pass data from server A standard way to pass data from server

to smart client and back again over the to smart client and back again over the InternetInternet

The first platform to offer this The first platform to offer this alternative is Microsoft .NETalternative is Microsoft .NET

The first post-Internet platformThe first post-Internet platformMicrosoft .NETMicrosoft .NET

Designed from the ground up with the Designed from the ground up with the Internet in mindInternet in mind

Microsoft is betting their future on itMicrosoft is betting their future on it So big, it’s hard to grasp the changes it So big, it’s hard to grasp the changes it

will bringwill bring Will likely bring competitive responses Will likely bring competitive responses

from other companies, so its effects from other companies, so its effects matter even if you don’t expect to use itmatter even if you don’t expect to use it

Goals of Microsoft .NETGoals of Microsoft .NET Unify programming modelsUnify programming models

• Internet, local, mobile programming all done with Internet, local, mobile programming all done with the same language and toolsetthe same language and toolset

Provide new distributed architecturesProvide new distributed architectures• Tying systems together across the InternetTying systems together across the Internet

Better deploymentBetter deployment• Cheaper deployment for standard appsCheaper deployment for standard apps• More deployment options, including Internet More deployment options, including Internet

deploymentdeployment Better securityBetter security

• Obliterate common security flaws such as buffer Obliterate common security flaws such as buffer overrunsoverruns

• More security options – fine-grained policiesMore security options – fine-grained policies

Decline of browser-based appsDecline of browser-based apps Today we use Today we use

the browser the browser just to keep just to keep deployment deployment costs lowcosts low

Alternative of “smart-client” applications Alternative of “smart-client” applications costs too much to deploy for most scenarioscosts too much to deploy for most scenarios

So we put up with sub-standard, non-So we put up with sub-standard, non-responsive user interfacesresponsive user interfaces

.NET changes the economics of .NET changes the economics of deploymentdeployment

Simple deployment model – copy and runSimple deployment model – copy and run Allows programs to run from Allows programs to run from

• Local computerLocal computer• Shared drive on a networkShared drive on a network• Removable media (e.g. CD-ROM)Removable media (e.g. CD-ROM)• An Internet serverAn Internet server

Fine-grained securityFine-grained security• Security policies determine exactly what Security policies determine exactly what

privileges code has, based on its origin and privileges code has, based on its origin and other pieces of evidence about the codeother pieces of evidence about the code

Internet Deployment of Windows Internet Deployment of Windows FormsForms

Client withClient with.NET Runtime.NET Runtime Web ServerWeb Server

Web Web ServerServer

Windows Windows Forms App.Forms App.

HTTPHTTP

Form1Form1

Form2Form2Assembly

Cache

Forms contained in Forms contained in separate DLLsseparate DLLs

Deployment directory Deployment directory on web serveron web server

Smart clients become practical againSmart clients become practical again

This new generation is sometimes referred This new generation is sometimes referred to as a “distributed smart client to as a “distributed smart client architecture”architecture”

Technologies requiredTechnologies required Distributed smart client architectures require Distributed smart client architectures require

the following pre-requisite technologies:the following pre-requisite technologies:• Standard HTTP connection from each client Standard HTTP connection from each client

machine to a web servermachine to a web server• A forms engine and execution environment A forms engine and execution environment

running on the client machinerunning on the client machine• A way to easily and cheaply deploy the A way to easily and cheaply deploy the

application to the client machineapplication to the client machine• One or more ways to fetch data from a central One or more ways to fetch data from a central

web server and update the server with changes to web server and update the server with changes to datadata

• A security model that limits the ability to do A security model that limits the ability to do damage to the client machinedamage to the client machine

• A means to secure access to the system and the A means to secure access to the system and the datadata

Microsoft .NET has all these Microsoft .NET has all these technologiestechnologies

Windows Forms / .NET FrameworkWindows Forms / .NET Framework Internet deploymentInternet deployment Standard data packages (DataSets)Standard data packages (DataSets) Web Services / Remoting / SOAPWeb Services / Remoting / SOAP Code Access SecurityCode Access Security Authentication/Authorization Authentication/Authorization

mechanismsmechanisms Support for HTTP/HTTPSSupport for HTTP/HTTPS

What are Windows Forms?What are Windows Forms?

Replicate the functionality of the Replicate the functionality of the Visual Basic forms engine in VB6Visual Basic forms engine in VB6

More consistent object modelMore consistent object model Used in all .NET languagesUsed in all .NET languages Because based on .NET, can be used Because based on .NET, can be used

with any language, and have future with any language, and have future possibility of being portable to other possibility of being portable to other systems (Mac? Linux?)systems (Mac? Linux?)

DemonstrationDemonstration

Windows Forms advanced Windows Forms advanced capabilities capabilities

Docking and anchoring of controlsDocking and anchoring of controls Topmost, Owned formsTopmost, Owned forms Advanced visual control (Opacity, Advanced visual control (Opacity,

TransparencyKey)TransparencyKey) Capability to do skinsCapability to do skins DemonstrationDemonstration

The Easy Way to Deploy – The Easy Way to Deploy – Launching From a URLLaunching From a URL

Run a .NET executable straight from a URLRun a .NET executable straight from a URL• Start -> Run -> Start -> Run -> http://myserver/myapp.exehttp://myserver/myapp.exe• Shortcut to URL on desktopShortcut to URL on desktop• In a web page:In a web page:

<a href=http://myserver/myapp.exe> My App <a href=http://myserver/myapp.exe> My App </a></a>

No-Touch UpdateNo-Touch Update• Just update the files on the serverJust update the files on the server

On-demand downloadOn-demand download DemonstrationDemonstration

An Alternative for More ControlAn Alternative for More Control1.1. Create Windows Forms application as usualCreate Windows Forms application as usual

2.2. Package entire application in DLLs (no starting Package entire application in DLLs (no starting EXE)EXE)

3.3. Copy these DLLs into a web folderCopy these DLLs into a web folder

4.4. Create a launch program that uses Reflection to Create a launch program that uses Reflection to load application (see next slide) load application (see next slide)

5.5. Compile launch program to EXE and transport to Compile launch program to EXE and transport to target machine (email, FTP, etc.)target machine (email, FTP, etc.)

6.6. Start launch program – it will download actual Start launch program – it will download actual application automatically if it has an Internet application automatically if it has an Internet connectionconnection

Code in Launch ProgramCode in Launch ProgramDim sLocation As String Dim sLocation As String sLocation = _sLocation = _"HTTP://MyWebServer/MyDeployDir/MyAppName.dll""HTTP://MyWebServer/MyDeployDir/MyAppName.dll"

Dim formAsm As [Assembly] = _Dim formAsm As [Assembly] = _ [Assembly].LoadFrom(sLocation)[Assembly].LoadFrom(sLocation)Dim formtype As Type = _Dim formtype As Type = _ formAsm.GetType("MyProjectName.Form1")formAsm.GetType("MyProjectName.Form1")

'Create an instance of the Form'Create an instance of the FormDim FormObj As ObjectDim FormObj As ObjectFormObj = Activator.CreateInstance(formtype)FormObj = Activator.CreateInstance(formtype)

'Cast it to a Form object to enable early binding'Cast it to a Form object to enable early bindingDim Form1 As Form = CType(FormObj, Form)Dim Form1 As Form = CType(FormObj, Form)Form1.Show()Form1.Show()

Demonstration of Internet Demonstration of Internet DeploymentDeployment

Program up on a web siteProgram up on a web site Program using the code on the Program using the code on the

previous slide with the following URL:previous slide with the following URL:

"HTTP://dev1.eraserver.net/bhollis/"HTTP://dev1.eraserver.net/bhollis/UploadWinForms/LoanCalc.dll“UploadWinForms/LoanCalc.dll“

And the form name And the form name “LoanCalc.Form1”“LoanCalc.Form1” This demonstration assumes security This demonstration assumes security

policy has already been fixed! (We’ll policy has already been fixed! (We’ll see how to do that later.)see how to do that later.)

Data packages in .NETData packages in .NET .NET contains a new data access model – .NET contains a new data access model –

ADO.NETADO.NET Data is packaged into a standard container Data is packaged into a standard container

called a DataSetcalled a DataSet The container is XML-based, and so is the The container is XML-based, and so is the

same for all back-end databasessame for all back-end databases A DataSet containing data can be A DataSet containing data can be

transmitted via HTTP because it is XML-transmitted via HTTP because it is XML-basedbased

On the client system, the data has an in-On the client system, the data has an in-memory structure to give good memory structure to give good performanceperformance

DataSet StructureDataSet Structure

Similar to a miniature Similar to a miniature relational databaserelational database

Contains tables, columns, Contains tables, columns, rows, constraints, rows, constraints, views and relationsviews and relations

Disconnected modelDisconnected model• Has no knowledge of data Has no knowledge of data

source source • Array-like indexingArray-like indexing• Strong typingStrong typing• Supports data binding Supports data binding • Supports batch updatesSupports batch updates

DataSetDataSet

TablesTables

TableTable

ColumnsColumns

ColumnColumn

ConstraintsConstraints

ConstraintConstraint

RowsRows

RowRow

RelationsRelations

RelationRelation

Example of a DataSet Example of a DataSet Life CycleLife Cycle

OriginalDataStore

DataSet

Table1

Table2

Sets upSets uprelationshipsrelationships

DataSet

Table1

Table2

Makes changesMakes changesto datato data

DataSet

Table1

Table2

Resolves changesResolves changeswith Managedwith ManagedProviderProvider

Extracts tablesExtracts tablesWith ManagedWith Managed

ProviderProvider

Example of a DataSet Life Example of a DataSet Life CycleCycle DataSet

Table1

Table2

DataSet

Table1

Table2

DataSet

Table1

Table2

OriginalDataStore

Sets uprelationships

Makes changesto data

Resolves changesResolves changeswith Managedwith ManagedProviderProvider

Extracts tablesExtracts tablesWith ManagedWith Managed

ProviderProvider

ConnectedConnectedOperationsOperations

Example of a DataSet Life Example of a DataSet Life CycleCycle DataSet

Table1

Table2

DataSet

Table1

Table2

DataSet

Table1

Table2

OriginalData Store

Sets upSets uprelationshipsrelationships

Makes changesMakes changesto datato data

Resolves changeswith ManagedProvider

Extracts tablesWith Managed

ProviderDisconnectedDisconnected

OperationsOperations

Generating DatasetsGenerating Datasets

Datasets can be easily generated Datasets can be easily generated from standard relational datasourcesfrom standard relational datasources

Using XML technologies, DataSets Using XML technologies, DataSets can also be created from other can also be created from other sourcessources

Demonstration of creating a dataset Demonstration of creating a dataset

What is a Web Service?What is a Web Service?

Web Web ServiceService

XMLXML

““Building Block Building Block Services”Services”

Web Web ServiceService

HTTPHTTP

ClientClient

Web Web ServiceService

XMLXML

Web Web ServiceService

XMLXML

XM

LX

ML

A web service is: programmable logic accessible via standard Web protocols

SOAPSOAPSOAPSOAP Web Service consumers can send and Web Service consumers can send and receive messages using XML receive messages using XML

WSDLWSDLWSDLWSDL Web Services are defined in terms of the Web Services are defined in terms of the formats and ordering of messagesformats and ordering of messages

SOAPSOAPDiscoveryDiscoverySOAPSOAP

DiscoveryDiscovery You can ask a site for a description of the You can ask a site for a description of the

Web Services it offersWeb Services it offers

All these capabilities are built using open All these capabilities are built using open Internet protocols Internet protocols XML & HTTPXML & HTTP

Web Service built on Standards Web Service built on Standards Open Internet Protocols

Web Web ServiceService

A programmable application A programmable application component accessible via standard component accessible via standard Web protocolsWeb protocols

UDDIUDDIUniversal Description, Design, and IntegrationUniversal Description, Design, and Integration

UDDIUDDIUniversal Description, Design, and IntegrationUniversal Description, Design, and Integration

Provide a Directory of Services on the Provide a Directory of Services on the InternetInternet

Web Services DemonstrationWeb Services Demonstration

Web services are easy to create Web services are easy to create in .NETin .NET

Remember common programming Remember common programming modelmodel

DemonstrationDemonstration

Other transport optionsOther transport options

VPN over Internet (acts like a LAN)VPN over Internet (acts like a LAN) .NET Remoting.NET Remoting

• Must be .NET on both endsMust be .NET on both ends• SOAP transport through firewallsSOAP transport through firewalls• Binary TCP on networksBinary TCP on networks• Better performance and more controlBetter performance and more control

Any of these can transport DataSetsAny of these can transport DataSets

Default Security OptionsDefault Security Options On RTM of .NET Framework, applications On RTM of .NET Framework, applications

will download and run, but cannot access will download and run, but cannot access file system or other local resourcesfile system or other local resources

On Service Pack 1 (SP1) of .NET, by On Service Pack 1 (SP1) of .NET, by default, downloaded applications not even default, downloaded applications not even runrun

Security policies on local machine must be Security policies on local machine must be set to remedy both of these situationsset to remedy both of these situations

Demonstration of downloaded code with Demonstration of downloaded code with default securitydefault security

.NET Security Policies.NET Security Policies

Must set up a “Code Group”, Must set up a “Code Group”, which describes a set of which describes a set of code. Examples:code. Examples:• All code from a particular All code from a particular

publisherpublisher• All code downloaded from All code downloaded from

a particular URLa particular URL

Code Group

(e.g. all code from a URL)

Assembly 1

Assembly 2

Assembly 3

Permission set

e.g.

-Write to dir X

-Access queue y

Must set up a “Permission Set”Must set up a “Permission Set”• Contains exact permissions Contains exact permissions

the code group will havethe code group will have A Code Group can have one A Code Group can have one

Permission Set applied to itPermission Set applied to it

Setting up a Permission SetSetting up a Permission Set Wizard to create Code Group has option to Wizard to create Code Group has option to

create new Permission Setcreate new Permission Set Choose permissions from the following set:Choose permissions from the following set:

Directory ServicesDNSEvent LogEnvironment VariablesFile IOFile DialogIsolated Storage FileMessage QueueOLE DBPerformance Counter

PrintingRegistryReflectionSecurityService ControllerSocket AccessSQL ClientWeb AccessUser Interface

Demonstration of Configuring to Demonstration of Configuring to Access One Directory OnlyAccess One Directory Only

First, we’ll reset security permissions First, we’ll reset security permissions to the default and run the Internet-to the default and run the Internet-deployed programsdeployed programs•We’ll get a security exceptionWe’ll get a security exception

We’ll then set permissions to do only We’ll then set permissions to do only the following:the following:•ExecuteExecute•Display to the screenDisplay to the screen•Write to a particular directoryWrite to a particular directory

Presentation tierUser interface

Middle tierComponents, rules

Data tierRelational database

A tiered architecture for distributed A tiered architecture for distributed smart clientssmart clients

User InterfaceUser Interface

Data ValidationData Validation

Transport layerTransport layer

Business rulesBusiness rules

Data access layerData access layer

Data tier (database)Data tier (database)

Client machine

Application server

Database server

Web services / remoting

Bottleneck - .NET Framework Bottleneck - .NET Framework must be availablemust be available

Limiting factor in resurgence of the smart Limiting factor in resurgence of the smart client – the .NET Framework must be on all client – the .NET Framework must be on all client machinesclient machines

First candidates for distributed smart clients First candidates for distributed smart clients are corporate applications where control over are corporate applications where control over the desktop existsthe desktop exists

Later .NET Framework will become ubiquitousLater .NET Framework will become ubiquitous• Future O/S versionsFuture O/S versions• Service PacksService Packs• Other .NET applicationsOther .NET applications

SummarySummary The technology is now here to do The technology is now here to do

distributed smart client systemsdistributed smart client systems Competitive pressures will require Competitive pressures will require

adoption of those systemsadoption of those systems Proper architecture is essentialProper architecture is essential Stay flexible on the transport Stay flexible on the transport

mechanismmechanism Open your thinking to new smart Open your thinking to new smart

clientsclients

Questions?Questions?

Billy HollisBilly Hollis

Next Version Systems, LLCNext Version Systems, LLC

bhollis@dotnetmasters.combhollis@dotnetmasters.com

(615) 333-6555(615) 333-6555• Strategic and Strategic and

architectural consulting architectural consulting in .NETin .NET

• Focus on commercial Focus on commercial software developmentsoftware development

• In-depth training in .NETIn-depth training in .NET

Presenter - Billy HollisPresenter - Billy Hollisbhollis@dotnetmasters.combhollis@dotnetmasters.com