Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

remoting vs socket

Tags:

c#

what is the diff, advantage and disadvantage between remoting and socket... which is best way for Server-Client functionality....

like image 676
RV. Avatar asked Apr 21 '09 10:04

RV.


People also ask

What is the difference between RMI and socket?

RMI is remote method invocation which means methods are invoked remotely or accessing remote sites in client-server communication. Sockets are like gateways which provide access points for programs through some specific port numbers.

Does RPC use socket?

Somewhere in the the RPC implementation a network interface gets called. Sockets are such a network interface. They are not the only programming interface but they are the most common on Unix systems. Thus, an RPC MIGHT be implemented using a socket.

What are sockets in a server?

Definition: A socket is one endpoint of a two-way communication link between two programs running on the network. A socket is bound to a port number so that the TCP layer can identify the application that data is destined to be sent to. An endpoint is a combination of an IP address and a port number.

What is remote socket address?

Socket addressesAn application can communicate with a remote process by exchanging data with TCP/IP by knowing the combination of protocol type, IP address, and port number. This combination is often known as a socket address.


2 Answers

Sockets are raw binary streams between two endpoints. You would need to wrap your own RPC (etc) layer to process the messages, and deal with a lot of infrastructure code. However, since they are so close to the metal this can be very, very efficient. It is not tied to any specific architecture, as long as both ends talk the same message format. Tools like protobuf-net can help you construct binary messages for streams (rather than rolling your own serialization code).

Remoting is a .NET specific tool, and is very brittle re versioning. I wouldn't recommend remoting for client/server - use things like WCF instead.

WCF is a more flexible comms stack - a lot of power and complexity, but arguably a bit of bloat too (xml, complex security etc). It is data-contract based, so roughly open (client/server can be different), but still a bit .NET focused.


edit For info, protobuf-net provides an RPC stack too; at the moment there is only an HTTP implementation provided, but at some point I'll add raw TCP/IP.

like image 173
Marc Gravell Avatar answered Sep 28 '22 14:09

Marc Gravell


Direct socket manipulation can give you more power, flexibility, performance, and unfortunately complexity when compared to Remoting or WCF. However, if you need the benefits of low-level TCP/IP, such as non-blocking IO and custom protocols, tools such as Ragel and frameworks like Mina can ease the complexity burden. I recommend trying the higher-level APIs like WCF first and only use direct sockets if these don't meet your needs.

like image 43
Todd Stout Avatar answered Sep 28 '22 16:09

Todd Stout