Version: 3.0.4.0
Add comprehensive secure file transfer capabilities to any .NET application.

PowerTCP FTP for .NET is designed to give developers the ability to add secure file transfer capabilities to their Windows or ASP.NET web applications. The product optionally secures the network connection to ensure that data can't be intercepted and that users can be authenticated. The FTP component can be used to transfer individual or multiple files using wildcards, and transfer data as streams rather than files. Direct access to the underlying connection is also provided, if a high level of control is required. Security options include support for TLS, SSL 3.0, SSL 2.0, and PCT, plus the ability to auto-negotiate connections with FTP servers. Support is also included for client and server authentication using x.509 digital certificates, and the ability to manage those certificates.

Background:
Transferring data across the Internet often requires more than meeting the minimum corporate security requirements. While many modern applications require data to be read from, or saved to, files and transferred across the Internet, these applications must also ensure that data is secure, and that users are authenticated. The traditional method of moving files over a network using FTP has been extended with several security techniques. These techniques have been coupled with standard encryption and authentication mechanisms in order to secure a number of different Internet protocols.

Technical Solution:
PowerTCP FTP for .NET enables software developers to quickly add both simple file transfer requirements, and complex file management needs to their applications, while encrypting data and providing x.509 certificate authentication. Standard file or stream transfer functionality is available using methods and properties. Directory listings are returned as arrays of ListEntry items. These arrays can be queried for information about what is on the server, eliminating the need for complex parsing code. For more demanding requirements, a raw connection option is available for non-standard connections and custom commands can easily be sent to the serve. In addition, access to the underlying TCP connection is available. The Ftp component can be configured for most major proxies and all major functions are available in both synchronous and asynchronous versions.

Security can easily be turned on or off and certificates are managed through a convenient CertificateStore object that returns Certificate objects representing x.509 certificates. The CertificateStore object keeps track of all certificates at a specified location and can be used to search for certificates that meet specific criteria. The Certificate object contains detailed information about a certificate that can be used to decide whether a certificate is valid or should be rejected. For example, if the domain name or the Certificate Authority does not meet security requirements, the application can choose to end the connection rather than authenticate the user.

For debugging help during the development process, the FTP component includes a design-time Editor that lets you test file transfers and the secure connection without compiling. Properties set in the Editor are recorded directly into your code, and a real-time feedback window gives you a detailed view of client-server communications.

Technical Innovation:
The FTP component is one of the first FTP components that supports both Explicit and Implicit secure connections. Because there is not a unified standard for FTP security, the FTP component supports both these connection standards. Not all developers require both encryption and authentication. Authentication can be ignored by simply setting a property.

The component includes several technologies that enable better scalability and preserve ease-of-use. By using a multi-threaded design, application performance is increased and application bottlenecks are avoided. Directory listings are returned as an array rather than just a string of directory information. The array consists of ListEntry objects for every file and sub-directory. This approach allows for traversing a directory listing in an object-oriented manner, rather than writing parsing code to identify a particular token.

Data contained in a stream can be sent to an FTP server as a file. Conversely, a retrieved file can be stored directly in a stream. Multiple files can be manipulated using wildcards. The powerful Delete() method not only deletes remote files, but can also be used to delete directory trees. Developers can choose to write code in a blocking manner, meaning code execution does not proceed until a procedure, such as a file transfer, completes. Alternatively, code can be written in a non-blocking fashion, in which case events will be raised when methods complete. Providing both approaches enables developers to choose their preferred method of development based on the needs of their application.

Usage Scenarios
Customers will typically use the FTP component as part of a process that periodically retrieves a file, such as a report, from a server for further processing, or as part of an application that saves data to a file and then places it on a remote server for other applications to access. The Ftp component can also been used to create web-based FTP clients. Projects often require that data be encrypted or users authenticated, especially to meet such requirements as HIPAA.

Details:

Feature PowerTCP Major Competitors Native .NET
Standards Compliance Follows RFC 959 Follow RFC 959 Only available if using the Internet Explorer COM control and includes limited FTP features.
Supports Files and Streams Either streams or files can be used as for storing or retrieving files. Most products exclusively work with files. Not Available
Licensing Per Developer/Royalty Free Per Developer/Royalty Free Not Available
Support for FTP Security Supports both Implicit and Explicit security. Usually only support a single option or no security. Not Available
Certificate Management A CertificateStore object returns certificates as Certificate objects that can be queried for information. Varies. Not Available
Batch Operations Supports wildcards for multiple file transfers and includes the powerful Delete method. Limited wild-card support or none. Not Available
Directory Listings Returned as an array of ListEntry objects. A string that needs to be parsed by the developer. Visible interactively
Proxies Supports most major proxy servers. Varies. Some proxy support in Explorer setup
Methodology for Sending Commands to the Server Data is sent using methods and can be received in either a method for synchronous operations or an Event for asynchronous operation. Data is sent using methods and received in an Event Not Available
Architecture Both Synchronous (blocking) and Asynchronous (non-blocking) using multi-threading. Asynchronous Only (non-blocking) Uses Internet Explorer
Samples Ships with ASP.NET, C#, and VB.NET samples Varies Limited
Design Data is managed using overloaded methods that support different datatypes, plus full access is granted to the underlying TCP connection for advanced usage. Data is handled with strings or bytes through different methods. Not Available
Documentation Comprehensive help that is integrated with the Visual Studio IDE using the Help 2.0 engine with full dynamic help and tutorials. Use the Help 1.3 engine and provide minimal documentation. Limited