"Reply is sent to the same _endpoint_Reply is Send to the endpoint that sent the message" You lost me. Reply responds to the same end point but different instance or Reply responds to the same instance that sent the publish?
So what does Reply do, that Send/Publish/Notify does not? Do you have any good reference material on understanding Messaging or push/pull UI? On Jun 5, 1:02 pm, Ayende Rahien <[email protected]> wrote: > Reply is sent to the same _endpoint_Reply is Send to the endpoint that sent > the message > > Messaging is a great fit for UI, but you need to use it in a push / pull > model. > That is, you get a message, then you tell the UI about it, handling the > cross thread issues along the way > > On Fri, Jun 5, 2009 at 12:48 PM, Jason Meckley <[email protected]>wrote: > > > > > Ah... So in my scenario Bus.Send() is sending the message to a new > > instance of Pong. When Pong replies, it's sent to a new instance of > > Ping, etc... None of these instances are ever displayed to the user. > > > It makes sense with Publish/Notify/Send that new instances would be > > created. This raises a few questions. > > > How does Reply work or what is it's purpose? > > Is it replying to the the same instance of the object that sent/ > > published/notified, or is just replying to the end point, the actual > > instance handling the reply is different than the one who sent it? > > How is Reply different than Send()? > > (the previous 3 questions, are probably just the same question asked 3 > > different ways :) ) > > > The more I experiment with messaging the more it appears messaging > > doesn't seem to be a good fit for UI. Rather it's a backend framework/ > > function. If this is true then it seems you would need an additional > > layer between the GUI and messaging to handle the response/ > > subscription of the results of processing messages. > > > On Jun 5, 11:59 am, Ayende Rahien <[email protected]> wrote: > > > RSB will force components to be transient > > > > On Fri, Jun 5, 2009 at 11:51 AM, Jason Meckley <[email protected] > > >wrote: > > > > > 1st I spiked my own console app with simple console.writeline > > > > messages. this worked, so long as i blocked the instance subscription > > > > with a ManualResetEvent. didn't care for that too much as i'm blocking > > > > a thread (no performance gain) and the concept of messaging and a > > > > console was already provided with the source. > > > > > now i'm moving on to a simple winforms app. messaging seems to make > > > > more sense here because the UI could consume messages and update the > > > > interface automatically for the user. > > > > > here is my setup. > > > > 1 form, with 2 user controls (Ping and Pong) > > > > Ping consumes SentToPing messages and Pong consumes SentToPong > > > > messages. > > > > When form 1 is shown it tells Ping to send a message to pong > > > > Pong consumes the message, changes the background color (red, green), > > > > and replies > > > > Ping consumes the message, changes the background color (orange, blue) > > > > and replies > > > > This continues for 10 iterations, then replies stop. > > > > > all is working except: > > > > the background color does not change. > > > > no exceptions are thrown. > > > > I can step through all the code without error. > > > > > having zero experience with win form development am I missing > > > > something? > > > > code below. > > > > > public partial class Main : Form > > > > { > > > > private readonly Ping Ping; > > > > private readonly Pong Pong; > > > > > public Main(Ping ping, Pong pong) > > > > { > > > > Ping = ping; > > > > Pong = pong; > > > > InitializeComponent(); > > > > Shown += MainShown; > > > > } > > > > > private void MainShown(object sender, EventArgs e) > > > > { > > > > Controls.Add(Ping); > > > > Controls.Add(Pong); > > > > > Ping.Top = 10; > > > > Pong.Top = Ping.Height + 20; > > > > > Ping.SendAMessageToPong(); > > > > > Shown -= MainShown; > > > > } > > > > } > > > > public partial class Ping : > > > > UserControl, > > > > ConsumerOf<SendToPing> > > > > { > > > > private readonly IServiceBus Bus; > > > > > public Ping(IServiceBus bus) > > > > { > > > > Bus = bus; > > > > InitializeComponent(); > > > > } > > > > > public void Consume(SendToPing message) > > > > { > > > > var number = message.Number; > > > > BackColor = number%2 == 0 ? Color.Orange : Color.Blue; > > > > > Thread.Sleep(500); > > > > Bus.Reply(new SendToPong {Number = number + 1}); > > > > } > > > > > public void SendAMessageToPong() > > > > { > > > > Bus.Send(new SendToPong {Number = 1}); > > > > } > > > > } > > > > > public partial class Pong : > > > > UserControl, > > > > ConsumerOf<SendToPong> > > > > { > > > > private readonly IServiceBus Bus; > > > > > public Pong(IServiceBus bus) > > > > { > > > > Bus = bus; > > > > InitializeComponent(); > > > > } > > > > > public void Consume(SendToPong message) > > > > { > > > > var number = message.Number; > > > > if (number > 10) return; > > > > > BackColor = number % 2 == 0 ? Color.Red : Color.Green; > > > > > Thread.Sleep(500); > > > > Bus.Reply(new SendToPing {Number = number + 1}); > > > > } > > > > } > > > > > public class StartableForm : IStartable > > > > { > > > > private readonly Main Form; > > > > > public StartableForm(Main form) > > > > { > > > > Form = form; > > > > } > > > > > public void Start() > > > > { > > > > Application.Run(Form); > > > > } > > > > > public void Stop() > > > > { > > > > } > > > > } > > > > > public class StartableServiceBus : IStartable > > > > { > > > > private readonly IStartableServiceBus Bus; > > > > > public StartableServiceBus(IStartableServiceBus bus) > > > > { > > > > Bus = bus; > > > > } > > > > > public void Start() > > > > { > > > > Bus.Start(); > > > > } > > > > > public void Stop() > > > > { > > > > Bus.Dispose(); > > > > } > > > > } --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Rhino Tools Dev" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/rhino-tools-dev?hl=en -~----------~----~----~----~------~----~------~--~---
