building mobile web applications with asp.net mike pelton [email protected] developer &...
TRANSCRIPT
Building Mobile Web Building Mobile Web ApplicationsApplicationsWith ASP.NETWith ASP.NET
Mike PeltonMike [email protected]@microsoft.comDeveloper & Platform GroupDeveloper & Platform GroupMicrosoft Ltd.Microsoft Ltd.
The Ever-The Ever-Broadening Broadening Spectrum of Spectrum of DevicesDevices
New Business ModelsNew Business Models
Using XML Web servicesUsing XML Web services
New models for user New models for user interactioninteraction
Hardware TrendsHardware TrendsCheaper, lighter, Cheaper, lighter, smaller…smaller…
More integrated More integrated wirelesswireless
GPRS,GPRS,
WiFi…WiFi…
New Form factorsNew Form factors
DisplayDisplayUSB or SerialUSB or Serial
ProcessorProcessorMemoryMemory
GSM/GPRSGSM/GPRSCDMA/1xRTTCDMA/1xRTT
Device Device HardwarHardwaree
WiFiWiFiBluetoothBluetooth
RadioRadio
DriversDrivers
Windows MobileWindows Mobile CE DBCE DBActiveSyncActiveSync
Pocket OutlookPocket OutlookPocket Internet ExplorerPocket Internet ExplorerWindows Media PlayerWindows Media Player
Windows CEWindows CE
Software Platform (APIs)Software Platform (APIs)
Home ScreenHome ScreenUser User Interface/ShellInterface/ShellHTML ControlHTML Control
GAPIGAPIRemote APIRemote APIConfigurationConfigurationBluetoothBluetooth
Connection ManagerConnection Manager TAPITAPISMS SMS MAPI MAPI POOMPOOM
MultimediaMultimediaCommunicatioCommunicationn
Device ManagementDevice Management PresentationPresentation
ADO CEADO CEXMLXMLCE DBCE DBOLE DBOLE DB
Data AccessData Access
NativeNative
Win32Win32
MFCMFC ATLATL
ManagedManaged
.NET Compact.NET CompactFrameworkFramework
Server sideServer side
ASP .NETASP .NETMobile ControlsMobile Controls
NativeNative
Win32Win32
MFCMFC ATLATL
ManagedManaged
.NET Compact.NET CompactFrameworkFramework
Server sideServer side
ASP .NETASP .NETMobile ControlsMobile Controls
Windows Mobile Development Windows Mobile Development PlatformPlatform
Embedded VC++Embedded VC++ Visual Studio .NETVisual Studio .NET
Key ConceptsKey ConceptsTwo Sides of the Same CoinTwo Sides of the Same Coin
Adaptive renderingAdaptive renderingMobile controls and device adapters Mobile controls and device adapters generate an appropriate rendering for generate an appropriate rendering for each device each device automaticallyautomatically
CustomisationCustomisationProgrammatic model to customise the Programmatic model to customise the rendering for a particular device.rendering for a particular device.
Why?Why?
Building Mobile Web ApplicationsBuilding Mobile Web ApplicationsThe Adaptive Rendering ProcessThe Adaptive Rendering Process
1. HTTP1. HTTPrequestrequest
2. ASP.NET 2. ASP.NET processingprocessing
3. ASP.NET 3. ASP.NET resultresult
4. Adaptive4. Adaptive
responseresponse
Returned as Returned as proper browser proper browser protocolprotocol• HTMLHTML• cHTMLcHTML• WMLWML• XHTMLXHTML
Render ASPX Render ASPX pagepage• Process pageProcess page• Each control Each control builds its own builds its own layoutlayout
Discover Discover device device capabilitiescapabilities• Height and Height and widthwidth• ColorColor• ImagesImages• Phone call Phone call abilityability
A Brief Aside…A Brief Aside…Cookieless SessionsCookieless Sessions
Session State no longer requires client Session State no longer requires client cookie support for SessionIDcookie support for SessionID
Can optionally track SessionID in URLCan optionally track SessionID in URL
Requires no code changes to the Requires no code changes to the applicationapplication
All relative links continue to workAll relative links continue to work
Cookieless SessionsCookieless SessionsHow To…How To…1.1. Create/Edit “web.config” file in the Create/Edit “web.config” file in the
vrootvroot
2.2. Add following text:Add following text:<configuration>
<system.web>
<sessionState cookieless=“true”/>
</system.web>
</configuration>
Adaptive RenderingAdaptive Rendering
Device Support – 200+ Device Support – 200+ DevicesDevicesACCESS Compact: ACCESS Compact: NetFront 2.0, Fujitsu F503i, Mitsubishi D502i, Mitsubishi D503i, NEC NetFront 2.0, Fujitsu F503i, Mitsubishi D502i, Mitsubishi D503i, NEC N210i, NEC N502i, Sony SO503iN210i, NEC N502i, Sony SO503iEricsson 2.0:Ericsson 2.0: Ericsson R380, Ericsson R320, Ericsson R520m, Ericsson T20s Ericsson R380, Ericsson R320, Ericsson R520m, Ericsson T20sGoAmerica Go.Web:GoAmerica Go.Web: Compaq iPAQ H3650, Palm Vx, RIM Blackberry 857, RIM Blackberry Compaq iPAQ H3650, Palm Vx, RIM Blackberry 857, RIM Blackberry 950, RIM Blackberry 957, 950, RIM Blackberry 957, Microsoft Mobile Explorer:Microsoft Mobile Explorer: Sony CMD-Z5, Sony CMD-J5, Benefon Q, Sony CMD-Z5, Sony CMD-J5, Benefon Q, Microsoft Pocket Internet Explorer:Microsoft Pocket Internet Explorer: Casio Cassiopeia E-125, Compaq iPAQ H3630, Casio Cassiopeia E-125, Compaq iPAQ H3630, Compaq iPAQ H3650, HP Jornada 720, Compaq iPAQ H3670Compaq iPAQ H3650, HP Jornada 720, Compaq iPAQ H3670Nokia:Nokia: Nokia 3330, Nokia 6210, Nokia 7110, Nokia 9110i Nokia 3330, Nokia 6210, Nokia 7110, Nokia 9110iOpenwave UP.Browser 3.x:Openwave UP.Browser 3.x: Audiovox CDM-9000, Ericsson R280LX, Hitachi C407H, Audiovox CDM-9000, Ericsson R280LX, Hitachi C407H, Kyocera QCP 2035A, Kyocera QCP 3035, LG V111, Mitsubishi T250, Motorola StarTAC Kyocera QCP 2035A, Kyocera QCP 3035, LG V111, Mitsubishi T250, Motorola StarTAC 7868W, Motorola TimePort P8767, Samsung SCH-6100, Samsung SCH-850, Samsung 7868W, Motorola TimePort P8767, Samsung SCH-6100, Samsung SCH-850, Samsung SCH-8500, Samsung UpRoar M100, Sanyo C401SA, Sanyo SCP-4500, Sanyo SCP-5000, SCH-8500, Samsung UpRoar M100, Sanyo C401SA, Sanyo SCP-4500, Sanyo SCP-5000, Sprint Touchpoint, Sprint Touchpoint 2200, Sprint Touchpoint 3000Sprint Touchpoint, Sprint Touchpoint 2200, Sprint Touchpoint 3000Openwave UP.Browser 4.x:Openwave UP.Browser 4.x: Alcatel One Touch 701, Audiovox CDM-135, Audiovox CDM- Alcatel One Touch 701, Audiovox CDM-135, Audiovox CDM-9100, Motorola i1000plus, Motorola i2000plus, Motorola i50sx, Motorola i85s, Motorola 9100, Motorola i1000plus, Motorola i2000plus, Motorola i50sx, Motorola i85s, Motorola T2288, Motorola TimePort P7382i, Motorola TimePort P7389, Motorola V100, Motorola T2288, Motorola TimePort P7382i, Motorola TimePort P7389, Motorola V100, Motorola V120c, Motorola V2288, Motorola V60c, Siemens C35i, Siemens S35i, Siemens SL45V120c, Motorola V2288, Motorola V60c, Siemens C35i, Siemens S35i, Siemens SL45Miscellaneous Browsers:Miscellaneous Browsers: Handspring Visor Platinum (Qualcomm Eudora Internet Suite Handspring Visor Platinum (Qualcomm Eudora Internet Suite 2.1; Blazer 1.0 and Omnisky 2.1.0.15), IBM WorkPad c505 (ilinx Xiino 1.01J), Kyocera 2.1; Blazer 1.0 and Omnisky 2.1.0.15), IBM WorkPad c505 (ilinx Xiino 1.01J), Kyocera QCP 6035 (Qualcomm Eudora 2.0), Nokia 9210 (Symbian Crystal 6.0), Palm VII (MyPalm QCP 6035 (Qualcomm Eudora 2.0), Nokia 9210 (Symbian Crystal 6.0), Palm VII (MyPalm 1.0), Palm Vx (AU-Systems 2.12181.1 and Omnisky 2.0.04), Palm m505 (MyPalm 1.1), 1.0), Palm Vx (AU-Systems 2.12181.1 and Omnisky 2.0.04), Palm m505 (MyPalm 1.1), Panasonic P210i, Panasonic P502i, Sharp J-SH04 (Original Equipment Manufacturer's Panasonic P210i, Panasonic P502i, Sharp J-SH04 (Original Equipment Manufacturer's Version 3.0), Sharp Zaurus MI-E1 (Original Equipment Manufacturer's Version 6.1), Sony Version 3.0), Sharp Zaurus MI-E1 (Original Equipment Manufacturer's Version 6.1), Sony CLIE PEG-N700C (ilinz Palmscape 4.0SJ), Toshiba J-T05 (Original Equipment CLIE PEG-N700C (ilinz Palmscape 4.0SJ), Toshiba J-T05 (Original Equipment Manufacturer's Version 3.0), Manufacturer's Version 3.0),
IISIIS.NET Framework.NET Framework
Mobile Internet ToolkitMobile Internet ToolkitDevelopment Development EnvironmentEnvironment ProductionProduction
CreateCreate mobile Web Formmobile Web Form
IntegrateIntegrateBusiness LogicBusiness Logic
Mobile Mobile PresentationPresentation
Layer (controls)Layer (controls)
Test Test Target DevicesTarget Devices
Post toPost toWeb ServersWeb Servers
HTTPHTTPRequestRequest
DeviceDeviceCapabilitiesCapabilities
Mobile Controls Mobile Controls andand
Device AdaptersDevice Adaptersgenerate displaygenerate display
AddAddDevice AdaptersDevice Adapters
Update DeviceUpdate DeviceCapabilitiesCapabilities
HTTPHTTPResponseResponse
Mobile.aspxMobile.aspxPagesPages
The LifecycleThe Lifecycle
Customising for Particular Customising for Particular DevicesDevicesWhy?Why?
Optimise the generated renderingOptimise the generated rendering
Per device or class of devicePer device or class of device
Used on a per application basisUsed on a per application basis
Comparison- or Evaluator-based filtersComparison- or Evaluator-based filters
Control the exact display Control the exact display
Ability to override default behaviorAbility to override default behavior
Device-Specific Device-Specific Customisation Customisation Property OverridesProperty Overrides
Change the property value of a Change the property value of a control only on certain devicescontrol only on certain devices
Example: Set the Text property of a Example: Set the Text property of a Label control to a long string on large Label control to a long string on large screen devices, and to a short string on screen devices, and to a short string on small screen devicessmall screen devices
Device-Specific Device-Specific Customisation Customisation Using Property OverridesUsing Property Overrides
In persistence formatIn persistence format
In codeIn code
<mobile:Label id="Label2" Runat="server" Font-Bold="True"><mobile:Label id="Label2" Runat="server" Font-Bold="True"> <DeviceSpecific><DeviceSpecific> <Choice Filter="isPocketIE" <Choice Filter="isPocketIE" Text="...Breaking News - Breaking News...">Text="...Breaking News - Breaking News..."> </Choice></Choice> <Choice Text="News Just In! "></Choice><Choice Text="News Just In! "></Choice> </DeviceSpecific> </DeviceSpecific> </mobile:Label></mobile:Label>
MobileCapabilities cap = MobileCapabilities cap = (MobileCapabilities)Request.Browser;(MobileCapabilities)Request.Browser;if (cap.HasCapability(“isPocketIE“, null))if (cap.HasCapability(“isPocketIE“, null)){{ Label2.Text = "...Breaking News - Breaking News...“; Label2.Text = "...Breaking News - Breaking News...“; }}Else Label2.Text = "News Just In! ";Else Label2.Text = "News Just In! ";
Defining Device FiltersDefining Device Filters
All customisation with Property All customisation with Property Overrides and Templates relies on Overrides and Templates relies on device filtersdevice filters
Visual Studio .NET creates a default Visual Studio .NET creates a default set of device filters in Web.configset of device filters in Web.config <deviceFilters><deviceFilters>
<filter name="isHTML32" compare="PreferredRenderingType" <filter name="isHTML32" compare="PreferredRenderingType" argument="html32" />argument="html32" /> <filter name="isWML11" compare="PreferredRenderingType" <filter name="isWML11" compare="PreferredRenderingType" argument="wml11" />argument="wml11" /> <filter name="isPocketIE" compare="Browser" <filter name="isPocketIE" compare="Browser" argument="Pocket IE" />argument="Pocket IE" /> <filter name="prefersGIF" compare="PreferredImageMIME" <filter name="prefersGIF" compare="PreferredImageMIME" argument="image/gif" />argument="image/gif" /> <filter name="prefersWBMP" compare="PreferredImageMIME" <filter name="prefersWBMP" compare="PreferredImageMIME" argument="image/vnd.wap.wbmp" />argument="image/vnd.wap.wbmp" /> ...... </deviceFilters></deviceFilters>
FilteringFiltering
Customisation - TemplatesCustomisation - TemplatesObjectList ControlObjectList Control
Header Header TemplateTemplate
Item TemplateItem Template
AlternateItemAlternateItemTemplateTemplate
FooterFooterTemplateTemplate
SeparatorSeparatorTemplateTemplate
Pocket PC Pocket PC CustomisationCustomisation
Cell Phone Limited Cell Phone Limited CustomisationCustomisation
ItemDetailsItemDetailsTemplateTemplate
DataBinder.Eval(((ObjectListItem)Container).DataItem, “FirstName”)
Using XML Web Services Using XML Web Services and the Object Listand the Object List
XHTML Browsers And CSSXHTML Browsers And CSS
Cascading Style Sheets (CSS)Cascading Style Sheets (CSS)The best way to define presentationThe best way to define presentation
Separates presentation from contentSeparates presentation from content
W3C recommendation (CSS1)W3C recommendation (CSS1)
Supported by major desktop browsersSupported by major desktop browsers
CSS is also supported by the latest mobile devicesCSS is also supported by the latest mobile devicesPocket Internet Explorer on SmartPhone 2003 supports Pocket Internet Explorer on SmartPhone 2003 supports HTML 4.01, XHTML-Basic, and CSS1HTML 4.01, XHTML-Basic, and CSS1
WAP 2.0 devices support XHTML-MP and Wireless CSS WAP 2.0 devices support XHTML-MP and Wireless CSS (Nokia Series 60, Sony-Ericsson Smartphones)(Nokia Series 60, Sony-Ericsson Smartphones)
ASP.NET Mobile Controls Runtime ASP.NET Mobile Controls Runtime Supports XHTML browsers in Device Update 2 and laterSupports XHTML browsers in Device Update 2 and later
Generates CSS style sheet dynamically from standard Generates CSS style sheet dynamically from standard mobile mobile style propertiesstyle properties
Programming CSS Programming CSS StylesheetsStylesheets
Create a style sheet in your Create a style sheet in your projectproject
.Subhead.Subhead{{ font-weight: bold;font-weight: bold; font-size: smaller;font-size: smaller; color: orangered;color: orangered;}}
<mobile:Form id="Form1" runat="server"<mobile:Form id="Form1" runat="server" csslocation="stylesheet1.css“ … > csslocation="stylesheet1.css“ … >
<system.web><system.web> <mobileControls allowCustomAttributes="true“ /> <mobileControls allowCustomAttributes="true“ /> </system.web> </system.web>
Add CSSLocation attribute to Add CSSLocation attribute to <mobile:Form> tag pointing at stylesheet<mobile:Form> tag pointing at stylesheet
Set allowCustomAttributes=“true” in Set allowCustomAttributes=“true” in web.configweb.config
Programming CSS Programming CSS StylesheetsStylesheets
Use CssClass attribute to apply a Use CssClass attribute to apply a style class in the style sheet to a style class in the style sheet to a controlcontrol
Other attributesOther attributesCssCommandClass: Use with ObjectList CssCommandClass: Use with ObjectList to style the command linkto style the command linkCssLabelClass: Use with ObjectList to CssLabelClass: Use with ObjectList to style the style the label fieldslabel fieldsCssPagerClass: Use with Form to style CssPagerClass: Use with Form to style pagination promptspagination prompts
<mobile:label id="Label1" runat=“server”<mobile:label id="Label1" runat=“server” cssclass=“Subhead" >cssclass=“Subhead" > This label uses the style from the CSS!This label uses the style from the CSS!</mobile:label></mobile:label>
Using CSSUsing CSS
Speech On The Mobile Speech On The Mobile Web?Web?Why Bother?Why Bother?Hands-freeHands-free
Eyes-freeEyes-free
When speech is faster or easierWhen speech is faster or easier
For what?For what?Data EntryData Entry
Query the user verballyQuery the user verbally
Get input verballyGet input verbally
Command and controlCommand and controlSay what you want rather than clicking through menusSay what you want rather than clicking through menus
Searching through dataSearching through dataEver tried sifting through 3,000 rows with a stylus?Ever tried sifting through 3,000 rows with a stylus?
NotificationsNotifications
SALT And ‘Speech Tags’SALT And ‘Speech Tags’
SSpeech peech AApplication pplication LLanguage anguage TTagsagsExtends HTML, XHTML etc.Extends HTML, XHTML etc.
Enables multimodal (speech + GUI) and Enables multimodal (speech + GUI) and telephony applicationstelephony applications
Object and event modelObject and event model, s, script for dialog cript for dialog managementmanagement
Standard being driven by SALT ForumStandard being driven by SALT ForumFounded 10.1.01: Cisco, Comverse, Intel, Founded 10.1.01: Cisco, Comverse, Intel, Microsoft, Philips, SpeechworksMicrosoft, Philips, Speechworks
Speech Tags OverviewSpeech Tags Overview
<prompt ><prompt > configures speech configures speech synthesizer synthesizer and and plays out recorded plays out recorded promptsprompts
<reco ><reco > configures and executes configures and executes speech speech recognizer, handles eventsrecognizer, handles events
<grammar > <grammar > specifies recognition specifies recognition resourcesresources
<bind ><bind > binds recognition results to binds recognition results to pagepage
<dtmf ><dtmf > specifies telephone keypad specifies telephone keypad inputinput
Call Control objectCall Control objectexecutes call transfer, conference, etc. executes call transfer, conference, etc.
handles events (answer, hangup etc.)handles events (answer, hangup etc.)
Speech ServerSpeech Server
Application Application DeploymentDeployment
ASP.NET Web ServerASP.NET Web Server
Speech ControlsSpeech Controls
PSTNPSTNPSTNPSTN
Microsoft® Speech Application SDK
+ Visual Studio® .NET
Microsoft® Speech Application SDK
+ Visual Studio® .NET
Development Development WorkstationWorkstation
Development Development WorkstationWorkstation
Server-side speech recognition and Server-side speech recognition and prompting over 802.11prompting over 802.11
IntelIntel®® Dialogic Dialogic®® Telephony CardTelephony Card
Third-party TelephonyInterface Manager (TIM)Third-party Telephony
Interface Manager (TIM)
Speech Engine Services (SES)
Telephony Application
Services (TAS)
Microsoft Speech Server
GrammarsGrammars
PromptsPrompts
Web PagesWeb Pages
HTML + SALT + HTML + SALT + Script via WebScript via Web
HTML + SALT +
HTML + SALT +
Script v
ia Web
Script v
ia Web
Microsoft Speech Serverosoft Speech Server
Speech Engine ServicesSpeech Engine Services
Powerful, server-based speech Powerful, server-based speech processingprocessing
Speech RecognitionSpeech Recognition~100 to ~1000 times the grammar ~100 to ~1000 times the grammar processing potential of a deviceprocessing potential of a device
Speech SynthesisSpeech SynthesisMuch more realistic than can be synthesized Much more realistic than can be synthesized on a deviceon a device
Prompt databasesPrompt databases
Connect over 802.11Connect over 802.11
Speech Add-In For Pocket Speech Add-In For Pocket IEIE
Adds speech markup capability to Adds speech markup capability to
Pocket IEPocket IE
SALT (Speech Application Language SALT (Speech Application Language
Tags)Tags)
Deploy your speech apps as Web Deploy your speech apps as Web
sitessites
Use your existing ASP.NET, HTML, Use your existing ASP.NET, HTML,
and PIE skills to build speech appsand PIE skills to build speech apps
Speech RecognitionSpeech RecognitionGrammarGrammar
Defines what to listen forDefines what to listen forUsually associated with a particular taskUsually associated with a particular task
A set of syntactic rules for assembling A set of syntactic rules for assembling groups of wordsgroups of words
Expressed with SRGSExpressed with SRGS(W3C Speech Recognition Grammar (W3C Speech Recognition Grammar Specification)Specification)
Can be statically authored or Can be statically authored or dynamically generateddynamically generated
Speech RecognitionSpeech RecognitionResultsResults
Raw textRaw text““Arriving at Heathrow”Arriving at Heathrow”
SemanticSemanticUses your grammar to attach semantic Uses your grammar to attach semantic meaningmeaning
They specified their destinationThey specified their destination
It is an airportIt is an airport
It is “LHR”It is “LHR”
Expressed with SML (Semantic Markup Expressed with SML (Semantic Markup Language)Language)
Includes confidence scoresIncludes confidence scores
Text To SpeechText To Speech
Raw textRaw text
SSML (Speech Synthesis Markup SSML (Speech Synthesis Markup Language) for emphasis and “say as” Language) for emphasis and “say as” hintshints
Prompt databasePrompt databaseCombine synthesized and pre-recorded Combine synthesized and pre-recorded speech speech
Recorded: “Turn left at”Recorded: “Turn left at”
Synthesized: “Smith Street”Synthesized: “Smith Street”
App just provides: “Turn left at Smith App just provides: “Turn left at Smith Street”Street”
Speech Application SDKSpeech Application SDKBuilt for the .NET platformBuilt for the .NET platform
Integrated with Visual Studio .NETIntegrated with Visual Studio .NET
Speech Controls for dialog authoringSpeech Controls for dialog authoringControls built on the ASP.NET control architectureControls built on the ASP.NET control architecture
Abstracts low-level Speech Application Language TagsAbstracts low-level Speech Application Language Tags
Grammar authoring Grammar authoring Build and edit grammars with graphical representationBuild and edit grammars with graphical representation
Associate recognised terms with semantic interpretationAssociate recognised terms with semantic interpretation
Prompt management Prompt management Prompt Editor for scripting, recording, and tagging Prompt Editor for scripting, recording, and tagging promptsprompts
Testing and debuggingTesting and debuggingSpeech debugging console for tracing through a dialogSpeech debugging console for tracing through a dialog
Telephony Application Simulator for simulating phone-Telephony Application Simulator for simulating phone-based dialogsbased dialogs
Speech Input to a Web PageSpeech Input to a Web Page
Further ReadingFurther Reading
ASP.NET Applications for ASP.NET Applications for Mobile DevicesMobile Devices
- Andy Wigley (Content Andy Wigley (Content Master)Master)
Microsoft Speech Site:Microsoft Speech Site:Microsoft.com/SpeechMicrosoft.com/Speech
http://www.microsoft.com/speech/http://www.microsoft.com/speech/
Downloads, White Papers…Downloads, White Papers…
The slides for this eventThe slides for this eventwill be posted at:will be posted at:
www.microsoft.com/uk/msdn/posteventswww.microsoft.com/uk/msdn/postevents
MSDN ConnectionMSDN ConnectionGet personalised info and a customised RSS feedGet personalised info and a customised RSS feed
The programming language(s) you’re interested inThe programming language(s) you’re interested in
The technology area(s) you’re interested inThe technology area(s) you’re interested in
The information you wantThe information you want
View news, technical resources, events, webcasts View news, technical resources, events, webcasts and community informationand community information
Sign up for MSDN Connection at:Sign up for MSDN Connection at:http://www.microsoft.com/http://www.microsoft.com/uk/msdnuk/msdn
Additional InformationAdditional Information
Post Events SitePost Events SiteAll information on past events, slide decks etcAll information on past events, slide decks etc
http://www.microsoft.com/http://www.microsoft.com/uk/msdn/posteventsuk/msdn/postevents
The UK MSDN Site & FlashThe UK MSDN Site & FlashLocal news, events, webcastsLocal news, events, webcasts
http://www.microsoft.com/uk/msdnhttp://www.microsoft.com/uk/msdn
Register to received the bi-weekly MSDN Flash by emailRegister to received the bi-weekly MSDN Flash by emailhttp://www.microsoft.com/http://www.microsoft.com/uk/msdn/flash.aspxuk/msdn/flash.aspx
Try Visual StudioTry Visual Studiohttp://www.microsoft.com/http://www.microsoft.com/vstudio/tryitvstudio/tryit
Take a look at the Express productsTake a look at the Express productshttp://http://msdn.microsoft.commsdn.microsoft.com/express/express
GotDotNet and ASP.NET – lots of excellent GotDotNet and ASP.NET – lots of excellent resourcesresources
http://www.gotdotnet.comhttp://www.gotdotnet.comhttp://http://www.asp.netwww.asp.net
© 2003 Microsoft Limited. All rights reserved.© 2003 Microsoft Limited. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summaryThis presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary..