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
-~----------~----~----~----~------~----~------~--~---

Reply via email to