New-age Transactional Systems - Not Your Grandpa's OLTP
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
The content has been bookmarked!
There was an error bookmarking this content! Please retry.
Posted by Boris Lublinsky on May 25, 2008
In November of 2006 .NET 3.0 has introduced a new Web Service implementation platform (WCF) simplifying the design, implementation and deployment of services with essential plumbing for scalability, performance, security, reliable message delivery, transactions, multithreading, asynchronous messaging and much more. In November 2007, release of .NET 3.5 introduced additional WCF features, including support for web programming models such as Plain Old XML (POX), Representational State Transfer (REST), JavaScript Object Notation (JSON) and syndication feeds such as Really Simple Syndication (RSS) and ATOM; Support durable, long running services; Seamless integration between WCF and Windows Workflows (WF) allowing for services to be written as workflows and workflows to invoke services, etc.
With this multiplicity of choices, many .NET developers often do not know which features to choose for their implementations what are the best implementation/deployment practices should be followed in each case. An excellent whitepaper by Michele Leroux Bustamante from IDesign provides an excellent summary on these multiple options. It is build around 5 common scenarios:
The whitepaper summarizes WCF features usage and implementation characteristics of each scenario, a summary of important development considerations, and answers to typical questions related to each scenario.
For the case of Enterprise Web Services whitepaper describes support for web services based on SOAP protocol and additional WS* standards. It includes extensive discussion on security implementations and such new features as Secure sessions, Reliable Sessions and Transactions. It also describes when these advance features should be used along with protocol and deployment options for them.
Web 2.0 services section starts with the detailed description of messaging protocols, prevalent in Web 2.0 implementations, including POX, REST, JSON, RSS and Atom and their support in WCF. It then describes deployment options, security support and client programming models for these protocols.
For the classic client-server applications and distribution of services behind the firewall a whitepaper discusses details of WCF support of binary SOAP messaging over TCP/IP and Named Pipes. Similar to the previous section this one provides a wealth of information on security and deployment option for client-server applications, using WCF.
Asynchronous messaging section describes WCF usage for implementation of guaranteed message delivery, asynchronous calls, disconnected calls and publish and subscribe patterns implementation. It includes recommendations on usage of the binary SOAP over Microsoft’s MSMQ transport, discusses recommended queues topology and security and deployment options for MSMQ transport.
Finally, Workflow section describes usage of WF for coordinating service calls using WF runtime and exposing a workflow as a higher level service. A whitepaper also introduces a notion of WF persistence as a way for implementation of long running (durable) stateful services.
The whitepaper is a very useful reference for everyone who is trying to navigate in an extremely rich and powerful WCF framework and is seeking a practical advice on a WCF usage for solving their specific problems.
That's something that happens PRIOR to publishing, right?
Apologies for the advert, but we have found WCF a good environment to work with for queued applications and other integration scenarios - but using RabbitMQ instead of MSMQ. RabbitMQ is a commercially supported open source messaging product that works across multiple programming languages using AMQP wire level integration.
You can download code, and read about user scenarios in the PDF documentation here. Cheers, alexis.
John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.
Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.
Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.
Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).
Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.
Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.
One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.
InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.
2 comments
Watch Thread Reply