Previous | Table of Contents | Next |
Computing power and network bandwidth have increased dramatically over the past decade. However, the design and implementation of communication software remain expensive and error prone. Much of the cost and effort stem from the continual rediscovery and reinvention of fundamental design patterns and framework components across the software industry. Moreover, the growing heterogeneity of hardware architectures and diversity of OS and network platforms makes it hard to build correct, portable, and efficient applications from scratch.
Object-oriented application frameworks and design patterns help to reduce the cost and improve the quality of software by leveraging proven software designs and implementations to produce reusable components that can be customized to meet new application requirements. The ACE framework described in this chapter illustrates how the development of communication software, such as high-performance Web servers, can be simplified and unified. The key to the success of ACE is its ability to capture common communication software design patterns and consolidate these patterns into flexible framework components that efficiently encapsulate and enhance low-level OS mechanisms for interprocess communication, event demultiplexing, dynamic configuration, concurrency, and synchronization.
The ACE C++ wrappers, framework components, distributed services, and middleware applications are freely available at www.cs.wustl.edu/~schmidt/ACE.html. This URL contains complete source code, documentation, and sample applications, including JAWS.
Booch, G. 1993. Object oriented analysis and design with applications, 2d ed. Redwood City, CA: Benjamin/Cummings.
Brooks, F. P. 1975. The mythical man-month. Reading, MA: Addison-Wesley.
Fielding, R., J. Gettys, J. Mogul, H. Frystyk, and T. Berners-Lee. 1997. Hypertext Transfer ProtocolHTTP/1.1. Standards Track RFC 2068: Network Working Group. Available from http://www.w3.org/.
Gamma, E., R. Helm, R. Johnson, and J. Vlissides. 1995. Design patterns: Elements of reusable object-oriented software. Reading, MA: Addison-Wesley.
Halstead, R. H., Jr. 1985. Multilisp: A language for concurrent symbolic computation. ACM Trans. Programming Languages and Systems 7:501-538.
Harrison, T., D. Levine, and D. C. Schmidt. October 1997. The design and performance of a real-time CORBA event service. Proceedings of OOPSLA 97. Atlanta, GA: ACM.
Harrison, T., I. Pyarali, D. C. Schmidt, and T. Jordan. September 1997. ProactorAn object behavioral pattern for dispatching asynchronous event handlers. The 4th Pattern Languages of Programming Conference.
Hu, J., I. Pyarali, and D. C. Schmidt. November 1997. Measuring the impact of event dispatching and concurrency models on Web server performance over high-speed networks. Submitted to the 2nd Global Internet Conference, IEEE.
Jain, P., and D. C. Schmidt. June 1997. Service configurator: A pattern for dynamic configuration of services. Proceedings of the 3rd Conference on Object-Oriented Technologies and Systems. USENIX.
Johnson, R., and B. Foote. 1988. Designing reusable classes. Journal of Object-Oriented Programming 1:22-35.
Lavender, R. G., and D. C. Schmidt. 1996. Active object: An object behavioral pattern for concurrent programming. In J. O. Coplien, J. Vlissides, and N. Kerth (Eds.), Pattern Languages of Program Design. Reading, MA: Addison-Wesley.
Mogul, J. C. August 1995. The case for persistent connection HTTP. Proceedings of the ACM SIGcomm 95 Conference in Computer Communication Review, Boston.
Pyarali, I., T. H. Harrison, and D. C. Schmidt. 1996. Design and performance of an object-oriented framework for high-performance electronic medical imaging. Computing Systems 9:331-375.
Schmidt, D. C. 1995. Reactor: An object behavioral pattern for concurrent event demultiplexing and event handler dispatching. In J. O. Coplien and D. C. Schmidt (Eds.), Pattern Languages of Program Design. Reading, MA: Addison-Wesley.
Schmidt, D. C. 1996a. A family of design patterns for application-level gateways. The Theory and Practice of Object Systems (Special issue on patterns and pattern languages) 2(1).
Schmidt, D. C. 1996b. Acceptor and connector: Design patterns for initializing communication services. In R. Martin, F. Buschmann, and D. Riehle (Eds.), Pattern Languages of Program Design. Reading, MA: Addison-Wesley.
Schmidt, D. C., and C. D. Cranor. 1996. Half-sync/half-async: An architectural pattern for efficient and well-structured concurrent I/O. In J. O. Coplien, J. Vlissides, and N. Kerth (Eds.), Pattern Languages of Program Design. Reading, MA: Addison-Wesley.
Schmidt, D. C., A. Gokhale, T. Harrison, and G. Parulkar. 1997. A high-performance endsystem architecture for real-time CORBA. IEEE Communications Magazine 14.
Schmidt, D. C., T. H. Harrison, and E. Al-Shaer. 1995. Object-oriented components for high-speed network programming. In Proceedings of the 1st Conference on Object-Oriented Technologies and Systems. Monterey, CA: USENIX.
Schmidt, D. C., and P. Stephenson. 1995. Experiences using design patterns to evolve system software across diverse OS platforms. In Proceedings of the 9th European Conference on Object-Oriented Programming. Aarhus, Denmark: ACM.
Schmidt, D. C., and T. Suda. 1994. An object-oriented framework for dynamically configuring extensible distributed communication systems. IEE/BCS Distributed Systems Engineering Journal (Special issue on configurable distributed systems) 2:280-293.
Stepanov, A., and M. Lee. 1994. The standard template library. Tech. Rep. HPL-94-93, Hewlett-Packard Laboratories.
Vlissides, J. 1996. The Hollywood principle. C++ Report 8.
Previous | Table of Contents | Next |