Σχόλια 0

Το κείμενο του εγγράφου

1

1.

Introduction and motivation

This project implements a file synchronization mechanism between multiple devices,independent of their hardware platform or software (operating system) platform. Basically whatthe application does it monitors one or morefile system paths, and when a modification isdetected on a file it will sync it to the other devices in the mesh, and also create a version of thatmodified file on the server. The protocol through which all of this is done is XMPP.

The userwill be ableto control any of his meshed devices from any computer (ex: from an internetcoffee) that has an internet connection and a web browser, so he could control them even if he isnot standing in front of any of his devices.

The accomplishment of this projectwill

help make collaboration and proactive filesynchronization easier, and having all you important data, centralizes in the cloud.

Chances arebig that you have a lot of important stuff on your computer like financial documents, email,digital photos, music and more. Unfortunately, computers are vulnerable to hard drive crashes,virus attacks, theft and natural disasters, which can erase everything in an instant. Currentstatistics show that one in every ten hard drives fail each year. The cost of recovering a failedhard drive can exceed $7,500, and success is never guaranteed.

Living in a more and more dynamic IT world the technology users expect proactive behaviorfrom their devices, expect all their personal devices to be connected, synched and reachable,even though they are not standing in front of them.

2

In the above picture we could see a typical mesh of 3 devices, one laptop, one desktop, andone mobile phone. The picture showing a globe is the symbol, showing the devices could beaccessed from the web. As you can see all the devices are connected and in sync. If one devicemake a modification the modification is sent to the other two devices. This way they will alwaysbe in sync with one another.

With the help of virtualization the Graviton project will allow you to manipulate virtual harddisks that do not even exist on your local storage, but ratherin

the cloud. So you could create,mount, assign drive letters or demount virtual hard disks from the could. This results in a betterand

way cost effective backup system. Graviton will make scheduled backups, of you importantdata in your personal virtual hard disks on the cloud. So rather than saving you data on youdevice, and eventually lose, it, you can just make a click to mount you virtual hard disk, andcopy all your data there, and in the cloud. Virtual harddisks

will also help computers boot fromthe cloud.

Having said that graviton is also a collaboration software, it will also make possible, datasharing between registered users. Userswill be able to share any of their data on their personalcomputers with other registered users, and set different permissions likeread-only, write,readwrite, delete, execute.

1.2

Project overview, client side

As discussed in previous chapter the Graviton

service, will be able to serve clients respective acertain in house protocol, independent of their hardware platform (laptop, mobile phone,desktops) and software platform (Microsoft Windows, Linux, MAC OS, etc..).

For this project specifically, the implemented client is for Microsoft Windows operatingsystem, and the core of the syncing engine is a file system filter driver, above the NTFS filesystem driver layer.

The GUI application is implemented using C# and the libraries that link the driver with theGUI are written in ANSI C / C++.

3

To make anything happen, first of all the clients on each device need to understand the XMPPprotocolRFC

3920

andRFC 3921

.

To communicate with an XMPP server, I chose the Jabber-Net library for easier access, control and greater manipulation of the protocol.

1.2.1

XMPP Overview

ExtensibleMessaging and Presence Protocol

(XMPP) is an open,XML-basedprotocol

originally aimed at near-real-time, extensibleinstant messaging

(IM) andpresence information

(e.g., buddy lists), but now expanded into the broader realm ofmessage oriented middleware.

It remains the core protocol of the Jabber Instant Messaging and Presence technology. Built to beextensible, the protocol has been extended with features such asVoice over Internet Protocol

andfile transfer signaling.

Unlike most instant messaging

protocols, XMPP is anopen standard. Likee-mail, it is anopensystem

where anyone who has a domain name and a suitable Internet connection can run his ownJabber server and talk to users on other servers. The standard server implementations and manyclients are alsofree and open source software.

TheInternet Engineering Task Force

(IETF) formed an XMPP Working Group in 2002 toformalize the core protocols as an IETF instant messaging and presence technology. The XMPPWG produced four specifications which were approved by theIESG

as Proposed Standards in2004.RFC 3920

andRFC 3921

are now undergoing revisions in preparation for advancing themto Draft Standard within the Internet Standards Process. TheXMPP Standards Foundation

(formerly the Jabber Software Foundation) is active in developing open XMPP extensions.However, no

technology correctly implements the RFCs in full.

XMPP-based software is deployed on thousands of servers across the Internet and by 2003was used by over ten million people worldwide, according to the XMPP Standards Foundation.[2]

provides XMPP gateways to its service.Google Wave's federation protocol is an open extension to the XMPP protocol.

4

1.2.1.1

Jabber-Net library

Jabber-Net is a set of libraries for accessing Jabber functionality from .NET. It is written inC#, but should be accessible from other .NET languages such as VB.NET. Components exist forconnecting to a Jabber server either as a client or as a component.As you explore, you'll findthere are some other goodies buried inside, like Trees, CommandLine processing, etc.

The library consists

of .NET

controls for sending and receiving Extensible Messaging andPresence Protocol (XMPP), also known as the Jabber.The library can handle client connections,server component connections, presence,service discovery, and the like.

1.2.2

Windows File System Drivers

Incomputing, afile system

(often also written asfilesystem) is a method forstoring

andorganizing

computer files

and the data they contain to make it easy to find and access them. Filesystems may use adata storage device

such as ahard disk

orCD-ROM

and involve maintainingthe physical location of the files, they might provide access to data on a file serverby acting asclients for anetwork protocol

(e.g.,NFS,SMB, or9P

clients), or they may be virtual and existonly as an access method for virtual data (e.g.,procfs). It is distinguished from adirectoryservice

andregistry.

More formally, a file systemis a special-purposedatabase

for the storage, organization,manipulation, and retrieval ofdata.

1.2.2.1

File System API

Afile system API

is anapplication programming interface

through which anoperating system

interfaces with file system code. The operatingsystem usually provides abstractions foraccessing different file systems transparently touserland

programs, and in this sense it isanalogous todevice driver

APIs that provide abstracted access to hardware.

Some file system APIs may also include interfaces for maintenance operations, such ascreating or initializing a file system, verifying the file system for integrity, anddefragmentation

–

although these are more often implemented independently from the file system code.

5

Microsoft Windows

NT,2000, andXP

have adefault

file system API known as a file systemdriver for theNTFS,FAT

and FAT32 file systems.

1.2.2.2

Kernel Level API

The API is "kernel-level" when the kernel not only provides the interfaces for the filesystemsdevelopers but is also thespace in which the filesystem code reside.

It differs with the old schema in that the kernel itself uses its own facilities to talk with thefilesystem driver and vice-versa, as contrary to the kernel being the one that handles thefilesystem layout and the filesystem the one that directly access the hardware.

It isn't the cleanest scheme but resolves the difficulties of major rewrite that has the oldscheme.

With modular kernels it allows adding filesystems as any kernel module, even third partyones. With

non-modular kernels however it requires the kernel to be recompiled with the newfilesystem code (and in closed-source kernels, this makes third party filesystem impossible).

Unixes

andUnix-like

systems such asLinux

have used this scheme.

There is a variation of this scheme used inMS-DOS

(DOS 4.0 onward) and compatibles tosupport CD-ROM and network filesystems. Instead of adding code to the kernel, as in the oldscheme, or using kernel facilities as in the kernel-based scheme, it traps all calls to a file andidentifies if it should be redirected to the kernel's equivalent function or if it has to be handled bythe specific filesystem driver, and the filesystem driver "directly" access the disk contents usinglow-levelBIOS

functions.

1.2.2.3

Driver Based API

The API is "driver-based" when the kernel provides facilities but the filesystem code residestotally external to the kernel (not even as a module of a modular kernel).

It is a cleaner scheme as the filesystem code is totally independent, it allows filesystems to becreated for closed-source kernels and online filesystem additions or removals from the system.

Examples of this scheme are theWindows NT

andOS/2

respectiveIFSs.

6

1.2.2.4

File System Filter driver

A file system filter driver intercepts requests targeted at a file system or another file systemfilter driver. By intercepting the request before it reaches its intended target, the filter driver canextend or replace functionality provided by the original target of the request. Examples of filesystem filter drivers include anti-virus filters, backup agents, and encryption products. Todevelop file systems and file system filter drivers, use the IFS (Installable File System) Kit,which is provided with the Windows Driver Kit (WDK).

Filter Manager and Minifilters Basics.

The Filter Manager is a file system filter driverprovided by Microsoft that simplifies the development of third-party filter drivers and solvesmany of the problems with the existing legacy filter driver model, such as the ability to controlload order through an assigned altitude. A filter driver developed to the Filter Manager model iscalled a minifilter. Every minifilter driver has an assigned altitude, which is a unique identifierthat determines where the minifilter is loaded relative

to other minifilters in the I/O stack.Altitudes are allocated and managed by Microsoft.

1.2.3

C# and .NET Framework

1.2.3.1

C#

C#

(pronounced "C Sharp") is amulti-paradigm programming language

encompassingfunctional,imperative,generic,object-oriented

(class-based), andcomponent-oriented

programming disciplines. It was developed byMicrosoft

within the.NET

initiative and laterapproved as a standard byEcma

(ECMA-334) andISO

(ISO/IEC 23270). C# is one of theprogramming languages designed for theCommon Language Infrastructure.

C# is intended to be a simple, modern, general-purpose, object-oriented programminglanguage. Its development team is led byAnders Hejlsberg, the designer ofBorland'sTurboPascal. It has an object-orientedsyntax

based onC++. It was initially named Cool, which stoodfor "C-like Object Oriented Language". However, in July 2000, whenMicrosoft

made the projectpublic, the name of the programming language was given as C#. The most recent version of the7

language is 3.0 which wasreleased in conjunction with the.NET Framework

3.5 in 2007. Thenext proposed version, 4.0, is in development.

1.2.3.2

.NET Framework

TheMicrosoft .NET Framework

is asoftware framework

that can be installed on computersrunningMicrosoft Windows

operating systems. It includes a largelibrary

of coded solutions tocommon programming problems and avirtual machine

that manages the execution of programswritten specifically for theframework. The .NET Framework is a keyMicrosoft

offering and isintended to be used by most new applications created for the Windows platform.

The framework'sBase Class Library

provides a large range of features including userinterface, data anddata access,database connectivity,cryptography,web application

development, numericalgorithms, andnetwork communications. The class library is used byprogrammers, who combine it with their owncode

to produce applications.

Programs written for the .NET Framework execute in asoftware

environment that managesthe program'sruntime

requirements. Also part of the .NET Framework, this runtime environmentis known as theCommon Language Runtime

(CLR). The CLR provides the appearance of anapplication virtual machine

so that programmers need not consider the capabilities of the specificCPU

that will execute the program. The CLR also provides other important services such assecurity,memory management, andexception handling. The class library and the CLR togetherconstitute the .NET Framework.

Version 3.0 of the .NET Framework is included with

Windows Server 2008

andWindowsVista. The current version of the framework can also be installed onWindows XP

and theWindows Server 2003

family of operating systems. A reduced version of the .NET Framework isalso available onWindows Mobile

platforms,

includingsmartphones

as the.NET CompactFramework. Version 4.0 of the framework was released as a public Beta on 20 May 2009.

8

1.3

Project overview, server side

Having talked a little about the client side, and saw what components it needs, and how they

work individually, now it is time to talk a little about the server side.

The server is actually the most important component of all as it needs to handle request fromthousands of clients, connected from all sorts of different devices.

As well as the client, the server will also have to support and implement the XMPP protocolthat we have discussed earlier, in chapter1.2.1. For this to happen the server machine will haveinstalled an XMPP server, and Ichose, the server from Ignite, called OpenFire (will discussabout that soon).

The OpenFire server will work with multiple database servers from MicrosoftSQL to mySQL, but out server will make use of PostgreSQL

As I mentioned earlier, the service would also be provided through the web browser, so theserver will also have to provide web interface interaction with the user. This is done using ASP.NET and an open fire library for flex, calledXIFF API.

1.3.1

Ignite–

OpenFire

OpenFire

is a real time collaboration (RTC) server licensed under the Open Source GPL. Ituses the only widely adopted open protocol for instant messaging, XMPP (also called Jabber).Openfire is incredibly easy to setup and administer, but offers rock-solid security andperformance.

Most administration of the server is done through a web interface, which runs onthe ports 9090 (HTTP) and 9091 (HTTPS) by default. Administrators can connect fromanywhere and edit the server's settings, add and delete users, conference rooms, and so forth.

9

Openfire supports the following features:

-

Web-based administration panel

-

Plug-in interface

-

Customizable

-

SSL/TLS

support

-

User-friendly web interface and guided installation

-

Database connectivity (i.e. embeddedApache Derby

or otherDBMS

withJDBC

3driver) for storing messages and user details

-

LDAP

connectivity

-

Platform independent, pureJava

-

Full integration withSpark Jabber client

The proprietary extension to Openfire allows multiple server instances to work together in oneclustered environment.

1.3.2

PostgreSQL

PostgreSQL

is anobject-relational database management system

(ORDBMS). It is releasedunder aBSD-style license

and is thusfree software. As with many other open-source programs,PostgreSQL is not controlled by any single company, but has a global community of developersand companies to develop it.

1.3.3

XIFF API

XIFF

is an Open Source Flash library for instant messaging and presence clients using theXMPP (Jabber) protocol. XIFF includes an extension architecture that makes it easy to addfunctionality for additional protocol extensions, or even your own special-needs

extensions.There are quite a few extensions already included in the library, giving it support for XML-RPCover XMPP (XEP-0009), Multi-user conferencing (XEP-0045), Service browsing (XEP-0030),and XHTML message support (XEP-0071).

10

1.3.4

ASP .NET

ASP.NET

is a

web application framework

developed and marketed byMicrosoft

to allowprogrammers

to build dynamicweb sites,web applications

andweb services. It was first releasedin January 2002 with version 1.0 of the.NET Framework, and is the successor to Microsoft'sActive Server Pages

.NET pages, known officially as "web forms", are the main building block for applicationdevelopment.

Web forms are contained in files with an ".aspx" extension; in programmingjargon, these files typically contain static (X)HTML

markup, as well as markup defining server-side Web Controls and User Controls where the developers place all the required static anddynamic content for the web page. Additionally, dynamic code which runs on the server can beplaced in a page within a block<%--

dynamic code--

%>

which is similar to other webdevelopment technologies such asPHP,JSP, andASP, but this practice is generally discouragedexcept for the purposes ofdata binding

since it requires more calls when rendering the page.

1.4

Definition of terms

1.4.1

System

We will call the“system”,the actual product under this specification.

1.4.2

Actor

An actor is an entity that has aspecificroleand whichplays in its relationship with thesystem, interacts with the system, makes use of the system’s resources.

1.4.3

Client entity

The “client entity”can be defined as

any device or PC that has a filesystem and can follow theserver protocol.

A device connected to the server will be recognized as a client if it cans login to11

the server with a valid username and password. After that, it should be able to create XMPP IQrequests that the server can process.

An entity that will successfully login to the server, but will not be able to send any validXMPP IQ, will also be recognized as a client, but the server will not be able to provide anyfunctionality.

1.4.4

Server entity

The “server entity”

is a componentwhich handlesClient

requests, and syncs data throughout aset of rules.

The server entity is actually a set of more components put together to offer the clientthe functionality it requests. The server is composed of theXMPP server, sync manager(embedded in-house in the XMPP server), database manager, storage manager.

The server will recognize aclientonly after, the entity connected to it, will successfullylogin. Only after this the server will provide functionality for the client requests.

If the serverdoes not recognize the requests, than he will send back to the client an appropriate error message.This will happen if a request type is recognized but cannot be fulfilled. A success message willbe sent to the requestor client if the request was processed. Eventually the request data will begiven back to the client.

1.4.5

Sync manager

entity

The “sync manager”is a

server component, which based on a set of user rules, syncs data filesamong devices. The sync manager is embedded in the XMPP server as a plug-in. The

sync-manager will work through a set of in-house XMPP stanza requests (ex: IQ UpdateFileRequest,with parameters: update size, update offset, and buffer).

The sync manager is the most complicated part of the project to implement and it requiresbeing the most efficient, requiring a small cache manager on the server, for some kind of updatesto work really fast.

The sync manager will do such tasks as assuring that one“synced file”

is onall the devices.A fileis considered synced if the newestversion

of that file is on all the devices in the sametime. Further modification to that file, will remove the “synced file” bit from that file.

12

The user can choose to manually sync onefile across his devices, if any problems, ormalfunctions appear in the sync process.

1.4.6

Database manager

entity

The database manager is the actor that deals with database/table management. The databasemanager, basically knows the whole organization of the

project in its background, things likehow tables are related to one another, what query should you make to see the protected folders ofone user, or the users space quota.

The database manager lies on top of the PostgreSQL SGBD. The layer on top will bean API,dll library like with all sort of in-library queries. (ex: LONG GetUserFreeSpaceQuota(IN char*UserName, OUT PLARGE_INTEGER *UserQuota) will put in UserQuota the free space userquota for the specified user, and will return the appropriate error code if any error);

1.4.7

Storage manager

entity

The storage mangerwill all storage related issues on the server, like total space, free space,user folders, VHD option and settings.The user will have the option to choose if they will wanttheir storage on a VHD or on the server’s direct storage; this will also be handled by the storagemanager.

Of course the storage manager is in really close relationship with the DB manager, all queriesand SETs he will make will reflect in the databases. The storage managerwill also allow the userto extend his current space quota as well as go to a lower space quota.

1.4.8

Backup and restore manager

As its name is very suggestive, the backup and restore manager will, be server component thatwill maintain user’s backup meta-data, like backup schedules, backed-up folders, or file versions.

The backup and storage manager will know what server folder paths a certain user has that heuses to make the backup happen. The restore manager will help the user choose which files he13

wants to restore from the server. The user will have to choose files to restore according to date,or version (seeFileVersion).

The restore manager will allow the user to choose his interface of restoring the files. The usercanchoose to either download the files via HTTP or FTP, or the files will be automaticallydownloaded by the desktop application, and restored where needed.

The restore manager will work to restore the files even if the user is not in front of any of hisdevices. The user can choose to make a web login from a web browser, and download any fileneed at the computer he is in front of.

The restore manager basically offers the user interfaces of access to its files. It is tightlyintegrated with the sharing manager (seechapter1.4.11)

1.4.9

File version

A“file version”

of a file

is any previous content of a file thatlies

on the server. The fileversioning that the server will support will vary on the file size or version history.The user canimpose the server not to support more than a number of versions of file. If then number ofversions exceeds the maximum for a file, the server will automatically delete the first versions ofthe file, and shift the versions, so the last version is always backed up and present on the server.

1.4.10

Web Interface

Actor interface to easily, remotely and securely access backed up and storage

data with thehelp of your web browser. The web interface will help the user interact with his files if he is notin front of one of his computers.

The user will be able to login online, and control any of its devices, perform actions on themlike (copy,delete, rename, modify files).

14

Figure1

showing the "Welcome" web interface. The connected user can see his devices, which are online, and whichnot. If logged from a new device, he can choose to add the new device to its sync mesh. The user can see its Storage andremote control his devices

The user will be able to perform file sharing operations, via web, but also access shared filesby others.

The user will be also able to register a new user, change his password or change settings fromthe browser.

1.4.11

Sharing manager

A very important component of the service is the sharing manager. The user can choose toshare files on his devices with other registered users or unregistered users, making them public.

The sharing manager worksclosely with the restore manager, being able to offer interfaces toreach the desired files.

The user will be able to select the users which he will want to share the files with, and setpermissions, like read-only, read-write, write-only, etc.

15

The publicfiles that one user will expose will be available either through a web-link or ananonymous login toan

ftp server. The files will beavailable for download for a determinedperiod of time (default 30 days).

1.4.12

VHD

AVirtual Hard Disk

(VHD) is afile format

containing the complete contents and structurerepresenting aHard Disk Drive, and is used to store virtual operating systems and theirassociated programs in a single file by variousvirtualization

programs or avirtual machine.[1]Theformat was created byConnectix

which was later acquired byMicrosoft

forVirtual PC. SinceJune 2005 Microsoft has made the VHD Image Format Specification available to third partiesunder theMicrosoft Open Specification Promise.

Virtual Hard Disks allow multiple operating systems to reside on a single host machine. Thisenables developers to test software on different operating systems without the cost or hassle ofactual hardware.

The “Windows Client GUI”is the actually the main interface for the user to interact with.

The user is able to indirectly control the “Sharing manager” (see1.4.11), the “Backup andrestore manager” (see1.4.8), the “Sync Manager” (see1.4.5) or the settings from the “Windowsdriver client” (see1.4.14).

16

The Windows Client GUI (WCG) will provide also the user the ability to administrate hiscontacts.

He can add, delete or customize contact details for any of its contacts. He can choose toshare files, see what others had to share with you and also collaborate.

Figure2

showing a typical contacts tree with three groups, 2 offline contacts and one online contact, and a search bar,with only the matched users

As shown inFigure 1

one logged in user can see its contact roster, and search through hiscontacts. He could also choose to, make contact groups to manage them with more ease.

AsFigure 1

indicates, the logged in user can choose to manage any of its devices from the onehe’s connected at.

TheWCG

is more, a layer between the managers on the servers and the services offered andthe client, trying to gain access to them.

1.4.14

Windows Clientdriver

The“Windows Client driver”component is one the most hard to implement, and the one thatmakes a difference between a normal file sync and collaboration application, and Graviton.

The, driver type, is aFileSystemFilter

driver, which can be configured towatch

certain filesystem paths, and look for any modifications to files. The driver will have a local backup folder17

where it will save thefiles as they are modified. The driver will make backup copies, detect filedeletion, detect file modification (offset and length), or file creation.

The driver also provides callbacks to the user mode application to register to be called whenacertain update happens in the driver.

The user application will send each update from the driver to the server and then the serverwill route it to all the devices in the mesh. The driver will ignore any modifications made by theuser mode application. This way the user mode application can patch the files without having toworry about the driver interpreting them as file modifications.

The trick is that the driver will send only the

modified part of the file to the user modeapplication and the offset and length. So if a huge file is partly modified, the driver will not sendthe user

a request to sync the whole file, but the modified part. This way the client saves

bandwidth,and uploading time. Each update like this can mean one version of the file, if the userchooses to have the files version for each update. The user can configure how the versions willbe made, according to number of versions of storage occupied.

One last thing that needs to be mentioned for the driver is that the driver cannot work ifattached to a VHD, because it does not meet the concurrency requirements. A version for thisdriver will be released and, will offer functionality only through a callback interface, to the userand an API will be exposed as a dynamic library to make direct calls and setting to the driver onruntime.

A typical library like this will help the programmer easilyintegrate in the main application alogin box, a register box or even a contacts tree view with all the contacts shown as they areonline or offline.

18

Figure3

the login box is generated by a function call in the Login library. The library also exposes functions thatsupport the login without a login form.

As shown in Figure 3 the, programmer can choose to make a login call from the login library andthe login box will automatically be shown from the API. For example the login library class hasfour constructors:

-

public

GaMiTechXMPPLoginUser()

-

public

GaMiTechXMPPLoginUser(string

User,string

Pass)

-

public

GaMiTechXMPPLoginUser(string

User,string

Pass,string

ServerName,string

NetworkHostName,int

port)

-

public

GaMiTechXMPPLoginUser(JabberClient

jClient)

, and exposes the following public methods:

-

public

JabberClient

Login()

-

public

JabberClient

Login(ref

GaMiTechLoginResult

LogResult)

-

public

JabberClient

LoginNoForm()

-

public

JabberClient

LoginNoForm(bool

RembemberCredentials)

Each

of these functions will use the private variable of type JabberClient and try to log it in tothe server.

19

The class also exposes some public variables showing the last error code and the login status.

This way all the programmer has to do is just make a new instance of the classGaMiTechXMPPLoginUserand just call Login(). As you can see there is also an option, if noform is required, for a login with no form. This is typically done when the user wants toremember its credentials on the machine he is on,and the application will automatically loghim/her in without showing the form.

The model of theGaMiTechXMPPLoginUseris followed for the other libraries as well.Basically theWindows client libraries

will enhance programming speed and offer new andways

of implementing the main application.

1.4.16

Windows mobile client GUI

As mentioned earlier, theapplication will be able to keep in sync even the mobile smartphonesor pocket PC’s. All that is needed is that your mobile devices have and operating system and canconnect to the internet. Of course not all the functionalities are implemented in the mobileversion of the application due to the mobile devices limitations, but the necessary and mostimportant functionalities will be there, like file sync, sharing, backup and restore.

20

Figure4

show a devices emulator, emulating a Pocket PC using Windows Mobile 5.0. The current running applicationis made to make a proof of concept that the data is sent from the mobile phone to a Linux server

As suggested by Figure 4, the first client which I will implement will only support windowsmobile clients. The server protocol of course is platform independent, and the clients can bemulti platform. Because of the ease with which the Windows mobile client can be implemented Ichoose to start with it.

21

1.4.17

Windows mobile FileSystem

Watcher

TheWindows mobile FileSystemWatcher

class is probably the biggest and most importantpiece ofneeded code that this project will need for mobile devices.

Normally, Microsoft does not have aFileSystemWatcher

class for the .NET Compactframework. Normally if the functionality should be minimum for the mobile devices usingWindows Mobile, than the FileSystemWatcher class is a must. Luckily there is an open sourcecommunity, which handles projects for the .NET Compact framework to extend its functionality.

OpenNETCF

is committed to open source projects to help the mobile and embeddeddevelopment community in their projects whether it be enterprise development or commercialdevelopment.

The only difference here between the windows client and the windows mobile client is that,the FileSystemWatcher (on the mobile client), does not come close to the functionality offeredby the driver (in the windows client). The compromise is little though, due to the fact that mobiledevices do not have large files, and, also do not have such high I/O activity. So this being saidthe conclusion is that the windows mobileclient