Probably a little late to throw this out there but if you have a Microsoft/.NET background, Netduino
will be much easier since it runs .net micro
As for your setup, you want separation of concerns in terms of the server and the controller so your controller can run all of the time and the server becomes the 'guiding hand' per se. That way your controller is 'disconnected' from the server so it can run regardless of any issues on the server-side.
I would architect it like this:
-- Runs brewery based on some type of config source that defines variables for the brewing routine (times, target temps, etc). The source needs to be local, read/writable via Ardunio and the server. Likely a USB stick on the Ardunio board?
-- Stick some folders on the USB stick; /logs (write logging data with Ardunio), /currentBrew (store your current brewery config here which Arduino will use to run the brewery)
-- Reads data from the /logs folder -- so it'll show temp data, times, etc.
-- Able to edit the configuration in the /currentBrew folder
Now Ardunio needs the ability to detect changes to the /currentBrew folder and apply those changes. If you want some type of validation that changes were processed by Ardunio correctly, you can use a /serverCommands folder to store commands for Ardunio to execute. As Ardunio iterates through the commands and successfully executes them, just remove the line from the file. When the line is gone, assume the command was processed.
While not an elegant architecture, Ardunio is very compartmentalized and never has to do any network functions at all other than open up the USB stick to the server. Flat text-file config and log files will make debugging a breeze. And your server doesn't have to do anything fancy but read a log file and write to a text file. Use jQuery mobile for the server UI and you'll have a mobile-ready 'brewery controller'.
Just a very rough overview. If you want some more input, feel free to contact me.