Difference between revisions of "Eclipse File Service APIs Compared"

From Eclipsepedia

Jump to: navigation, search
 
Line 3: Line 3:
 
'''This document is under construction, not finished yet.'''
 
'''This document is under construction, not finished yet.'''
  
== RSE Files API ==
+
== Eclipse Remote File APIs ==
 +
 
 +
=== RSE Files API ===
  
 
* [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.tm.rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/files/IFileService.java?rev=HEAD&cvsroot=DSDP_Project&content-type=text/vnd.viewcvs-markup viewcvs: IFileService.java]
 
* [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.tm.rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/files/IFileService.java?rev=HEAD&cvsroot=DSDP_Project&content-type=text/vnd.viewcvs-markup viewcvs: IFileService.java]
Line 16: Line 18:
 
* RSE implementation does persistent caching of remote files
 
* RSE implementation does persistent caching of remote files
  
== Eclipse Filesystem (EFS) API ==
+
=== Eclipse Filesystem (EFS) API ===
  
 
* [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.core.filesystem/src/org/eclipse/core/filesystem/IFileStore.java?rev=HEAD&content-type=text/vnd.viewcvs-markup viewcvs: IFileStore.java]
 
* [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.core.filesystem/src/org/eclipse/core/filesystem/IFileStore.java?rev=HEAD&content-type=text/vnd.viewcvs-markup viewcvs: IFileStore.java]
Line 32: Line 34:
 
* API for file caching during the current Eclipse session
 
* API for file caching during the current Eclipse session
  
== Team/Target Management API ==
+
=== Team/Target Management API ===
  
 
* Will be dropped in favor of EFS, according to the Platform/Team group.
 
* Will be dropped in favor of EFS, according to the Platform/Team group.
 
* Will then provide FTP and WebDAV implementations for EFS
 
* Will then provide FTP and WebDAV implementations for EFS
  
== ECF fileshare API ==
+
=== ECF fileshare API ===
  
 
* [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ecf/plugins/org.eclipse.ecf.fileshare/src/org/eclipse/ecf/fileshare/IFileShareContainer.java?rev=HEAD&cvsroot=Technology_Project&content-type=text/vnd.viewcvs-markup viewcvs: IFileShare]
 
* [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.ecf/plugins/org.eclipse.ecf.fileshare/src/org/eclipse/ecf/fileshare/IFileShareContainer.java?rev=HEAD&cvsroot=Technology_Project&content-type=text/vnd.viewcvs-markup viewcvs: IFileShare]
 
* asynchronous send and receive with events
 
* asynchronous send and receive with events
*
+
 
 +
== RSE and Remote Files APIs ==
 +
 
 +
* Currently, RSE uses the RSE files API on its backend
 +
* Allows to present whatever backend implementation as an EFS on its frontend
 +
* Eventually, RSE could also accept EFS providers on its Files backend. The value-add of RSE over plain EFS would then be
 +
** persistent caching
 +
** access to remote resources outside the workspace
 +
** connection and filter management
 +
*** selection of channels
 +
*** password/keyring management
 +
** association of shell and other channels with the files channel

Latest revision as of 05:45, 29 May 2006

This page compares features and use cases for remote file access APIs that are currently found in Eclipse.

This document is under construction, not finished yet.

Contents

[edit] Eclipse Remote File APIs

[edit] RSE Files API

  • viewcvs: IFileService.java
  • viewcvs: IHostFile.java
  • Supports remote move, remote copy operations
  • Categorization of remote files, including support for symbolic links (derived classes of IHostFile)
  • Use Strings as canonical pathes (with '/' file separator)
  • Very lightweight and simple to implement since only Strings and two interfaces
  • Synchronous operations for upload, download (with IProgressMonitor, suitable for jobs)
  • No callbacks or other "watch" facilities
  • Supports remote file encodings different from local
  • RSE implementation does persistent caching of remote files

[edit] Eclipse Filesystem (EFS) API

  • viewcvs: IFileStore.java
  • Overview on bug 106176 plan: provide more flexible workspaces
  • Existing sample implementations for ZIP and FTP file systems
  • Fully integrated with Platform Resources, allows transparent access to remote files
  • Fully abstract notion of remote pathes through URI for the root, plus parent/child relationships for the siblings
  • Supports remote move, remote copy operations
  • Synchronous operations for upload, download (with IProgressMonitor, suitable for jobs)
  • Originally written for performance optimizations on the local file system (through native calls), plus fully abstract access to remote file stores like databases
  • No notion of symbolic links or other advanced attributes
  • No callbacks or other "watch" facilities
  • URI has been criticized to be heavy-weight (but is only needed to specify the filesystem root, not necessarily the siblings)
  • Registered via extension point - problematic if multiple different implementations for the same access scheme exist, e.g. two implementations for "ftp:" access scheme in URI
  • API for file caching during the current Eclipse session

[edit] Team/Target Management API

  • Will be dropped in favor of EFS, according to the Platform/Team group.
  • Will then provide FTP and WebDAV implementations for EFS

[edit] ECF fileshare API

[edit] RSE and Remote Files APIs

  • Currently, RSE uses the RSE files API on its backend
  • Allows to present whatever backend implementation as an EFS on its frontend
  • Eventually, RSE could also accept EFS providers on its Files backend. The value-add of RSE over plain EFS would then be
    • persistent caching
    • access to remote resources outside the workspace
    • connection and filter management
      • selection of channels
      • password/keyring management
    • association of shell and other channels with the files channel