Efficient
From devices at the edge of the network to servers inside the network, the efficient processing of communications related data is critical. Since traditional operating systems are not built around a communication-centric paradigm they are largely inefficient at managing the flow of data through a system. In addition, traditional operating systems are ill equipped to handle the needs of communications related tasks because communications is left to application designers to manage on a one off basis. This has left OEMs and ISVs building network applications with two choices: a) over-specify the hardware resources to make up for the lack of efficiency b) under-specify the product capabilities. In a market where margins are thin and the cost of goods is critical, neither option is attractive.
Communication-centric
Strings sits on top of existing operating systems, providing a highly efficient engine for enabling communications. The Strings runtime manages the flow of data through the system by selecting the optimal set of services to manage that data. Because of its communications-centric architecture, Strings can ensure that an optimal set of Beads are mapped onto a given data stream and that each data stream is managed with an appropriate level of Quality of Service. This results in substantial benefits in overall system performance and predictability. More importantly, the efficiencies derived from Strings comes with minimal run-time overhead making it at once scalable for network servers and suitable for resource-constrained devices.
Small Footprint
The Bead abstraction used in Strings ensures a high degree of code reuse and typically results in solutions that have considerably smaller footprints than those built on traditional architectures. In addition, since Beads only contain code to implement application logic and not application control, they are inherently smaller than similar components in traditional architectures. The separation of logic and control in an application allows the behavior of an application to be modified without modifying complex application code. As a result applications can be reconfigured at runtime, without the requirement of any additional code.
Global Optimizations
The Strings runtime is able to globally manage communication throughout a running system. This allows Strings to optimally manage data by selecting the optimal set of Beads based on the needs of the system, the network and the media types being handled. By leveraging this global perspective, Strings can provide system wide optimizations while still providing a complete separation of interfaces and implementations. To date the only way to achieve global or system wide optimizations was by exploiting implementation details in vertical applications and monolithic programming. Strings can make global optimizations without requiring application logic to have global knowledge.