Effi
Encyclopedia
Effi is C++
application development framework.
. It provides full range of development tools to create web-based C++
software applications with rich Windows-like GUI
.
The framework includes declarative
language for application description, provides API for XML
documents manipulating, facilities for large data lists representation, thread
synchronization, localization
and data logging. Effi also contains dedicated libraries for interaction with RDBMS as well as for data storage and serialization/restoration
etc. - the full list of libraries is below.
Particular Effi components are distributed as free
and open source software.
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
application development framework.
Overview
Effi is application development frameworkApplication framework
In computer programming, an application framework consists of a software framework used by software developers to implement the standard structure of an application for a specific development environment ....
. It provides full range of development tools to create web-based C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...
software applications with rich Windows-like GUI
Gui
Gui or guee is a generic term to refer to grilled dishes in Korean cuisine. These most commonly have meat or fish as their primary ingredient, but may in some cases also comprise grilled vegetables or other vegetarian ingredients. The term derives from the verb, "gupda" in Korean, which literally...
.
The framework includes declarative
Declarative programming
In computer science, declarative programming is a programming paradigm that expresses the logic of a computation without describing its control flow. Many languages applying this style attempt to minimize or eliminate side effects by describing what the program should accomplish, rather than...
language for application description, provides API for XML
XML
Extensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....
documents manipulating, facilities for large data lists representation, thread
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
synchronization, localization
Internationalization and localization
In computing, internationalization and localization are means of adapting computer software to different languages, regional differences and technical requirements of a target market...
and data logging. Effi also contains dedicated libraries for interaction with RDBMS as well as for data storage and serialization/restoration
Serialization
In computer science, in the context of data storage and transmission, serialization is the process of converting a data structure or object state into a format that can be stored and "resurrected" later in the same or another computer environment...
etc. - the full list of libraries is below.
Particular Effi components are distributed as free
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
and open source software.
Browsers supported
Effi-based applications have web front-end available with the following browsers:- Internet ExplorerInternet ExplorerWindows Internet Explorer is a series of graphical web browsers developed by Microsoft and included as part of the Microsoft Windows line of operating systems, starting in 1995. It was first released as part of the add-on package Plus! for Windows 95 that year...
7.0+ - Mozilla Firefox 3.5+
- ChromeGoogle ChromeGoogle Chrome is a web browser developed by Google that uses the WebKit layout engine. It was first released as a beta version for Microsoft Windows on September 2, 2008, and the public stable release was on December 11, 2008. The name is derived from the graphical user interface frame, or...
4.0+ - SafariSafari (web browser)Safari is a web browser developed by Apple Inc. and included with the Mac OS X and iOS operating systems. First released as a public beta on January 7, 2003 on the company's Mac OS X operating system, it became Apple's default browser beginning with Mac OS X v10.3 "Panther". Safari is also the...
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 RDBMSes 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 pointerSmart pointerIn computer science, a smart pointer is an abstract data type that simulates a pointer while providing additional features, such as automatic garbage collection or bounds checking. These additional features are intended to reduce bugs caused by the misuse of pointers while retaining efficiency...
s, localization facilities, exceptions handlingException handlingException handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of exceptions, special conditions that change the normal flow of program execution....
etc. - alink - library for modules (.so) dynamic loadingDynamic loadingDynamic loading is a mechanism by which a computer program can, at run time, load a library into memory, retrieve the addresses of functions and variables contained in the library, execute those functions or access those variables, and unload the library from memory...
. Allows to invoke functions and get class instances from modules. - athread - threadThread (computer science)In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
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 pointDecimal floating pointDecimal floating point arithmetic refers to both a representation and operations on decimal floating point numbers. Working directly with decimal fractions can avoid the rounding errors that otherwise typically occur when converting between decimal fractions and binary fractions.The...
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 XMLXMLExtensible Markup Language is a set of rules for encoding documents in machine-readable form. It is defined in the XML 1.0 Specification produced by the W3C, and several other related specifications, all gratis open standards....
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.
- adata - 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 back 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:
- http
- 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.
- Bridge - communication tool that passes data between applications. There are 2 implementations for different protocols:
- sws - web-serviceWeb serviceA Web service is a method of communication between two electronic devices over the web.The W3C defines a "Web service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format...
that transforms XML description of UI windows and elements into GUI representation. - automated testSoftware testingSoftware testing is an investigation conducted to provide stakeholders with information about the quality of the product or service under test. Software testing can also provide an objective, independent view of the software to allow the business to appreciate and understand the risks of software...
framework - SeleniumSelenium (software)Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language . It also provides a test domain-specific language to write tests in a number of popular programming languages, including...
-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 systemGeographic Information SystemA geographic information system, geographical information science, or geospatial information studies is a system designed to capture, store, manipulate, analyze, manage, and present all types of geographically referenced data...
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.