Akorn is an advanced application toolkit that enables the ability to configure an application into existence rather than coding from scratch or using an external application. However, it is designed to be extremely flexible allowing for extending of the toolkit easily and the incorporation of custom code if necessary.
The concept of Akorn evolved from the observations that business applications fall into two camps: a) High-end, very expensive applications such as ERP systems and b) applications with limited web functionality or built using desktop tools such as spreadsheets or personal database software. The items in camp A have drawn a disproportionate amount of resources from most organizations making it necessary to develop non-mission critical applications using camp B technology. This has produced many difficulties and ultimately greater expenditures in the end. As the applications in camp B become more and more critical to business operations they must scale up as well as become more dependable. Using desktop technologies makes meeting the scale and dependability objectives very difficult realistically. The only way to scale and improve reliability is to move the application from Camp B into Camp A…until today.
Akorn was originally envisioned as a toolkit to rapidly build robust scalable business applications. As its development progressed, a broader notion took shape. Namely that the toolkit should allow the technically competent functional person to build business applications that will not require a “rip and replace” once it proves its usefulness. The toolkit is extremely capable and will satisfy a wide range of development needs but we think its greatest impact will be made within companies that have relied on technology in camp B for its business needs.
Akorn is a 100% web based application that can operate on virtually any operating system, database, and web browser in use today. One of the frustrations that Akorn eliminates is the need to have specific hardware and software configurations on either the server or the client. Akorn is designed from the ground up to operate in the most hardened environments so it will operate on virtually any configured environment out there. In addition, it is designed to be 100% web based and use AJAX instead of Java Applets or Active X. This allows the client computers to access the applications without having to install any applications or expose themselves to additional known security risks.
The Akorn toolkit is really a combination of a few core capabilities and components that can be extended, replaced, or added. Akorn is designed to be modular with a common methodology used to perform operations and communicate with the client computer. Akorn uses a form of MVC with the hybrid approach to the view and model. This greatly simplifies the management of an application as well as improving performance of the application.
Akorn relies on a templating system to communicate with the client. The templates used in Akorn are pure templates that render data generated by the components or other objects in the application. While it is possible to build logic into the templates, Akorn is designed to incorporate most, if not all, logic in objects outside of the presentation layer. This allows the rapid creation of templating systems without the need to replicate unique application logic. By removing logic from the templates, it is possible to reduce the number of templates used and improve the transportability of templates between applications. The current template Akorn ships with is based on the Qooxdoo project. This is a cross-browser, object oriented, javascript interface that provides significant flexibility and capabilities providing a fantastic foundation to build on.
The included template provides so much functionality that it can replace most client server based applications as well as all web based applications. It also doesn’t require any special browser configurations, Java applets, or Active X components. This makes it easy to deploy, easy to maintain, eliminates client setups, and prevents exposure to known security threats.
OK, this sounds like your typical application toolkit that requires you to learn a new language…the toolkit language. We know that picking-up toolkits and using them immediately is an ambitious goal but we believe Akorn is as close as you can get for a toolkit with so much capability. We lived through the learning curves of several toolkits and we vowed to make this one easy to learn and use without sacrificing functionality or capability. Most toolkits derive great flexibility by making the developer code each page with helper functions which means you still need to code pages. On the other extreme there are very flexible applications of limited capability such as content management systems (CMS) in existence today. Akorn bridges this gap by making it very easy to configure an application into existence using the tools built into Akorn and eliminating most, if not all, of the custom code. So I still need to code something you’re thinking. Well reality dictates that every application has some form of uniqueness that can’t always be incorporated into generic components. So Akorn, provides an extremely flexible capability to incorporate custom code while also providing nice helper functions to access Akorn capabilities throughout the code and handling the 80% of an application that is not unique in its capability such as forms, lists, menu, security, etc…
So far this sounds a lot like a CMS…right. No, not at all. Akorn is designed for building robust applications far beyond those capable of support by a typical CMS. Most CMS’s gain their flexibility by relying on information and configurations stored in a database. Upon each page load, the database must be accessed. This approach has a very limited performance envelope because it cannot scale beyond the database capacity. Databases are generally restricted to a single server entity and can only scale to the capacity of a single server, which can be quite large and correspondingly expensive. Akorn solves this problem by using its flexible configuration capabilities in configuring the application and storing those configurations in definition files. By using files, the application can easily replicate across multiple servers and application performance is not reliant on a single database. Through the flexible data source connections in Akorn, it is even possible to move data to or connect to data in other data sources within one comprehensive application. This capability greatly improves the scalability by removing the reliance on a single database scenario. Furthermore, you can optimize the data sources based on their use. For example, high volume access that is fairly static may be contained in a MySQL database while frequently changing customer order information may be contained in an Oracle database.
Beyond the database, Akorn makes extensive use of Asyncronous Javascript and XML (AJAX) which sends only a fraction of the data across the network that a typical web application requires. Since web applications already generally use a fraction of the bandwidth consumed by typical client-server application, an Akorn application will have a tiny impact on network capacity requirements. In addition to reducing the bandwidth capacity requirements within an intranet, it can greatly improve performance for internet connected users on slow or congested connections.
We didn’t stop with AJAX. The included interface template is an advanced javascript framework that requires far less data than a traditional html based web page. This also significantly reduces the amount of bandwidth used by an Akorn application over traditional AJAX only applications. The bottom line is that it is difficult to beat Akorn for network capacity efficiency.
Akorn is designed to operate smoothly in the most hardened OS and datacenter environment. There are known PHP exploits that many toolkits and frameworks continue to employ despite the well documented dangers simply because it is convenient and easy to do. Akorn has taken the pain up front and worked within the given set of capabilities that attempt to avoid the known security pitfalls.
User access security is designed to enable very tight control over access allowing Create, Read, Update, and Delete functions. Access privileges are maintained through security containers which contain security tags. Items throughout the application are tagged using the security tags. This allows administrators to assign user access privileges based on the tags. The security tag concept allows access control at very broad levels where all items have the same access rights or at very granular levels where specific field access may require special rights. Security tags provide great flexibility without making administration of privileges burdensome.