48
Anywhere Access to Anywhere Access to Data Data Markus Egger Markus Egger President, EPS President, EPS Software Corp. Software Corp. Publisher, CoDe Publisher, CoDe Magazine Magazine

Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Embed Size (px)

Citation preview

Page 1: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Anywhere Access to DataAnywhere Access to Data

Markus EggerMarkus EggerPresident, EPS Software President, EPS Software Corp.Corp.Publisher, CoDe MagazinePublisher, CoDe Magazine

Page 2: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

About Me…About Me…

Markus EggerMarkus Egger

President and Chief Software ArchitectPresident and Chief Software ArchitectEPS Software Corp.EPS Software Corp.

Publisher: Publisher: CoDe CoDe and and CoDe Focus CoDe Focus MagazinesMagazines

International Author and SpeakerInternational Author and Speaker

Microsoft MVP: C#Microsoft MVP: C#

Tablet PC “Influential”Tablet PC “Influential”

Page 3: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Today’s AgendaToday’s Agenda

Accessing File-Based DataAccessing File-Based DataSynchronization Manager for Offline Data Synchronization Manager for Offline Data

Data Access ScenariosData Access Scenarios

Data Access Architecture for “Anywhere Data Access Architecture for “Anywhere Access”Access”

Accessing Data in DatabasesAccessing Data in DatabasesClient-Side CachingClient-Side Caching

Service Oriented ArchitectureService Oriented Architecture

SQL Server and SQL CESQL Server and SQL CE

ADO.NETADO.NET

Page 4: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Accessing File-Based Accessing File-Based DataData

Markus EggerMarkus EggerEPS Software Corp.EPS Software Corp.

CoDe MagazineCoDe [email protected]@eps-software.com

Page 5: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

File-Based Data ScenariosFile-Based Data Scenarios

““File-based” almost always means File-based” almost always means accessing files either on a local drive or on a accessing files either on a local drive or on a local network share.local network share.

Note: Technologies for distributed file access are available Note: Technologies for distributed file access are available (and can be implemented manually), but we are not (and can be implemented manually), but we are not concerned with these technologies in this talk.concerned with these technologies in this talk.

For distributed scenarios, files generally For distributed scenarios, files generally have to be “synchronized” for offline have to be “synchronized” for offline consumption.consumption.

Microsoft provides everything needed for offline file Microsoft provides everything needed for offline file caching and synchronization on computers as well as caching and synchronization on computers as well as mobile devices.mobile devices.

Page 6: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Synchronization ManagerSynchronization Manager

Centralized, standard technology for Centralized, standard technology for synchronizing files for offline use.synchronizing files for offline use.

Files are synchronized independently Files are synchronized independently of the protocol.of the protocol.

Intended for applications that run Intended for applications that run primarily on mobile computers. primarily on mobile computers.

This technology is not just for files!This technology is not just for files!More about that later…More about that later…

Page 7: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Mobile Computing ConfigurationsMobile Computing Configurations

Synchronization Manager is useful for Synchronization Manager is useful for computers configured as follows:computers configured as follows:

Mobile computer in docking station but Mobile computer in docking station but occasionally used over a dial-in connection. occasionally used over a dial-in connection.

Mobile computer used mostly over a dial-in Mobile computer used mostly over a dial-in connection. connection.

Desktop computer used strictly over a dial-in Desktop computer used strictly over a dial-in connection, such as a computer used by a connection, such as a computer used by a telecommuter. telecommuter.

Desktop computer used strictly over a high Desktop computer used strictly over a high bandwidth network. bandwidth network.

Page 8: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Application Scenarios for Application Scenarios for Synch Manager Synch Manager

Microsoft Office applications that need to Microsoft Office applications that need to prepare files for offline use. prepare files for offline use.

Client-side caching that lets you cache files Client-side caching that lets you cache files locally. locally.

Browsers that can cache HTML pages locally. Browsers that can cache HTML pages locally.

Mail programs that can cache e-mail Mail programs that can cache e-mail messages locally. messages locally.

Databases that can store information locally. Databases that can store information locally.

Page 9: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Synchronization Manager Synchronization Manager Architecture Architecture

End user can:End user can:Schedule applications for synchronization.Schedule applications for synchronization.

Set up automatic synchronization to occur in Set up automatic synchronization to occur in conjunction with specified system events.conjunction with specified system events.

Programming interface can:Programming interface can:Enable applications to register for Enable applications to register for synchronization features.synchronization features.

Process errors.Process errors.

Receive progress information and notifications Receive progress information and notifications during the synchronization process. during the synchronization process.

Page 10: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine
Page 11: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Programmable InterfaceProgrammable Interface

To use the Synchronization Manager To use the Synchronization Manager programmatically, you must implement programmatically, you must implement COM interfacesCOM interfaces

Your object must implement:Your object must implement:ISyncMgrSynchronizeISyncMgrSynchronize

ISyncMgrEnumItemsISyncMgrEnumItems

SyncMgr implements:SyncMgr implements:ISyncMgrSynchronizeCallbackISyncMgrSynchronizeCallback

ISyncMgrSynchronizeInvokeISyncMgrSynchronizeInvoke

Page 12: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Longhorn Application SyncLonghorn Application Sync

Centralized and consistent sync experience for Centralized and consistent sync experience for applications, services, and devices.applications, services, and devices.

Users are in control.Users are in control.

Clear what is being synchronized to and from the Clear what is being synchronized to and from the computer.computer.

Consistent experience for status, errors, and Consistent experience for status, errors, and conflicts.conflicts.

Frequent synchronization tasks at most two Frequent synchronization tasks at most two clicks away.clicks away.

Synchronization is not obtrusive.Synchronization is not obtrusive.

Page 13: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

XP Sync Man

Longhorn Synchronization ManagerLonghorn Synchronization Manager

Page 14: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Database Database ScenariosScenarios

Markus EggerMarkus EggerEPS Software Corp.EPS Software Corp.

CoDe MagazineCoDe [email protected] [email protected]

Page 15: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Data Access ScenariosData Access Scenarios

Applications must work well in LAN scenarios.Applications must work well in LAN scenarios.Basically, all types of applications support basic Basically, all types of applications support basic networking. networking.

Applications must work in distributed scenarios.Applications must work in distributed scenarios.ASP.NET Web applications are an obvious choice here.ASP.NET Web applications are an obvious choice here.

Smart Client applications now also work well over Smart Client applications now also work well over protocols such as HTTP.protocols such as HTTP.

Applications must work in disconnected or partially Applications must work in disconnected or partially connected scenarios.connected scenarios.

Smart Client applications (running on various devices or Smart Client applications (running on various devices or operating systems) are the only choice here.operating systems) are the only choice here.

Page 16: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Data Access GoalsData Access Goals

Top priority: Create an application that can Top priority: Create an application that can be used anywhere and any time.be used anywhere and any time.

Create an architecture that can be used in Create an architecture that can be used in many scenarios and over an extensive many scenarios and over an extensive period of time.period of time.

The architecture needs to be OS-independent The architecture needs to be OS-independent and device-independent.and device-independent.

The architecture should carry us well into new The architecture should carry us well into new operating systems and device generations.operating systems and device generations.

Applications should also support flexible Applications should also support flexible deployment scenarios.deployment scenarios.

Page 17: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Therefore: Smart Clients Rule!Therefore: Smart Clients Rule!

Smart Client applications cover all the Smart Client applications cover all the different scenarios and goals.different scenarios and goals.

Smart Client applications are great for Smart Client applications are great for “known permanent users”.“known permanent users”.

These are users that are known to us and use These are users that are known to us and use our application extensively.our application extensively.

We may supplement Smart Clients with We may supplement Smart Clients with HTML-based Web applications.HTML-based Web applications.

These are great for “occasional users” and These are great for “occasional users” and “public users”.“public users”.

We need to make sure our data access strategy We need to make sure our data access strategy works well in this scenario too.works well in this scenario too.

Page 18: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Architectural OverviewArchitectural Overview

Database(SQL Server)

Business Logic

(“The App”)

User Interf.

ServiceInterface

Page 19: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Core Application ArchitectureCore Application Architecture

+Business Object

+Data Entity

+Data Service Object

Client AppDatabase

= Deployment Boundary

Page 20: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Data Access Architectural GoalsData Access Architectural Goals

Disconnected from databaseDisconnected from database

Flexible access to different back endsFlexible access to different back ends

Automatic failover when neededAutomatic failover when needed

Simple usage approach (for Simple usage approach (for developers)developers)

Easy to extendEasy to extend

Page 21: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Data Access ArchitectureData Access Architecture

+ D a ta S e rv ic e O b je c t

+ E xe c u te Q u e ry ( )+ E xe c u te N o n Q u e ry ( )+ E xe c u te S c a la r( )

+ ID a ta S e rv ic e

+ E xe c u te Q u e ry ( )+ E xe c u te N o n Q u e ry ( )

+ E xe c u te S c a la r( )

+ S Q L S e rv e rD S + W e b S e rv ic e D S + O ra c le D S

+ $ D a ta S e rv ic e F a c to ry

$ G e tIn s ta n c e ( )

Note: A production implementation will Note: A production implementation will probably feature a lot more methods.probably feature a lot more methods.

Page 22: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Implementing the Data ServiceImplementing the Data Service

Markus EggerEPS Software Corp.

CoDe [email protected]

Page 23: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Data Service RecapData Service Recap

Abstracted object that takes care of the Abstracted object that takes care of the details of talking to a databasedetails of talking to a database

Instantiated by a Factory objectInstantiated by a Factory object

Can be extended through fundamental Can be extended through fundamental interface (IDataService)interface (IDataService)

Page 24: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Business Object Architectural GoalsBusiness Object Architectural Goals

ScalabilityScalability

Database IndependenceDatabase Independence

Simple to UseSimple to Use

Simple to ProgramSimple to Program

StatelessStateless

ReusableReusable

Page 25: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Business Object ArchitectureBusiness Object Architecture

+Business Object

GetList( )Verify( )Save( )GetSingleRecordByPK( )$GetInstance( )

+IBusinessObject

GetList( )Verify( )Save( )

GetSingleRecordByPK( )

+CustomerBO

+GetCustomersByCompanyName( )

+OrderBO

GetOrdersByCustomerID( )

+XyzBO

Page 26: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Implementing the Business ObjectImplementing the Business Object

Markus EggerEPS Software Corp.

CoDe [email protected]

Page 27: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Business Object RecapBusiness Object Recap

A fundamental business object (BO) A fundamental business object (BO) implementation provides default implementation provides default functionality.functionality.

New BOs can be easily created by New BOs can be easily created by subclassing the base implementation.subclassing the base implementation.

A generic interface provides great flexibility.A generic interface provides great flexibility.

Static GetInstance() helper provides great Static GetInstance() helper provides great deployment flexibility.deployment flexibility.

Abstract away all access to the data layer!Abstract away all access to the data layer!

Page 28: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Related TopicsRelated Topics

Security refresherSecurity refresherSQL Injection!SQL Injection!

Use Stored Procedures and Parameters!Use Stored Procedures and Parameters!

Execution rights and CAS Execution rights and CAS

Make sure your distributed access is Make sure your distributed access is securesecure

Replay attacks, data interception, Replay attacks, data interception, command interception, data tampering, …command interception, data tampering, …

Page 29: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Related Topic: DataSetsRelated Topic: DataSets

Topic of heated discussion… ;-) Topic of heated discussion… ;-)

DataSets provide lots of functionality, DataSets provide lots of functionality, but:but:

They are not always efficient.They are not always efficient.Think, for example, of serialization.Think, for example, of serialization.

Who knows? They might change in the Who knows? They might change in the future.future.

Strongly typed DataSets provide type-Strongly typed DataSets provide type-safety and compile-time verification.safety and compile-time verification.

Page 30: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

DataSets (continued)DataSets (continued)

Custom data objects can be strongly typed and Custom data objects can be strongly typed and more efficient, but they are more work.more efficient, but they are more work.

Custom data objects provide full control (for the Custom data objects provide full control (for the developer) and independence from developer) and independence from potential .NET Framework changespotential .NET Framework changes

My recommendation: combine the two My recommendation: combine the two approaches!approaches!

Create a custom wrapper for DataSets.Create a custom wrapper for DataSets.

Wrappers provides strong typing and other Wrappers provides strong typing and other functionality.functionality.

Since the DataSet is not exposed, you can Since the DataSet is not exposed, you can always change these implementation details.always change these implementation details.

Page 31: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Implementation DetailsImplementation Details

Markus EggerMarkus EggerEPS Software Corp.EPS Software Corp.

CoDe MagazineCoDe [email protected] [email protected]

Page 32: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Different Data ServicesDifferent Data Services

LAN data services simply access local LAN data services simply access local database instances and servers.database instances and servers.

Distributed data services perform the same Distributed data services perform the same basic task, but have to use “in between” basic task, but have to use “in between” technologies:technologies:

Web ServicesWeb Services

RemotingRemotingIsn’t that outdated? Isn’t that outdated?

No, not really, but it needs to be handled as a No, not really, but it needs to be handled as a “replaceable” technology.“replaceable” technology.

Microsoft Code Name “Indigo”Microsoft Code Name “Indigo”

Page 33: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Different Data Services (cont.)Different Data Services (cont.)

Offline DataOffline DataNeeds to store data in a local database Needs to store data in a local database such as MSDE or SQL CE.such as MSDE or SQL CE.

XML can be used as a “poor man’s XML can be used as a “poor man’s database”.database”.

Offline copies of data can be created Offline copies of data can be created automatically when data is accessed.automatically when data is accessed.

The Synchronization Manager can be The Synchronization Manager can be used to trigger and handle used to trigger and handle synchronization.synchronization.

Page 34: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Offline Update ScenariosOffline Update Scenarios

Upload scenarios can get tricky!Upload scenarios can get tricky!

Database applications tend to be more Database applications tend to be more interconnected than applications such interconnected than applications such as Outlook.as Outlook.

Example: Updating one item (address) Example: Updating one item (address) can change other data (shipping fee on an can change other data (shipping fee on an unprocessed invoice).unprocessed invoice).

Page 35: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Offline Update Scenarios (cont.)Offline Update Scenarios (cont.)

Often, local data needs to duplicate almost Often, local data needs to duplicate almost all server-side structures and referential all server-side structures and referential integrity as well as business rules (checks integrity as well as business rules (checks and processing).and processing).

Sometimes additional consideration needs Sometimes additional consideration needs to be given to business scenarios that are to be given to business scenarios that are unique to the offline-cache situation.unique to the offline-cache situation.

Applications may need to handle a special Applications may need to handle a special “unprocessed” state for items that may still have “unprocessed” state for items that may still have to change or may not yet have triggered other to change or may not yet have triggered other actions.actions.

Page 36: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Case Study: Outlook 2003Case Study: Outlook 2003

Markus EggerMarkus EggerEPS Software Corp.EPS Software Corp.

CoDe MagazineCoDe Magazine

[email protected] [email protected]

Page 37: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Outlook 2003Outlook 2003

Major re-write of the applicationMajor re-write of the application

Builds on:Builds on:Cached ExchangeCached Exchange

Improved SynchronizationImproved Synchronization

Conflict ResolutionConflict Resolution

RPC over HTTPRPC over HTTP

PST/OST EnhancementsPST/OST Enhancements

Page 38: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Cached Mode: Cached Mode: Shields Users From Network ConditionsShields Users From Network Conditions

Outlook runs against a local copy of the Outlook runs against a local copy of the user’s mailbox (OST).user’s mailbox (OST).

Uses the Offline Address Book (OAB) for Uses the Offline Address Book (OAB) for basic addressing functions .basic addressing functions .

The OST and OAB are automatically kept in The OST and OAB are automatically kept in sync with server.sync with server.

Classic “Online” features are available Classic “Online” features are available (Calendaring, Public Folders, Delegate (Calendaring, Public Folders, Delegate Access).Access).

Page 39: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Cached Mode: Cached Mode: Uses Improved SynchronizationUses Improved Synchronization

Fewer bytes over the wire and less roundtripsFewer bytes over the wire and less roundtripsBi-directional data compressionBi-directional data compression

Increased buffer sizesIncreased buffer sizes

Partial item uploadPartial item upload

These changes plus others yielded 50% reduction in BoWThese changes plus others yielded 50% reduction in BoW

More robust synchronizationMore robust synchronizationCheck-pointingCheck-pointing

Skip bad itemSkip bad item

Deliver most important data firstDeliver most important data firstSynchronizations initiated on user navigationSynchronizations initiated on user navigation

Most recent items first (LIFO) within a folderMost recent items first (LIFO) within a folder

Page 40: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Cached Mode: Cached Mode: Handles Connectivity ChangesHandles Connectivity Changes

Outlook just keeps working when the Outlook just keeps working when the network goes away.network goes away.

Few annoying error messagesFew annoying error messages

User’s data is availableUser’s data is available

User can create new items and modify User can create new items and modify existing itemsexisting items

Outlook automatically re-connects to Outlook automatically re-connects to the Exchange server.the Exchange server.

Page 41: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Cached Mode: Cached Mode: Bandwidth AwareBandwidth Aware

On fast networks:On fast networks:Downloads full items on all folders and address Downloads full items on all folders and address book updates.book updates.

On slow networks ( < 128 Kb):On slow networks ( < 128 Kb):Synchronizes only “headers” on all folders.Synchronizes only “headers” on all folders.

Headers small but contain sufficient information Headers small but contain sufficient information to render views. to render views.

Users can triage their mail – download important Users can triage their mail – download important messages and delete junk mail.messages and delete junk mail.

Page 42: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Questions?Questions?

Feel free to send me email!Feel free to send me email!

Markus EggerMarkus Egger

EPS Software Corp.EPS Software Corp.

CoDe MagazineCoDe Magazine

[email protected] [email protected]

Page 43: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

MEDC Mobile PC TalksMEDC Mobile PC Talks

CLI204 - Tablet PC Development OverviewCLI204 - Tablet PC Development OverviewSpeaker - Dave HaleSpeaker - Dave HaleTime – Tuesday 5/10 11:30 AMTime – Tuesday 5/10 11:30 AM

CLI208 – Anywhere Access to DataCLI208 – Anywhere Access to DataSpeaker – Markus EggerSpeaker – Markus EggerTime – Tuesday 5/10 3:00 PMTime – Tuesday 5/10 3:00 PM

CLI324 - Advanced Tablet PC Development TopicsCLI324 - Advanced Tablet PC Development TopicsSpeaker – Todd LandstadSpeaker – Todd LandstadTime – Wednesday 5/11 8:00 AMTime – Wednesday 5/11 8:00 AM

CLI325 - In Depth - Ink Data ManagementCLI325 - In Depth - Ink Data ManagementSpeaker – Stefan WickSpeaker – Stefan WickTime – Wednesday 5/11 9:30 AMTime – Wednesday 5/11 9:30 AM

CLI329 - Network AwarenessCLI329 - Network AwarenessSpeaker – Dr. Neil RoodynSpeaker – Dr. Neil RoodynTime – Thursday 5/12 8:00 AMTime – Thursday 5/12 8:00 AM

Page 44: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Mobile Hands On Labs at MEDCMobile Hands On Labs at MEDCBuilding Network-Aware Mobile PC ApplicationsBuilding Network-Aware Mobile PC Applications

Build a network-aware application using the Build a network-aware application using the Windows Network Location Awareness (NLA) Windows Network Location Awareness (NLA) API. API.

Building Power-Aware Mobile PC ApplicationsBuilding Power-Aware Mobile PC Applications

Learn how to tune your applications to save Learn how to tune your applications to save power, extend battery life, and enhance the power, extend battery life, and enhance the user's mobile PC experience. user's mobile PC experience.

Building Managed Applications with Microsoft Building Managed Applications with Microsoft Windows XP Tablet PC SDK Windows XP Tablet PC SDK

Create a cool Tablet application using the Create a cool Tablet application using the Windows XP Tablet PC Edition SDK 1.7. Windows XP Tablet PC Edition SDK 1.7.

Page 45: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

The Tablet and Mobile PC The Tablet and Mobile PC Developer CenterDeveloper Center

http://msdn.microsoft.com/mobilepchttp://msdn.microsoft.com/mobilepc

Page 46: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Mobile PC Developer CenterMobile PC Developer Center

The latest technical articlesThe latest technical articles

DownloadsDownloads

Developer resourcesDeveloper resources

Regular columnsRegular columns

..

NewsgroupsNewsgroups

Featured partnersFeatured partners

and more……and more……

Page 47: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Tablet PC Developer CenterTablet PC Developer Center

The latest technical articlesThe latest technical articles

DownloadsDownloads

Developer resourcesDeveloper resources

Regular columnsRegular columns

..

NewsgroupsNewsgroups

Featured partnersFeatured partners

and more……and more……

Page 48: Anywhere Access to Data Markus Egger President, EPS Software Corp. Publisher, CoDe Magazine

Attend a free chat or web castAttend a free chat or web casthttp://www.microsoft.com/communities/chats/default.mspx http://www.microsoft.com/communities/chats/default.mspx http://www.microsoft.com/usa/webcasts/default.asp http://www.microsoft.com/usa/webcasts/default.asp

List of newsgroupsList of newsgroupshttp://communities2.microsoft.com/communities/newsgroups/en-us/default.aspxhttp://communities2.microsoft.com/communities/newsgroups/en-us/default.aspx

MS Community SitesMS Community Siteshttp://www.microsoft.com/communities/default.mspx http://www.microsoft.com/communities/default.mspx

Locate Local User Groups and Community SitesLocate Local User Groups and Community Siteshttp://www.microsoft.com/communities/usergroups/default.mspx http://www.microsoft.com/communities/usergroups/default.mspx http://www.microsoft.com/communities/related/default.mspxhttp://www.microsoft.com/communities/related/default.mspx