PowerPoint Slides (PPT)
-
Upload
sammy17 -
Category
Technology
-
view
474 -
download
0
Transcript of 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
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
[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
Presenter - Billy HollisPresenter - Billy [email protected]@dotnetmasters.com