CODE:NEO represents a significant step forward for the C/C++
developer in terms of ease of use and speed of deployment in the
Web services arena. Currently, C/C++ is very rarely the language
of choice for developing dynamic web sites, even though the underlying
operating system, Web server, and libraries are all themselves
usually written in C/C++. This is because it has traditionally
been very difficult to write scaleable applications in C/C++ that
take advantage of the Web’s inherent distributed nature. Any programmer
who developed such an application would typically be forced to
develop large libraries of frequently used routines – that is,
they would spend as much (or more) time developing the web-related
routines as they would actually developing the application they
were building. Additionally, most web servers and applications
are not C/C++ friendly – they do not provide the programmer with
the support services needed to quickly and efficiently develop
in C/C++. However, most companies have a large investment made
in C/C++; thus, web enabling applications is difficult and costly,
as companies frequently have to port software to another platform,
costing time, additional resources, and money.
CODE:NEO provides a solution to this problem. By allowing the programmer to directly embed traditional C/C++ code (including library calls and object instantiation) directly into HTML pages, web-enabling an application in C/C++ becomes a very quick and easy task, with a cleaner separation of the presentation layer and the business logic.
The CODE:NEO system operates in an analogous way to JSP and Java in that the pages are preprocessed and converted into a machine-readable format before execution. However, unlike JSP and Java, the code is written entirely in C/C++, allowing companies to leverage their existing code bases, saving both time and money. Additionally, as code is often reused from existing and tested libraries, CODE:NEO can allow application development with fewer errors, because less recoding is required in order to web-enable an application. Finally, code can execute over ten times more quickly under CODE:NEO as the code is compiled, not interpreted.
To create a CODE:NEO-based web solution, a programmer needs to create instructions for the processor to handle an incoming request. This is accomplished by directly embedding C/C++ code into an HTML page. Once this HTML/C++ page (which we call a Rivet) is translated into pure C++, it may be compiled and linked against developer libraries, third party libraries, system libraries and the CODE:NEO library. Through this linkage CODE:NEO can accomplish significant cost savings by reusing existing software for web development.
After this CODE:NEO binary object is created, it can be placed on a CODE:NEO-enabled web server. When such a file is requested (for example, by an HTTP GET statement) the web server passes control to CODE:NEO Application Server, which performs the function of interfacing CODE:NEO applications to the web server. This server is offered in two basic forms: as an ISAPI extension for Microsoft IIS (or any other ISAPI compliant server) and as a module for Apache web server. The application server also provides other service functionality, such as logging and debugs systems, in order to aid development and increase product quality.
The call to the application server occurs very quickly within the web server. Once execution is within the binary file (known as the “Joint”) the programmer is free to call any C++ or inline assembler instructions they wish, even printf, which will have the effect or printing to the console. If the programmer wishes, he can output data back to the web browser with the simple interface swritef, which uses the familiar ANSI C format string specification.