Notes
Outline

Visual Basic .NET


Tim Marshall
Agenda
What is .NET?
Architectural Overview
Common Language Runtime
New Language Features of VB.NET
Core Language Features
VB and the Web
Architectural Overview
A New Generation Of Software From Microsoft
Third Generation Internet
Web Services
XML – A Key Ingredient
A universal data exchange format
Simple, open, broadly adopted
Contract for interactions between services
Enables powerful distributed apps
Impacts the evolution of all software
.NET Framework
Common Language Runtime
Multi-language development and integration
Secure, integrated class libraries
Facilitates Web services development
Integral SOAP support
Encapsulates Windows and COM+ services
ASP.NET
Takes ASP to the next level
Build Web sites or Web services
Framework, Languages, And Tools
Framework, Languages, And Tools
Common Language Runtime
CLR Outline
Common Language Runtime Goals
Design and Compile Time
Deployment Time
Execution Time
Summary
Simpler Development
Write less, reuse more
Broad, consistent framework
Classes as well as interfaces
Plumbing disappears
Metadata
Transparent proxies
Memory management
Great WYSIWYG tool support
Designers and wizards
Debuggers
Profilers
Simpler, Safer Deployment
No registration, zero impact install
XCOPY deployment, incremental download
Side-by-side versions of shared components
Capture version at compile time
Administrative policy at run time
Evidence-based security policy
Based on code as well as user
Code origin (location)
Publisher (public key)
Scalability
Smart device to Web farm
Automatic memory management
Thread pool
Asynchronous messaging
Object remoting
Events
Smart device version
Multiple RTOSes
Same tools used for desktop
Rich Web Clients,
Safe Web Hosting
Win Forms on the client
ASP.NET Web Forms on the server
Code is granted permissions
Evidence is used by policy to grant permissions
Application that starts runtime
Like Internet Explorer, IIS, SQL Server™, Shell
Provides some evidence
Controls code loading
Maps applications to processes
Multiple Languages
Common type system
Object-oriented in flavor
Procedural languages well-supported
Functional languages possible
CLS guides frameworks design
Rules for wide reach
All .NET Framework functionality available
Over 20 languages “under development”
Outline
Common Language Runtime Goals
Design and Compile Time
Deployment Time
Execution Time
Summary
Metadata
Key to simpler programming model
Generated automatically
Stored with code in executable file
(.dll or .exe)
Uses existing COFF format
Via existing extension mechanism
Stored in binary format
Convertible to/from XML Schema
Convertible to/from COM type libraries
What’s In The Metadata
Description of deployment unit (assembly)
Identity:  name, version, culture[, public key]
What types are exported
What other assemblies it depends on
Security permissions needed to run
Description of types
Name, visibility, base class, interfaces implemented
Members (methods, fields, properties, events, nested types)
Custom attributes
User-defined
Compiler-defined
Framework-defined
Metadata:  Creation And Use
Compilers Use Metadata
For cross-language data type import
Emit metadata with output code
Describe types defined and used
Record external assemblies referenced
Record version information
Custom attributes can be used
Obsolete
CLS compliance
Compiled for debugging
Language-specific markers
Outline
.NET Framework
Common Language Runtime Goals
Design and Compile Time
Deployment Time
Execution Time
Summary
Assemblies
Unit of deployment
One or more files, independent of packaging
Self-describing via metadata (“manifest”)
Versioning
Captured by compiler
Policy per-application as well as per-machine
Security boundary
Assemblies are granted permissions
Methods can demand proof that a permission
has been granted to entire call chain
Mediate type import and export
Types named relative to assembly
Applications
Applications are configurable units
One or more assemblies
Application-specific files or data
Assemblies are located based on…
Their logical name and
The application that loads them
Applications can have private versions of assemblies
Private version preferred over shared
Version policy can be per-application
CLR Outline
.NET Framework
Common Language Runtime Goals
Design and Compile Time
Deployment Time
Execution Time
Execution Model
Managed Code
Managed code provides...
Metadata describing data
Location of references to objects
Exception handling tables
So runtime can provide…
Exception handling
Security
Automatic lifetime management
Debugging and profiling
Compiling IL To Native
“Econo” JIT
Generates unoptimized native code
Code can be discarded and regenerated
“Standard” JIT
Generates optimized native code
Includes verification of IL code
Install time code generation
Done at install time
Reduces start-up time
Native code has version checks and reverts
to runtime JIT if they fail
Calling Unmanaged Code
COM Interop
Uses P/Invoke mechanism for calls
Object identity is maintained (IUnknown)
Selected COM interfaces automatically created
Types are automatically exported to COM and registered
COM type libraries can be converted
to metadata and imported
Many data types are automatically marshaled
Framework, Languages, And Tools
Framework Design Goals
Web standards and practices as the foundation
Unify application models
Make it simple to use
Factored and extensible
Web Standards/Practices
The .NET Framework supports
HTML, XML, SOAP, XSLT, XPath…
Internet Ready distributed apps
The traditional tightly connected, stateful model just doesn't work on the Web
The .NET Framework favors loosely connected, stateless Web Services
This affects everything
Base services, data access, UI, invocation/activation, programming model
Unify Programming Models
Make It Simple To Use
Organization
Code organized in hierarchical namespaces and classes
Unified type system
Everything is an object, no variants, one string type, all character data is Unicode
Component Oriented
Properties, methods, events, and attributes are first class constructs
Design-time functionality
The .NET Framework
Framework, Languages, And Tools
Languages
The .NET Platform is Language Neutral
All .NET languages are first class players
You can leverage your existing skills
Common Language Specification
Consumer: Can use the .NET Framework
Extender: Can extend the .NET Framework
Microsoft provides:
VB, C++, C#, Jscript, J# J
Third-parties are building
APL, COBOL, Pascal, Eiffel, Haskell, ML, Oberon, Perl, Python, Scheme, Smalltalk
Visual Basic.NET
First class player
VBRUN replaced by .NET Framework
Every feature of the .NET Framework is directly available
Substantial Language Innovation
Classes, inheritance, constructors, polymorphism, overloading, etc.
Structured exceptions
One form of assignment
Optional stricter type checking
Summary
Simpler…
Development, deployment, administration
Multi-language, secure, mobile code
All code compiled before execution
Not your traditional virtual machine!
Full interoperation with unmanaged code
COM, COM+ 1.0 Services, Win32®,
your DLLs
.