I know web service and have some knowledge on remoting. Both concepts invoke methods on the client machine so where lies the difference ??
Through remoting we can also execute the method on the remote machine and the same functionality can be achieved through web service too..
Please excuse me if it is the obvious question..
ASP.NET based Web services can only be accessed over HTTP. .NET Remoting can be used across any protocol.
Web services work in a stateless environment where each request results in a new object created to service the request. .NET Remoting supports state management options and can correlate multiple calls from the same client and support callbacks.
Web services serialize objects through XML contained in the SOAP messages and can thus only handle items that can be fully expressed in XML. .NET Remoting relies on the existence of the common language runtime assemblies that contain information about data types. This limits the information that must be passed about an object and allows objects to be passed by value or by reference.
Web services support interoperability across platforms and are good for heterogeneous environments. .NET Remoting requires the clients be built using .NET, or another framework that supports .NET Remoting, which means a homogeneous environment.
Both Remoting and Web Services are ways of communication between applications.
Remoting - In remoting, the applications involved in the communication process may be located on the same computer, different computers in a same or different network. In remoting, both applications know about each other. A proxy of an application object is created on the other application.
Web Services - Communication between applications using web services is platform independent and programming independent. The application that consumes the web service, simply accesses it, without needing to know how this web service has actually been implemented & created.
Both support distributed applications.
Web services are cross platform, using common standards and work through firewalls. They also think in terms of messages, not objects - you send a message to a service, and you get a reply.
Remoting is an MS only technology which is not cross platform and talks in a binary format. It thinks in terms of objects, you create an object on the remote server and work with it. It doesn't work well with firewalls. Remoting is also dead these days, MS favour WCF (which includes web services)
WebServices are a form of remoting, since you are effectively executing code else where or on the same machine outside of you AppDomain.
Remoting (InterProcess) on the same machine or over the network, is different in the sence that you Marshal your object between AppDomain/ platform boundries through transparent proxies and serialization. Remoting comes with its complexities and can easily become very complexe. WCF has made things much simpler to maintain. Performance wise, I haven't compared both approaches and would definitely be interested to see how both fare in an InterProcess context. Since WCF can communicate with binary bindings and is not limited to the HTTP Protocol.
WCF has made this much simpler using Pipes for InterProcess communication.
In the end WebServices used to communicate via port 80 (standard) HTTP and Remoting could communicate via predefined ports and channels using different serialization formatters.
They have now been upgraded by WCF which now provides methods for these types of communications.
.NET Remoting concept is a Microsoft/.NET specific interprocess communication technology.
The term "Web service" is very diffuse due to its hype. But I think the W3C definition is intended in most cases. It defines the use of WSDL as interface description and SOAP as message protocol.
According to Microsoft .NET Remoting: A Technical Overview on MSDN, Remoting uses either a binary or XML encoding. Whereas the XML encoding uses SOAP. But as far as I know, it does not adhere to the WS-I Basic Profile. Hence, it provides an extremely limited Web service interoperability.
Both concepts allow interprocess communication. If your application only uses .NET, then using .NET Remoting is a good choice.
However, if you plan to provide interoperability with other programming languages than you should use Web services.
Remoting is simulating the foreign method invoked as local method, accepting same type of parameters hence all it needs is to serilazie the object and transfer invoke the remote method (which is in same language or platform), and provide the respone.
Web Service (SOAP service) deals with cross platform method invocations in RPC terms but is further can be improved using Document style services, here the languages or platforms are not the barriers as XML will acts as intermediate by marshalling and unmarshilling the native and XML representations.