Dimeric Software logo

Rinse Features

Support for Delphi data types

  • Use real data types, such as
    • String, Integer, Char, Boolean, Double, TDateTime, Currency, etc.
    • Sets
    • Enumerations
    • Sub-Ranges
    • Records
    • Interfaces
    • Static Arrays
    • Dynamic Arrays
    • Open Arrays
    • Variants
    • Smart Records (combining the best features of interfaces, records, and datasets)
    • Smart Lists (automatically generated type-safe lists)
    • Smart Iterators (automatically generated type-safe itertators)
  • Support for all four parameter-passing modes: by value, const, var, out.
  • Full support for distributed exception handling.
  • Define remote methods using any Delphi calling convention.
  • Define remote interfaces with overloaded methods.
  • A network of objects is transmitted intact.
  • String transmission is optimized to send a given string or object only once.
  • In short, applications are designed with interfaces that have ideal parameter types.

Interface Definition Language

  • Define interfaces in .rinse files, which use Delphi syntax.
  • There are no binary .tlb files, making dependencies easy to determine, and simplifying deployment (no registry requirements).
  • The Rinse tool translates .rinse files into .pas units.
  • The Rinse tool is a command-line program and an IDE add-on for automatic translation.
  • Refer to data types defined in external .pas units.
  • Build applications with reusable .rinse files.
  • Rinse can automatically generate an implementation class for a data interface.
  • Rinse can automatically generate container interfaces and implementations.
  • Planned support for other languages (Java). Planned support for Kylix (Delphi for Linux).

Runtime Support

  • Compile the Rinse Runtime Library (implemented in Delphi) into the client and server applications.
  • Optionally compile the server directly into the client, to debug the entire application as a single process.
  • Rinse can be extended to support new network protocols.

Supported Protocols

  • TCP (via Indy)
  • HTTP (via Indy and/or DSP)
  • Local (single process, for debugging)
  • Wrapper (no streaming; single process; for single-tier apps)
  • Other network protocols may be added (plug-in architecture)

Transport Layers

  • Named Services
  • Unique Services
  • Stateful Services
  • ZLib Compression
  • Threaded Clients
  • Synchronized Servers
  • Status Clients and Servers
  • Other transport layers may be added (plug-in architecture)

Communication Features

  • TCP / HTTP can automatically launch server via Houston service (comes with Rinse).
  • Automatic reconnect upon server/network failure, and automatic retry of failed request.
  • Using stateful services, the client application will be notified when connected to a new server object (due to server/network failure or service timeout). Client application can automatically re-login and re-submit the previous request.
  • Client applications can easily implement fail-over and load balancing policies.
  • Rinse offers centralized control over remote connections, making it easy to disconnect and/or re-connect to a different server.
  • QueryInterface is remotable.
  • Full type information in each request (via a checksum), ensuring client and server use same version of interfaces etc.

General Architecture

  • Remotable interfaces may be used directly by the following different kinds of consumers:
    • 2-tier applications
    • 3-tier clients
    • 3-tier servers
    • and web applications
  • Rinse applications can easily use VDB connection pooling.
  • Full DataSnap (formerly MIDAS) support, including design-time.
  • Server objects are loosely coupled via Rinse context.
  • The context object manages transactional resources, such as databases.
  • A server object may support multiple remote interfaces.
  • A server object may use Delphi’s delegation feature to re-use existing implementations of other remote interfaces.
  • A client may access the other interfaces implemented by a remote object using QueryInterface or the as operator.

DSUtility Support

  • Support for passing the following DSUtil types via remote methods:
    • TStrArray (dynamic array of string)
    • TIntArray (dynamic array of Integer)
    • IMemStream (any TStream via TMemoryStream)
    • IMap and IIntfMap
    • ISet and IIntfSet
    • IDataSet (any TDataSet via TClientDataSet)
    • IStringList (interfaced wrapper around TStrings)
    • IList (dynamic list of variant values)
    • IStringList
    • IPropertyBag
    • ISmartRecord
    • IIterator

   Privacy Policy © 2002 Dimeric LLC. All Rights Reserved. Contact Us   
> Powered by VDB, DSP and Rinse <