all groups > dotnet distributed apps > march 2004 >
You're in the

dotnet distributed apps

group:

Distributed newbie - Dialog application architecture


Distributed newbie - Dialog application architecture Jan Roelof de Pijper
3/30/2004 3:36:45 PM
dotnet distributed apps:
Hi,

I am sorry this is a fairly long posting, but I need to make some
basic decisions concerning the architecture of a dialog application
that I am just beginning to develop, so I hope some of you will take
the time and trouble to read this :)

I am writing a dialog application using the dotnet framework and C#.
The application will allow a user to obtain information on departure
and arrival times of trains. The application will accept spoken input
from the user as well as input through a touch screen displaying a
form. Output is given to the user through the same form, but also
using speech (either by playing back prerecorded speech, or using
speech synthesis). A dialog manager steers the dialog with the user,
determining what information is still needed, how to interpret user
input, what questions to ask the user, etc.

At the moment, I have implemented a single-process design. Each module
in the system - speech recognizer, dialog manager, screen module,
speech output module - is a separate form class in a separate class
library (dll). I have a main form that acts as the controller module.
It creates instances of the other forms (components, modules), which I
call child forms. The main form can simply access the public
properties and methods I have made available in the child forms, and
whenever something interesting happens in one of the child forms it
uses events to notify the main form. This works fine and I can do all
I want in a simple and straightforward way.

Now I can see the point coming when so much will be going on at the
same time that performance will suffer. It would then seem a good idea
to have one or more of the child forms run on another machine.
However, this is completely new terrain for me. How do I instantiate a
form class on another machine? How do I access its public properties
and methods? How do I detect events raised by a form on another
machine?

I hear of remoting, telnet services, web services, asp.net, sockets
.... It's quite a jungle out there.

I really hope someone out there has some good pointers for me.

Thanks in advance!
Jan Roelof
Distributed newbie - Dialog application architecture Paul N
3/31/2004 8:29:32 AM
I have a system which is not anything like yours - but
which uses a web service, which is what I think might help
you out. You should identify those aspects of your system
which will chew up procesor time on your main machine, and
delegate these processes to web services. You can put
these wherever you want, and simply call them from your
main program. The system I have built which uses web
services is a timer, and this runs on one particular
machine, in one particular thread. It makes timed
(frequent) database reads, and depending on what it finds,
sends off web service calls with the appropriate
parameters to a different machine. The web service process
can take some time, but the timer is not delayed because
it is running in a completely separate process. The Visual
Studio Help has a lot of good help on web services.

Hope this is useful,

Paul Nelson.

[quoted text, click to view]
Re: Distributed newbie - Dialog application architecture Jan Roelof de Pijper
3/31/2004 10:52:31 PM
On Wed, 31 Mar 2004 08:29:32 -0800, "Paul N" <pnelson@amylin.com>
[quoted text, click to view]

Thanks! I'll look into that.

Jan Roelof
Re: Distributed newbie - Dialog application architecture Bill Sabey
4/1/2004 1:03:32 PM
I'm finding Microsoft .NET Distributed Applications by MacDonald pretty
helpful...
http://www.amazon.com/exec/obidos/tg/detail/-/0735619336/002-1867610-6264867
?%5Fencoding=UTF8

AddThis Social Bookmark Button