Subject: Re: linking with MSVC++
From: [email-masked] ("Adam Miller")

18 Oct 1996 08:26:51 -0700
Sender: [email-masked]
Approved: [email-masked]
Distribution: cygnus
Message-ID: <[email-masked]>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Original-To: <[email-masked]>
X-Msmail-Priority: Normal
X-Priority: 3
X-Mailer: Microsoft Internet Mail 4.70.1155
Original-Sender: [email-masked]

----------
> From: Jeff Bronte <[email-masked]>
> 
> In the UNIX world of network programming this is often how it 
> is done. (I know you see a lot about sockets, but that is a dying
> method because of tracking addresses and hosts, RPC's offload
> you from this through a binding process, which becomes more important
> when you have several hosts and dozens of servers). Also, there is 
> a util called RPCGEN which greatly simplifies this type of development.
> 
> I'm not sure how any of this plays on Win95. Also, NT added RPC's
> because the industry demanded it, not because MS had any interest
> in provided the service (which allow UNIX and NT machines to 
> talk easily with each other, sockets are primitive). The MS
> version of RPC's (ONC compliant?) are supported in MFC on NT's,
> I have colleague's doing it now, but as with most MFC development,
> they are having difficulties getting it to work as well as the
> mature UNIX RPC's. Also, MS doesn't provide the powerful RPCGEN util,
> you have to do some lower level stuff.
>

RPCGEN is a utility provided with Sun's RPC implementation which is not
related in any way to the RPC implementation used in Win32.   The Win32
model 
is based on the DCE RPC model.  Although the Win32 RPCs are not function
call
equivalent (they have a different case semantics) they are functionally
equivalent.  There
are header files out there which will allow some DCE based code to compile
on Win32.
Win32 like DCE uses IDL files and compiler to generate the client and
server stubs for your
executable.  The  MS executable for IDL is MIDL.EXE and is supplied with
the Win32 SDK.

One area where MS lacks implementation compared to DCE is with CDS (Cell
Directory Service).
In DCE, the CDS allows for an RPC client to use implicit binding to a
server.  Since MS RPC does
not support the CDS, it does not support implicit binding only explicit
binding.  Also note that 
DCE is licensed by the OSF, and I don't know of any Unix implementations
that supply DCE with the OS.
There are also fully blown implementations of DCE for NT, I beleive DEC
supplies one.  DCE RPCs are 
not in the public domain.

There are some freeware/shareware implementations of Sun RPC for MS around,
since Sun RPC is
in the public domain.  Any NFS client or server software for NT needs to be
implemented using Sun RPCs,
since the NFS specification in based on Sun RPCs.

RPC programming is hit-or-miss.  That paradigm is not quite the panacea you
make it out to be.
RPCs are almost always synchronous, and I'm not sure if the SUN RPC model
is thread safe.  DCE
RPCs are thread safe, and the threading model used in DCE is the posix
thread model.  In my experience,
projects which require realtime distributed processing are not quite suited
for RPCs.  They're great for non-complex, stateless
operations like DB queries.  They are a disaster to use in a
Publish/Subscribe scenario used in Market Data applications.
For example, subscribe to all trades that occur in IBM.  An RPC client
would have to implement a polling scenario to
poll the server for queued updates.  Since a Market Data app would likely
want to see all trades as they happen without
skipping a tick, this paradigm would be quite unsuitable.

RPCs are very useful but not fitted for every paradigm.
 
> If you are doing professional development, you'll find this a very
> powerful way to modularize and distribute applications, even if
> on the same host. I am hoping that as GNU Win32 matures and more
> people want to play with the Win32 API, that this solution is 
> supported if not already. 
> 

If you want to see a wonderful framework for network programming that is
portable between Unix and Win32,
take a look at ACE (Adaptive Communcations Environment) in the public
domain, by Doug Schmidt editor
of the C++ Report.   It is a well designed C++ framework, written with the
idea of pattern development.
Although light in documentation, it's quite useful.  It is designed for
realtime distributed programming.

Adam Miller
Appleby Technologies Inc.
-
For help on using this list, send a message to
"[email-masked]" with one line of text: "help".