Tools to Power Your Vision Tools to Power Your Vision
Aleksandrs LielbriedisAleksandrs LielbriedisMicrosoft LatviaMicrosoft Latvia
AgendaAgenda
New Features inNew Features in VS .NET 200 VS .NET 20033
Web Service EnhancementsWeb Service Enhancements
Code ObfuscatorCode Obfuscator
Application Center TestApplication Center Test
IIS 6.0IIS 6.0
.NET Framework.NET FrameworkPlatform and ToolsPlatform and Tools
Operating systemOperating systemOperating systemOperating system
Common language runtimeCommon language runtimeCommon language runtimeCommon language runtime
Base class libraryBase class libraryBase class libraryBase class library
ADO.NET and XMLADO.NET and XMLADO.NET and XMLADO.NET and XML
ASP.NETASP.NETWeb forms Web servicesWeb forms Web services
ASP.NETASP.NETWeb forms Web servicesWeb forms Web services
WindowsWindowsFormsForms
WindowsWindowsFormsForms
Common language specificationCommon language specificationCommon language specificationCommon language specification
VisualVisual BasicBasic®®
VisualVisual BasicBasic®® C++C++C++C++ C#C#C#C# J#J#J#J# …………
Visu
al S
tud
io .N
ET
Visu
al S
tud
io .N
ET
Visu
al S
tud
io .N
ET
Visu
al S
tud
io .N
ET
.NET Framework version 1.1.NET Framework version 1.1
Increased scalability and performanceIncreased scalability and performance
Side-by-side execSide-by-side exec with with .NET Framework 1.0.NET Framework 1.0
NNo-touch deploymento-touch deployment from the Internet from the Internet
Code access security for ASP.NETCode access security for ASP.NET
ASP.NET ASP.NET Mobile ControlsMobile Controls
SSupport for ODBC and Oracle DB 7i and 8iupport for ODBC and Oracle DB 7i and 8i
IPv6IPv6
IIncluded with Windowsncluded with Windows®® Server 2003 Server 2003
Windows Server 2003Windows Server 2003with with .NET .NET FrameworkFramework 1.1 1.1
- application server errors - application server errors beyondbeyond
ASP.NET Mobile ASP.NET Mobile ControlsControls
Build-in Mobile DevelopmentBuild-in Mobile Development
Mobile Web PagesMobile Web PagesLocal CodeLocal Code
.NET Compact .NET Compact FrameworkFramework
Device operating systemDevice operating system
Mobile Web Mobile Web browserbrowser
Smart Device Smart Device ProgrammabilityProgrammability
One programming modelOne programming model
One development toolOne development tool
One set of skillsOne set of skills
Build-in Mobile DevelopmentBuild-in Mobile Development
Broad-reach Web applicationsBroad-reach Web applicationsVisual Studio .NETVisual Studio .NET
ASP.NET Mobile Web ControlsASP.NET Mobile Web Controls
Over 200 device modelsOver 200 device models
Smart device applicationsSmart device applicationsVisual Studio .NETVisual Studio .NET
Microsoft .NET Compact Microsoft .NET Compact FrameworkFramework
Pocket PC, Windows CE .NETPocket PC, Windows CE .NET
WWW
Increased IDE PerformanceIncreased IDE Performance
Startup time reducedStartup time reduced
Improved IntelliSenseImproved IntelliSense®®
Dynamic help faster Dynamic help faster
Object browser fasterObject browser faster
Code editor drop-down menus fasterCode editor drop-down menus faster
Upgrading ApplicationsUpgrading Applications
Run multiple version of Visual Studio Run multiple version of Visual Studio side-by-side:side-by-side:
Visual Studio 6.0Visual Studio 6.0
Visual Studio .NET 2002Visual Studio .NET 2002
Visual Studio .NET 2003Visual Studio .NET 2003
Upgrade from Visual Studio .NET 2002 Upgrade from Visual Studio .NET 2002 to Visual Studio .NET 2003to Visual Studio .NET 2003
Only the project files are updatedOnly the project files are updated
Doesn’t change Doesn’t change anyany of your source files of your source files
Application configuration Application configuration
VB 6.0 UpgradingVB 6.0 Upgrading
Form layoutForm layout
ActiveXActiveX®® controls controls
ADO bindingADO binding
RES filesRES files
CodeCode
COM librariesCOM libraries
User controlsUser controls
Web classesWeb classes
J#J#
Visual J++ and Java Visual J++ and Java UpgradingUpgrading
Visual J++ Visual J++ Project Project
Other Java-Other Java-language language
sourcesource C#C#Java Language Java Language Conversion AssistantConversion Assistant
.class files.class files .exe.exe.dll.dll
Jblmp.exeJblmp.exe
Productivity EnhancementsProductivity Enhancements
Enhanced “Add Web Reference” dialogEnhanced “Add Web Reference” dialog
Code editor enhancementsCode editor enhancements
New componentsNew components
Debugging enhancementsDebugging enhancements
Designer enhancementsDesigner enhancementsSchema designer zoomSchema designer zoom
Mobile Web form designerMobile Web form designer
Developer Productivity Developer Productivity LanguagesLanguages
Visual Basic .NETVisual Basic .NETFully object-orientedFully object-oriented
Free threading, structured exception handlingFree threading, structured exception handling
Host Visual Basic 6.0 controls in Windows Forms applicationsHost Visual Basic 6.0 controls in Windows Forms applications
Improved IntelliSense and debuggerImproved IntelliSense and debugger
Variable declaration in loopsVariable declaration in loops
Bitshift operatorsBitshift operators
Mobile applicationsMobile applications
MicrosoftMicrosoft® ® Visual C++Visual C++®® .NET .NETManaged extensions for C++Managed extensions for C++
ISO C++ conformance ISO C++ conformance
Windows Forms designer Windows Forms designer
Enhanced floating point and performance optimizationsEnhanced floating point and performance optimizations
P4 targetingP4 targeting
Note: Items in green are new in Note: Items in green are new in Visual Studio .NET 2003Visual Studio .NET 2003
LanguagesLanguages
MicrosoftMicrosoft®® Visual C# Visual C# ®® .NET (new in 2002) .NET (new in 2002)Component-oriented, type-safeComponent-oriented, type-safe
Improved IntelliSenseImproved IntelliSense
Custom build stepsCustom build steps
Code insertion for common tasksCode insertion for common tasks
Mobile applicationsMobile applications
MicrosoftMicrosoft®® Visual J# Visual J#™™ .NET .NETJava-language syntaxJava-language syntax
Full integration with Visual Studio .NETFull integration with Visual Studio .NET
Easy way to move Java-language skills, code to the .NET Easy way to move Java-language skills, code to the .NET FrameworkFramework
Full access to the .NET FrameworkFull access to the .NET Framework
Note: Items in green are new in Note: Items in green are new in Visual Studio .NET 2003Visual Studio .NET 2003
Productivity and Productivity and Language EnhancementsLanguage Enhancements
Web Service Enhancements Web Service Enhancements
WS-I: Web service interoperabilityWS-I: Web service interoperabilityIndustry organization: Microsoft, IBM, Intel…Industry organization: Microsoft, IBM, Intel…
Industry standard specificationsIndustry standard specificationsSecurity (WS-Security)Security (WS-Security)
Transactions (WS-Transaction)Transactions (WS-Transaction)
Routing (WS-Routing)Routing (WS-Routing)
More in the futureMore in the future
WSE: Microsoft implementation of WS-IWSE: Microsoft implementation of WS-IEnhancements to ASP.NET Web servicesEnhancements to ASP.NET Web services
Develop using Visual Studio .NETDevelop using Visual Studio .NET
Web Service Enhancements Web Service Enhancements
Signing
Encrypting
Routing
Only A can decrypt the message
Web Service Web Service EnhancementsEnhancements
ObfuscatorObfuscator
Microsoft ACTMicrosoft ACT
ACT is a web stress tool designed to ACT is a web stress tool designed to simulate a high volume of HTTP simulate a high volume of HTTP requestsrequests
Test applications or web services as Test applications or web services as they are being developedthey are being developed
Discovers bottlenecks and provides Discovers bottlenecks and provides performance informationperformance information
Not a multiple client tool (developer Not a multiple client tool (developer only)only)
Creating an ACT testCreating an ACT test
Manually create testsManually create tests
Browser recording testsBrowser recording tests
Setting the test propertiesSetting the test propertiesSimultaneous browser connectionsSimultaneous browser connections
Run time or iterationsRun time or iterations
Adding dynamic dataAdding dynamic data
Changing request data makes the Changing request data makes the simulation more accuratesimulation more accurate
You can modify any part of the request You can modify any part of the request or responseor response
Query stringsQuery strings
Controlling the current userControlling the current user
CookiesCookies
ASP.NET view stateASP.NET view state
SecuritySecurity
Authentication schemes supported:Authentication schemes supported:
BasicBasic
Integrated WindowsIntegrated Windows
DigestDigest
PassportPassport
FormsForms
Encryption types supportedEncryption types supported
Secure Socket LayerSecure Socket Layer
Using SOAPUsing SOAP
SOAP request can be obtained from SOAP request can be obtained from the web service help pagethe web service help page
You’ll need to format the SOAP request You’ll need to format the SOAP request to be properly encodedto be properly encoded
Utilize Visual Studios built-in macro Utilize Visual Studios built-in macro recorderrecorder
Creating an ACT TestCreating an ACT Test
Analyzing the resultsAnalyzing the results
Getting performance information is an Getting performance information is an iterative processiterative process
Stand-alone ACT interface has better Stand-alone ACT interface has better reportingreporting
Saturation pointSaturation pointProcessor, memory, disk, network, Processor, memory, disk, network, backendbackend
Response time: TTLB of 10,000 msResponse time: TTLB of 10,000 ms
Watch client CPU utilization!Watch client CPU utilization!
Decreasing requests/secondDecreasing requests/second
MHz cost formulaMHz cost formula for a Page for a Page
Mhz Cost = N * S * avg (CPU) / avg(RPS)Mhz Cost = N * S * avg (CPU) / avg(RPS)
Where:Where:
N = Number of ProcessorsN = Number of Processors
S = Speed of ProcessorsS = Speed of Processors
CPU = Processor: % CPU UtilizationCPU = Processor: % CPU Utilization
RPS = ASP.NET: Requests/SecondRPS = ASP.NET: Requests/Second
MHz cost formula explainedMHz cost formula explained
A test using a 2 processor web server A test using a 2 processor web server achieved 80 requests per second, with achieved 80 requests per second, with the processors 70% utilizedthe processors 70% utilized
So, this works out to …So, this works out to …
2 processors * 700 MHz = 1,400 MHz2 processors * 700 MHz = 1,400 MHz
70% CPU utilization = (1,400) * (0.70) = 70% CPU utilization = (1,400) * (0.70) = 980 MHz available to use980 MHz available to use
80 ASP requests per second 980/80 = 80 ASP requests per second 980/80 =
12.25 MHz12.25 MHz per ASPx request per ASPx request
Performance countersPerformance counters
ProcessorProcessorProcessor, % CPU UtilizationProcessor, % CPU Utilization
MemoryMemorySystem, Context Switches/SecSystem, Context Switches/Sec
Network bandwidthNetwork bandwidthNetwork interface, Bytes Total/SecNetwork interface, Bytes Total/Sec
DiskDiskPhysical Disk, % Disk Time_TotalPhysical Disk, % Disk Time_Total
Backend resourceBackend resourceASP.NET, Requests QueuedASP.NET, Requests Queued
Performance tipsPerformance tips
Try to use a dedicated web server for Try to use a dedicated web server for testingtesting
Use SQLDataReader for SQL Server Use SQLDataReader for SQL Server data access, not the OleDB readerdata access, not the OleDB reader
Turn off debug mode when not usingTurn off debug mode when not using
Turn off view state where its not Turn off view state where its not neededneeded
Turn off session state if not neededTurn off session state if not needed
Performance tips (cont.)Performance tips (cont.)
Pre-batch compile - request a page Pre-batch compile - request a page from the web applicationfrom the web application
Running code in both managed and Running code in both managed and unmanaged worlds is expensiveunmanaged worlds is expensive
Cache items that have a long Cache items that have a long expirationexpiration
Use a Repeater instead of a DataGrid Use a Repeater instead of a DataGrid control – its less expensivecontrol – its less expensive
web web appapp
Making Your .NET Apps More Reliable Making Your .NET Apps More Reliable A New Architecture for IIS6A New Architecture for IIS6
GOAL: enable complete GOAL: enable complete app isolation from other app isolation from other web apps and core web web apps and core web serverserver
Web service in INETINFO Web service in INETINFO split out to do this:split out to do this:
HTTP.SYS: kernel mode HTTP.SYS: kernel mode listener and request routerlistener and request router
WAS: config and process WAS: config and process managermanager
W3WP.exe: where web apps W3WP.exe: where web apps are processedare processed
Multiple W3WP.exe’sMultiple W3WP.exe’s
WASWAS W3WP.exeW3WP.exe
web web appapp
HTTP.SYSHTTP.SYS
kern
elke
rnel
W3WP.exeW3WP.exe
web web appapp
W3WP.exeW3WP.exe
web web appapp
Making Your .NET Apps More ReliableMaking Your .NET Apps More ReliableApplication PoolsApplication Pools
Can create 1 or Can create 1 or more application more application poolspools
Each served by 1 or Each served by 1 or more W3WP.exe’s.more W3WP.exe’s.
Each W3WP.exe serves Each W3WP.exe serves only 1 pool.only 1 pool.
Reqs routed directly to Reqs routed directly to pool by HTTP.syspool by HTTP.sys
Isolate apps based Isolate apps based on:on:
Site/CustomerSite/Customer
FunctionalityFunctionality
ReliabilityReliability
Making Your .NET Apps More Reliable Making Your .NET Apps More Reliable .NET Application Domains vs Application Pools.NET Application Domains vs Application Pools
Application DomainsApplication DomainsLightweight CLR unit of isolationLightweight CLR unit of isolation
One app domain per IIS applicationOne app domain per IIS application
Combine w/W3WP.exe’s to achieve Combine w/W3WP.exe’s to achieve high scalability and isolationhigh scalability and isolation
ASP.NET manages app domains ASP.NET manages app domains independentlyindependently
Recycled within a single processRecycled within a single process
Can have private components, Can have private components, session variables , etc.session variables , etc.
HTTP.SYSHTTP.SYS
W3WP.exeW3WP.exe
ASP.NETASP.NETWASWAS
App poolApp pool
W3WP.exeW3WP.exe
ASP.NETASP.NET
AppApp
DomainDomainAppApp
DomainDomainAppApp
DomainDomainAppApp
DomainDomainAppApp
DomainDomainAppApp
DomainDomainAppApp
DomainDomainAppApp
DomainDomain
Application PoolApplication Pool
W3WP.exeW3WP.exe
ASP.NETASP.NET
App poolApp pool
Making Your .NET Apps More ReliableMaking Your .NET Apps More ReliablePeriodic Process RecyclingPeriodic Process Recycling
What is it?What is it?Periodically restart Periodically restart applications based on:applications based on:
UptimeUptime
# of requests# of requests
Scheduled timeScheduled time
Memory consumptionMemory consumption
On-demandOn-demand
Why use it?Why use it?Refresh apps to ensure Refresh apps to ensure availabilityavailability
Prevent bad apps from Prevent bad apps from taking over the systemtaking over the system
Making Your .NET Apps More ReliableMaking Your .NET Apps More ReliableDynamic Kernel CachingDynamic Kernel Caching
GET http://www.acme.com/store/sproketcatalog.aspxGET http://www.acme.com/store/sproketcatalog.aspx
Cache
Network Stack
HTTP.SYS
W3WP.EXE (IIS6.0)
ASP.NET/CLR
User Application
UserKernel
Database
RequestRequestResponseResponse
WithoutWithoutCacheCache
Cache
Network Stack
HTTP.SYS
W3WP.EXE (IIS6.0)
ASP.NET/CLR
User Application
UserKernel
Database
WithWithCacheCache
RequestRequest ResponseResponse
<%@ OutputCache Duration="10" VaryByParam="none" %>
SummarySummary
More “in the box”More “in the box”
Developer productivity enhancementsDeveloper productivity enhancements
Java developers can develop for .NET Java developers can develop for .NET platformplatform
Web Service EnhancementsWeb Service Enhancements
Stress test your ASP.NET applicationsStress test your ASP.NET applications
Protect your intelectual propertyProtect your intelectual property
IIS 6.0IIS 6.0
ASP.NET HostingASP.NET Hosting
http://www.dot-net.lvhttp://www.dot-net.lv
http://dotnet.asp.lvhttp://dotnet.asp.lv
© 2003 Microsoft Corporation. All rights reserved.© 2003 Microsoft Corporation. All rights reserved.Microsoft, Windows, the Windows logo, Visual Studio, the Visual Studio logo, BizTalk, Visual SourceSafe, Visio, IntelliSense, Visual Basic, Visual J++, Visual C++, and Visual Microsoft, Windows, the Windows logo, Visual Studio, the Visual Studio logo, BizTalk, Visual SourceSafe, Visio, IntelliSense, Visual Basic, Visual J++, Visual C++, and Visual C# are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. The names of actual companies and products C# are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. The names of actual companies and products mentioned herein may be the trademarks of their respective owners.mentioned herein may be the trademarks of their respective owners.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.