41
Death of the Death of the Browser? Browser? Billy Hollis Billy Hollis Next Version Systems, LLC Next Version Systems, LLC Presented for the Association of Presented for the Association of Information Technology Information Technology Professionals Professionals October 31, 2002 October 31, 2002

PowerPoint Slides (PPT)

  • Upload
    sammy17

  • View
    473

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PowerPoint Slides (PPT)

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

Page 2: PowerPoint Slides (PPT)

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

Page 3: PowerPoint Slides (PPT)

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

Page 4: PowerPoint Slides (PPT)

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

Page 5: PowerPoint Slides (PPT)

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!!

Page 6: PowerPoint Slides (PPT)

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

Page 7: PowerPoint Slides (PPT)

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

Page 8: PowerPoint Slides (PPT)

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

Page 9: PowerPoint Slides (PPT)

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

Page 10: PowerPoint Slides (PPT)

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

Page 11: PowerPoint Slides (PPT)

.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

Page 12: PowerPoint Slides (PPT)

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

Page 13: PowerPoint Slides (PPT)

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”

Page 14: PowerPoint Slides (PPT)

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

Page 15: PowerPoint Slides (PPT)

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

Page 16: PowerPoint Slides (PPT)

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

Page 17: PowerPoint Slides (PPT)

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

Page 18: PowerPoint Slides (PPT)

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

Page 19: PowerPoint Slides (PPT)

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

Page 20: PowerPoint Slides (PPT)

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()

Page 21: PowerPoint Slides (PPT)

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.)

Page 22: PowerPoint Slides (PPT)

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

Page 23: PowerPoint Slides (PPT)

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

Page 24: PowerPoint Slides (PPT)

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

Page 25: PowerPoint Slides (PPT)

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

Page 26: PowerPoint Slides (PPT)

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

Page 27: PowerPoint Slides (PPT)

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

Page 28: PowerPoint Slides (PPT)

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

Page 29: PowerPoint Slides (PPT)

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

Page 30: PowerPoint Slides (PPT)

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

Page 31: PowerPoint Slides (PPT)

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

Page 32: PowerPoint Slides (PPT)

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

Page 33: PowerPoint Slides (PPT)

.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

Page 34: PowerPoint Slides (PPT)

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

Page 35: PowerPoint Slides (PPT)

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

Page 36: PowerPoint Slides (PPT)

Presentation tierUser interface

Middle tierComponents, rules

Data tierRelational database

Page 37: PowerPoint Slides (PPT)

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

Page 38: PowerPoint Slides (PPT)

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

Page 39: PowerPoint Slides (PPT)

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

Page 40: PowerPoint Slides (PPT)

Questions?Questions?

Billy HollisBilly Hollis

Next Version Systems, LLCNext Version Systems, LLC

[email protected]@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

Page 41: PowerPoint Slides (PPT)

Presenter - Billy HollisPresenter - Billy [email protected]@dotnetmasters.com