Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>i don't think there's a quick answer to this. if i was you, i would buy/borrow a copy of <a href="http://www.kohala.com/start/apue.html" rel="noreferrer">Advanced Programming in the Unix Environment</a> (APUE) by Stevens and Rago and read Chapter 15 and 16 on IPC. It's a brilliant book if you really want to understand how *nix (a lot of it applies to any POSIX system) works down to the kernel level.</p> <p>If you must have a quick answer, i would say the following (without putting a huge amount of thought into it), in descending order of efficiency:</p> <p><strong>Local Machine IPC</strong></p> <ul> <li><a href="http://en.wikipedia.org/wiki/Shared_memory" rel="noreferrer">Shared Memory/Memory Mapped files</a></li> <li><a href="http://en.wikipedia.org/wiki/Named_pipe" rel="noreferrer">Named Pipe/FIFO</a> (only between related processed - i.e. fork)</li> <li><a href="http://en.wikipedia.org/wiki/Unix_domain_socket" rel="noreferrer">Unix Domain Socket</a></li> </ul> <p><strong><a href="http://en.wikipedia.org/wiki/Internet_socket" rel="noreferrer">Network IPC/Internet Sockets</a></strong></p> <ul> <li><a href="http://en.wikipedia.org/wiki/Datagram_socket" rel="noreferrer">Datagram Sockets</a></li> <li><a href="http://en.wikipedia.org/wiki/Stream_socket" rel="noreferrer">Stream Sockets</a></li> <li><a href="http://en.wikipedia.org/wiki/Raw_socket" rel="noreferrer">Raw Sockets</a></li> </ul> <p>At both levels, you are going to have to think about how the data you transfer is encoded/decoded and trade off between memory usage and CPU utilization.</p> <p>At the Network level, you will have to consider what layers of protcols you are going to run on top of. Most commonly, at the bottom of the <a href="http://en.wikipedia.org/wiki/OSI_model" rel="noreferrer">application layer</a> you will be choosing between TCP/IP or UDP. TCP has a lot more overhead as it is does error correction, checksumming and lots of other stuff. if you need in order delivery of messages you need to use TCP as opposed to UDP.</p> <p>On top of these are other protocols like HTTP, SOAP (on top of HTTP or another protocol like FTP/SMTP etc.). A binary protocol is going to be more efficient as long as you are network bound rather than CPU bound. If using SOAP on the MS.Net platform, then binary encoding of the messages is going to be quicker across the network but may be more CPU intensive.</p> <p>I could go on. it's not a simple question. Learning where the latencies are and how buffering is handled are key to being able to make decisions on the trade offs you are always forced to with IPC. I'd recommend the APUE book above if you really want to know what is going on under the hood...</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload