Dimeric Software logo

Products

Rinse - Remote Application Architecture

Rinse is to Delphi as RMI is to Java -- in other words, Rinse is a remote method call architecture (similar to DCOM, SOAP, CORBA, etc.) that is specifically designed to work with Delphi's type system. The most frustrating thing about using other distributed application frameworks is that they require you to "dumb down" your interfaces. You cannot take advantage of the rich type system offered by Delphi. This has many negative implications on software development.

With Rinse, you can develop distributed applications that make full use of Delphi's type system. You can use objects (via interfaces), arrays (static, dynamic, and open), sets, enumerations, sub-ranges, records, and variants (including variant arrays) in your distributed applications. Rinse offers a host of other features -- for more information, see the Rinse Feature List.

Rinse offers superior code reuse, because Rinse services can be used by any of the following types of consumers: 2-tier applications, 3-tier clients, 3-tier servers, and web applications. Furthermore, Rinse services use the ideal parameter types for the task at hand.

Rinse has already been used to build a dozen production applications -- including this very website! We defined a handful of Rinse services to take care of the database access, credit card processing, etc. This keeps the web pages (DSP pages) clean, and isolates the business logic from the presentation. Down the road, we could easily split these into two separate physical tiers, but for now they both reside in a single process (the web server application).

You can learn more about Rinse online in the following documents, which are also included in the trial and full versions.

  • The Rinse Tutorial is a good step-by-step introduction to programming in Rinse. Each step builds on previous steps, to create fully functional client and server projects that illustrate the functionality of Rinse.
  • The Rinse Introduction is a good reference guide that discusses the various features of Rinse. It is more detailed than the Rinse Tutorial, but does not provide any examples of complete Rinse projects.


Dimeric Server Pages (DSP)

Dimeric Server Pages combine the convenience and flexibility of web development tools such as ASP and JSP, with the speed and robustness of Delphi. DSP allows you to build web pages that contain embedded Delphi code. This code is not interpreted -- it is compiled. There are many advantages to this approach, including

  • Strong Typing - Take advantage of Delphi's type system, to find errors at compile-time instead of run-time.
  • Native Code - DSP applications are compiled by Delphi, so they enjoy the same performance as other Delphi applications.
  • Leverage Existing Code - Build your web application using any Delphi code units at your disposal, including reusable business logic you may have from other projects, or even third-party libraries.
  • Integrated Debugging - Use Delphi's debugger, including breakpoints, exceptions, call stack, single-stepping, etc., to debug your DSP applications.
  • Mix Code and HTML - The overall philosophy of DSP, as with ASP and JSP, is to have a single web page that mixes code and HTML. This is easier to develop and maintain than other approaches to web development.

For more information, see the DSP Home Page.

To download a trail version of DSP now, or to purchase the full product, go to the Downloads page.


Virtual Database Library (VDB)

VDB is an abstract database access library for Delphi versions 5, 6 and 7. Of course, Delphi already comes with four database libraries: BDE, IBX, dbGo, and dbExpress. There are also third-pary database libraries (e.g. Advantage Database, DBISAM, Flash Filer, etc). VDB is not a replacement for these -- rather it is an abstraction for them.

With VDB, you can develop Delphi applications that do not depend on any specific database access library. Therefore, you can easily switch from one library to another -- even without recompiling! VDB has many other great features, including:

  • VDB is more streamlined and object-oriented than the component-based libraries.
  • VDB is interface-based, for simplified memory-management.
  • VDB implements connection pooling, which is ideal for multi-threaded server applications
  • VDB offers automatic adaptive query preparing and caching, which takes the guesswork out of preparing queries (and also makes prepared queries usable with connection pooling).

For more information, see the VDB Home Page.

To download a trail version of VDB now, or to purchase the full product, go to the Downloads page.


Dimeric Software Utilities (DSUtil)

DSUtil is a general-purpose utility library that comes with VDB, but can be used without VDB (especially in non-database applications). DSUtil includes such highlights as:

  • String Manipulation
  • Sorting and Searching
  • Streams and Persistence
  • Expression Parser and Evaluator
  • List Containers
  • Map and Set Containers
  • TCP/IP Sockets
  • HTML Content Parsing and Manipulation
  • Web Server Framework
  • Web Server Plug-In Architecture
  • Checksum Algorithms (CRC, MD4, Adler)
  • And Much More...

For more information, see the DSUtil Home Page.

To download a trail version of VDB (including DSUtil) now, or to purchase the full product, go to the Downloads page.


Upcoming Products

Watch for announcements about the following products. These tools have been in use for quite a while, and when we're done polishing them up, you can add them to your programmer's toolbox.

Ginkgo - Business Data Object Framework

Ginkgo is actually the first tool we started to build several years ago. It offers a more object-oriented approach to building database applications. Rather than working with directly with datasets, you build your application (especially your reusable business logic) using business data objects. In a nutshell, a business data object is a "better dataset" -- better because it has properties with specific names and data types. This means that you'll find errors (such as misspelled field names, or improper data type usage) at compile-time, rather than run-time.

Ginkgo examines your database, determining the name and type of every column in every table. For each table, Ginkgo generates an object type (an interface) complete with a property for each column. The properties have the names and data types that match the database columns.

Ginkgo business objects have built-in abilities, such as reading an object from the current row of a dataset, generating SQL for inserting or updating an object (including optimistic locking), and streaming (including support for Rinse applications).

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