real-time computing 【推荐阅读:Implementing Busines】
theres an old rule in software engineering: "building to scale requires prior intent." many applications delivered today fail to address scalability; they get deployed fast and sink faster as the load cripples them.
the advent of j2ee 1.3 goes part way toward providing an environment built to scale. the adoption of jms- and message-driven beans, as a mandatory addition to j2ee, solves part of the puzzle, but the marriage of jms with jcache (jsr 107) makes life much more interesting.
john bentley, author of programming pearls, coined a phrase called the "ah-ha!" moment - the moment when you fully understand the dimensions of the problem and, as a consequence, the solution becomes obvious. those of us who have read the famous gang of four book on programming design patterns, design patterns: elements of reusable object-oriented software, will appreciate the elegance and no doubt say, "of course, i used that pattern on my last project." the marriage of jms and jcache is an architectural recipe for distributed systems and gives rise to further patterns as we understand the dimensions of the problems were trying to solve.
in this article we look at how these technologies can be used to provide scalable architectures for delivering j2ee-compliant, web-based applications today and support what we need to deliver tomorrow by exposing some architectural patterns based on jms and jcache.
a history of distributed systems
meanwhile the real-time computing community was also looking at more asynchronous forms of communication. the techniques used in the late 1970s and early 80s were largely event-driven and used communication mechanisms for message exchange in multithreaded and multiprocessor environments. indeed, much of what was done in those days is reflected in the black art that underpins the building of device drivers.
the building of multitier applications and the rise of the internet has focused a lot of attention on the techniques for building distributed systems. when java was born it had remote method invocation built into the language. it supported sockets to enable interprocess and intraprocess communication. while the device drivers for socket handling were asynchronous, the standard mechanism for implementing multitier applications remained ro... 下一页