Effi (C )
   HOME

TheInfoList



OR:

Effi is
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
application development framework.


Overview

Effi is application development framework. It provides full range of development tools to create
web-based A web application (or web app) is application software that is accessed using a web browser. Web applications are delivered on the World Wide Web to users with an active network connection. History In earlier computing models like client-serve ...
C++ C++ (pronounced "C plus plus") is a high-level general-purpose programming language created by Danish computer scientist Bjarne Stroustrup as an extension of the C programming language, or "C with Classes". The language has expanded significan ...
software applications with rich
Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
-like
GUI The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
. The framework includes declarative language for application description, provides
API An application programming interface (API) is a way for two or more computer programs to communicate with each other. It is a type of software Interface (computing), interface, offering a service to other pieces of software. A document or standa ...
for
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
documents manipulating, facilities for large data lists representation, thread synchronization,
localization Localization or localisation may refer to: Biology * Localization of function, locating psychological functions in the brain or nervous system; see Linguistic intelligence * Localization of sensation, ability to tell what part of the body is a ...
and data logging. Effi also contains dedicated
libraries A library is a collection of materials, books or media that are accessible for use and not just for display purposes. A library provides physical (hard copies) or digital access (soft copies) materials, and may be a physical location or a vir ...
for interaction with
RDBMS A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relation ...
as well as for data storage and serialization/restoration etc. - the full list of libraries is below. Particular Effi components are distributed as
free Free may refer to: Concept * Freedom, having the ability to do something, without having to obey anyone/anything * Freethought, a position that beliefs should be formed only on the basis of logic, reason, and empiricism * Emancipate, to procur ...
and
open source software Open-source software (OSS) is computer software that is released under a license in which the copyright holder grants users the rights to use, study, change, and distribute the software and its source code to anyone and for any purpose. Open ...
.


Browsers supported

Effi-based applications have web front-end available with the following browsers: *
Internet Explorer Internet Explorer (formerly Microsoft Internet Explorer and Windows Internet Explorer, commonly abbreviated IE or MSIE) is a series of graphical user interface, graphical web browsers developed by Microsoft which was used in the Microsoft Wind ...
7.0+ *
Mozilla Firefox Mozilla Firefox, or simply Firefox, is a free and open-source web browser developed by the Mozilla Foundation and its subsidiary, the Mozilla Corporation. It uses the Gecko rendering engine to display web pages, which implements current and a ...
3.5+ * Chrome 4.0+ *
Safari A safari (; ) is an overland journey to observe wild animals, especially in eastern or southern Africa. The so-called "Big Five" game animals of Africa – lion, leopard, rhinoceros, elephant, and Cape buffalo – particularly form an importa ...
4.0+


List of Effi libraries

* EffiDB package is an implementation of unified Effi interfaces for communication with relational database management systems. The purpose of EffiDB is to provide unified access to various
RDBMS A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relation ...
es and isolate application developer from any low-level interaction with database. EffiDB manages database connections, builds and executes SQL statements and parses query results. It also provides the mechanism for requests results caching and automatically manages the memory. Currently (as of June 2010) supported RDBMSes are MySQL, MSSQL, Oracle and SQLite. * EffiValue package provides universal storage and serialization/restoration mechanism for any C++ data type. It allows to create and transmit heterogeneous compound structures of any complexity without dedicated C++ classes definition. * acommon - collection of basic Effi utilities including
smart pointer In computer science, a smart pointer is an abstract data type that simulates a pointer while providing added features, such as automatic memory management or bounds checking. Such features are intended to reduce bugs caused by the misuse of poin ...
s, localization facilities, exceptions handling etc. * alink - library for modules (.so)
dynamic loading Dynamic loading is a mechanism by which a computer program can, at run time, load a library (or other binary) into memory, retrieve the addresses of functions and variables contained in the library, execute those functions or access those varia ...
. Allows to invoke functions and get class instances from modules. * athread - thread management library. By default C++ executables are not thread-safe, that is their correct work during simultaneous execution by multiple threads is not guaranteed. athread provides thread synchronization facilities for thread creation, isolation, start, deletion and memory management. * adecimal -
decimal floating point Decimal floating-point (DFP) arithmetic refers to both a representation and operations on decimal floating-point numbers. Working directly with decimal (base-10) fractions can avoid the rounding errors that otherwise typically occur when convert ...
implementation for C++ analogous to C# and Java implementations. Decimal computations are carried out to meet precision and rounding requirements established by financial applications. * aparser - library provides API for reading and manipulating
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
documents. Actually aparser library is a C++ wrapper for common XML parser library Libxml2 written in C. aparser supports main Libxml2 functionality without introducing any new functionality. Using C++ library as opposed to a C library increases the productivity of application code writing, namely it provides automatic memory management in common cases and simplifies notation for application developers. aparser library can parse an XML document: read it into memory, validate data, build a document tree. This makes it possible to carry search within the tree, modify XML data as objects of this tree structure and create result into file or an std::string. The library can also be used to create new XML documents from scratch. * ardbms - library is an implementation of unified Effi interfaces for communication with relational database management systems. ardbms provides uniform access to the set of RDBMSes and supplies low-level interaction with database. ardbms manages database connections, builds and runs SQL queries and parses query results. It also provides requests results caching and automatically manages the memory. ardbms supports MySQL, MSSQL, Oracle and SQLite DBMSes through appropriate libraries: ** mssql_impl ** mysql_impl ** oracle_impl ** sqlite_impl * aserializer - data serialization/restoration. Serialization in the Effi framework is a process of converting data (perhaps complicated data structure) into a sequence of bytes so that the sequence can be stored or transmitted across a network. The opposite operation is Restoration. Currently Effi has 3 serialized stream formats implemented: XML, binary and URL. * data - universal storage for any C++ type including XML-like structures and arrays of heterogeneous data. * datalist - library is devoted to representation of lists of data (notably long lists like 1 million items) in GUI. The library provides operations on the lists such as sorting, filtration, search and splitting list into short portions; it ensures live scrolling and pagination. Two implementations are available: DataList and DBList. DBList deals with data queried from database. DataList implies that there is local copy of data collected, and all the operations are being performed on this data copy; thus DataList gives an opportunity to work not only with data extracted from the database but also with data collected in any other way. * protocol - application server devoted to manage interdependent applications at runtime. The library dispatches server requests execution so that optimize overall performance. On request submission protocol library determines the most effective executor for the request (the request can be executed in the same process or on the same computer or somewhere else) and passes the request there. Execution result (if any) is being returned to the original invoker. * jss - interface for JavaScript Server that allows to call JavaScript from C++ code and vice versa. * Persistent Storage Service (PSS) - utility allows to store data per session, per user or per window. As a result, it provides depositary for data that determines system state. The library has two implementations to store data in database and in file: ** PSSDB ** PSSFile * Services - there exists a number of libraries that can be utilized as useful applications for distinct purposes. ** Bridge - communication tool that passes data between applications. There are 2 implementations for different protocols: ***

*** Webservices ** DLLoader (Dynamic Library Loader) - makes it possible to run several applications (load several libraries) within one process. It allows to configure libraries distribution among processes. ** TaskMan - manages application behavior on particular function calls (events). The nature of some such events does not allow developer to determine what action is to be performed when the event occurs. TaskMan allows to configure this conditional behavior, it is also possible to configure it via GUI. Both synchronous and asynchronous actions execution are available. ** Authorizer - provides authentication and authorization facilities. Authentication is being performed not only for user login, but also on application components inter-communication. Access rights are being verified on each method call. ** DynAttrMan (Dynamic Attribute Manager) - provides a mechanism to store custom objects attributes. Sometimes developer needs flexible approach to manage arbitrary attributes for objects application deals with. DynAttrMan makes it possible to handle such attributes without database scheme alteration. ** FileMapper - allows to edit large data objects stored in database by means of appropriate editors. Data are being extracted from the database to temporary file and can be handled as usual file by proper application. File saving synchronizes the database immediately. ** Multimedia - tool that operates images and multimedia data. The library coupled with dedicated JavaScript controls offers toolkit to completely handle multimedia and images. Library isolates application developer from multimedia data specific and allows to perform actions like format conversion, scaling, sizingm thumbnailing etc. ** SMS-gate - application that enables integration with SMS service providers. * sws - Web service, web-service that transforms XML description of UI windows and elements into GUI representation. *
automated test In software testing, test automation is the use of software separate from the software being tested to control the execution of tests and the comparison of actual outcomes with predicted outcomes. Test automation can automate some repetitive bu ...
framework -
Selenium Selenium is a chemical element with the symbol Se and atomic number 34. It is a nonmetal (more rarely considered a metalloid) with properties that are intermediate between the elements above and below in the periodic table, sulfur and tellurium, ...
-based library includes automated test framework that can be adopted to create application tests set. Effi has built-in mechanism that automatically generates primitives for automated test library.


Effi-based products

ASoft uses Effi framework for own development. Wide range of products have been created with Effi platform: *
Geographic information system A geographic information system (GIS) is a type of database containing Geographic data and information, geographic data (that is, descriptions of phenomena for which location is relevant), combined with Geographic information system software, sof ...
for cartography data storing, managing and representation * Report builder providing tools to compose and run database queries of any complexity and represent the result using pre-configured layout * Products for the Ministry of Internal Affairs of Russia: ** Storage and search system for criminal cases materials. ** Search federal system of genetic identification. ** Unified automated information system for duty units.


See also

*
Boost (C++ libraries) Boost, boosted or boosting may refer to: Science, technology and mathematics * Boost, positive manifold pressure in turbocharged engines * Boost (C++ libraries), a set of free peer-reviewed portable C++ libraries * Boost (material), a material ...
*
Standard Template Library The Standard Template Library (STL) is a Library (computer science), software library originally designed by Alexander Stepanov for the C++ programming language that influenced many parts of the C++ Standard Library. It provides four components ...


References

{{Reflist


External links


EffiDB library

EffiValue library

Effi home page

ASoft home page
C++ libraries Free software programmed in C++ Free computer libraries Data serialization formats