FARGOS/VISTA

FARGOS/VISTAâ„¢ is the unique technology upon which most of FARGOS Development, LLC's offerings are based. It provides a transparently distributed, high-performance, multi-threaded, architecture-neutral, object-oriented, peer-to-peer environment that runs on a variety of operating systems and hardware platforms. While it is technology that is continuously being enhanced, it benefits from a decade of research and deployment experience with advanced peer-to-peer systems. The history and meaning of the FARGOS/VISTA acronym is discussed here.

FARGOS/VISTA is used by programmers to easily build and maintain complex, robust distributed systems that run in a global, multi-lingual environment. The standard FARGOS/VISTA runtime supports deployment of architecture-neutral object code (compile to one object file, use anywhere), persistent objects, an integrated HTTP server, and browsing of objects (regardless of location) using a web browser. Dynamic loading of platform-specific object code is supported if the underlying host operating system has the capability. A variety of profiling statistics are automatically maintained (see FARGOS/VISTA System Information Attributes for details).

If you need to build distributed applications, FARGOS/VISTA is definitely something you should use. While not an exhaustive list, FARGOS/VISTA addresses the following issues:

support for independent development
FARGOS/VISTA is designed to enable the utilization of code written by different developers without requiring the exchange of header files. A developer can correct or enhance a piece of code and the applications that utilize it do not need to be recompiled or re-linked.
high-performance multi-threading
While native operating systems have process creation rates on the order of 20 per second, the multi-threading support within the FARGOS/VISTA Object Management Environment achieves thread creation rates of several thousands of threads per second.
polymorphism and allomorphism
FARGOS/VISTA permits a class to inherit from more than one class (i.e., multiple inheritance). This enables a programmer to add capabilities to her application merely by inheriting a class that provides the needed functionality. Allomorphism removes the need for common base classes and permits applications to provide and make use of services that share no common features other than a method prototype.
name spaces and versioning
Collisions with code developed by other organizations is avoided through the use of name spaces; locally developed versions of classes can also replace standard facilities. Versioning permits more than one version of a class to be operational at the same time. This enables non-stop operation, eliminates the need for simultaneous upgrading of all members of a distributed system, on-demand upgrades of persistent data, etc.
security
FARGOS/VISTA provides access control as fine as per object/per user/per method. By default, an object can only be accessed by the user who created it. All interprocess communication is encrypted using randomly-generated 128-bit session keys by Rijndael, the NIST-selected algorithm for the Advanced Encryption Standard.
method overloading
A specific methods can be invoked based on its name and the types of arguments that were passed; a default version of the method can process argument combinations that were not explicitly handled (this is actually the most common usage).
self-describing environment
The type of every item of data can be examined at runtime. Applications can retrieve the meta information for each object, such as class name, version Id, instance variable names and types.
reflection
Per-object and per-class meta objects can be set, which causes method invocations to be handled by another application within the FARGOS/VISTA Object Management Environment. This powerful and flexible capability can be used to introduce bug fixes into running systems or fix code for which the source is not available. Applications that need to intercept arbitrary (and thus unknown) method invocations against an object are trivially implemented using meta-objects. Some examples include debugging (e.g., tracing method invocations), on-demand conversion of persistent data, forwarding invocations to another process.
dynamically-loaded code
All FARGOS/VISTA Object Management Environments support the dynamic loading of OIL2 Architecture Neutral Format (OIL2 ANF) object code. On platforms that support it, native object code can also be dynamically loaded. While dynamically loadable modules are normally loaded when a FARGOS/VISTA Object Management Environment process begins execution, new code can actually be loaded at any time. This enables deployment of new applications or bug fixes without requiring a restart.
intrinsic support for internationalization
A global distributed system will permit users to access servers residing in different countries. With conventional technologies, messages generated by a server will appear in the language of its locale. If the user accessing the server resides in a different country, the server-generated message will quite probably not be in the same locale as the user. For example, users in France and Italy who access a server in Germany would receive messages in German, rather than the French and Italian they would prefer to see, respectively. FARGOS/VISTA handles this issue, plus the problem of enabling computer programs to understand messages (useful for automated system management applications), through its support of a special data type, the Native Language Message.
documentation
Documentation can be maintained with OIL2 source code, permitting programmers to document and comment their source at the time it is written. This provides several benefits since it encourages programmers to make the effort to document their code by eliminating overhead created by the redundancy involved in documenting source code (so that other programmers can perform maintenance) and creating programmer reference manuals, so that other programmers can use the interfaces. The OIL2 compiler automatically generates the relevant structure and elements such as class and method names, descriptions and prototypes. Since the documentation is co-located with the source, the documentation can be kept up-to-date at the time of any subsequent modifications.

Further elaboration is available in the somewhat more in-depth overview of FARGOS/VISTA. That overview is intended to be accessible to both practicing programmers and managers. It is hoped that those who take the time to read the technical overview will realize that FARGOS/VISTA provides solutions to issues that most products have never considered.

Demonstrations and Documentation

Anyone interested is cordially invited to visit the download page and retrieve a copy of the FARGOS/VISTA Software Development Kit for their computer along with any interesting reference manuals. The only prerequisite is the text editor of your choice.

If you are a novice programmer or have never programmed before, take a look at the document "An Introduction to Programming using OIL2".

The "OIL2 Reference Manual" and "FARGOS/VISTA Object Management Environment Programmer's Reference" are two other documents that all FARGOS/VISTA developers should download. Each package of the FARGOS/VISTA Software Development Kit includes a copy of the Object Management Environment class documentation.

All programmers are strongly encouraged to examine the document "FARGOS/VISTA Examples", which provides a rich set of complete examples that cover a wide range of topics. It is hoped that readers will find the annotated source code in this document inspirational: a small amount of code can yield very sophisticated results. Sample source code for a variety of applications is available on the OIL2 and C++ Example Source Code page.

Users who desire to develop an application that integrates with the HTTP server will find additional documentation in the "FARGOS/VISTA HTTP Server Programmer's Guide".

Supported Platforms

Platform Availability Notes
Linux (32-bit ARM) Now Hints on configuring a DE10-Nano
Linux (64-bit ARM) Now Hints on installing Fedora Core 30 on a Raspberry Pi 3B+
Linux (64-bit x64) Now
Linux (64-bit IBM zSeries) Now
macOS X (64-bit x86_64) Now
Windows Vista/7/8/10 Now (95/98/ME dropped January 2012; NT 4, 2000, XP dropped 2019)
OpenBSD (64-bit Intel) Now Our enthusiasm for this platform has declined over the years. It is still one of the safest choices for servers exposed to the unvarnished Internet, but we have not forgotten being burned by bugs long ago, its slowness to support multiple cores and it has become ever more annoying to deal with its quirks. Due to its use of a very obsolete g++, releases are compiled with clang++.
Solaris (64-bit SPARC) Withdrawn If only Oracle had been a better steward.
Solaris (Intel x86) Withdrawn

Pricing

The FARGOS/VISTA runtime is licensed based on the maximum number of interconnected hosts that are permitted to form the distributed system. Each FARGOS/VISTA Software Development Kit includes a license that is limited to a maximum of two hosts to permit no-cost for evaluation and the implementation of conventional client/server-type applications.


Arbitrary inquiries may also be sent directly to sales@fargos.net.