Batches are a new approach to relational database access, remote procedure calls, and web services.
A Remote Batch statement combines remote and local execution: all the remote code is executed in a single round-trip to the server, where all data sent to the server and results from the batch are communicated in bulk. Batches support remote blocks, iteration and conditionals, and local handling of remote exceptions. Batches are efficient even for fine-grained interfaces, eliminating the need for hand-optimized server interfaces.
Batch services also provide a simple and powerful interface to relational databases, with support for arbitrary nested queries and bulk updates. One important property of the system is that a single batch statement always generates a constant number of SQL queries, no matter how many nested loops are used.
You say in your presentation that "You cannot solve this problem without changing the language, at some level." Actually, in C# at least, one can do a few interesting things without having to modify the language or the compiler. I describe a library based approach on my blog (http://softwaretransactions.com/2011/10/14/traced-execution/); admittedly it is not quite as clean or powerful as a language based implementation.
ReplyDeleteYes, we tried some things like this (and even published them) but they were not good.
ReplyDeleteIndeed, I wouldn't characterize my approach as being a proper solution ;-). However, in a production environment it has the advantage of being cheaper and safer as people are reluctant to modify a compiler or the generated code. Have you got a link for your publication?
ReplyDeleteIn terms of C#, Roslyn looks promising, have you had a chance to look at it?