Showing posts with label .Net Remoting. Show all posts
Showing posts with label .Net Remoting. Show all posts

Monday, February 8, 2010

What is the difference between XML Web Services using ASMX and .NET Remoting using SOAP?

  • XML Web services are more restricted than objects exposed over .NET Remoting.
  • XML Web services support open standards that target cross-platform use.
  • XML Web services are generally easier to create and due to the restricted nature of XML Web services, the design issues are simplified.
  • XML Web services support only SOAP message formatting, which uses larger XML text messages.
  • Communication with .NET Remoting can be faster than XML Web service communication with a binary formatter.
  • XML Web services are designed for use between companies and organizations.
  • XML Web services don't require a dedicated hosting program because they are always hosted by ASP.NET.
  • Consumers can use XML Web services just as easily as they can download HTML pages from the Internet. Thus there's no need for an administrator to open additional ports on a firewall as they work through MS-IIS and ASP.NE

Remoting.Net vs Web Services

Both .Net Web services and .Net Remoting are Microsoft solutions for distributed application. Before choosing one of them for application development, let’s identify the differences between these technologies.

Protocol
.Net web services can be accessed only over HTTP whereas .Net remoting can be accessed over any protocol including TCP, HTTP, or SMTP.

Performance
In terms of performance, .Net remoting is faster than its counterpart web service when it uses TCP channel with binary formatter. But if you use soap formatter in .net remoting, web services with soap formatter either with TCP or HTTP channel provides faster solution.

Security
.NET Remoting can be hosted either in IIS or in other container. If hosted in IIS, .NET Remoting can benefit all security advantages of IIS. But when hosted other than IIS, the application has to take care security aspect itself.
On the other hand, .Net web services are hosted in IIS, by default. So, it leverages all features of security provided by IIS.

State Management
Web services are a stateless in nature like web application. You need to use state mechanism to retain state. You can use session or application object to maintain state. In .Net Remoting, Singleton objects can share state whereas if you don’t need to maintain state, you can use Singlecall objects.

Interoperability
Web services support heterogeneous environments which means client and remote object can be built in any platform.
.NET remoting requires the client be built using .NET, enforcing homogenous environment.

Reliability
Since .Net web services are hosted using IIS, they are reliable whereas .Net remoting application needs to maintain security on its own if not hosted using IIS. When hosted in IIS, .Net remoting is also as reliable as web services.

Ease of development
Create and consuming .Net web services are easier process. To create remoting object, you need create remote object, hosting application to host remoting object and configuration file to specify type of channel and formatter to be used by remoting object.

Asynchronous Programming in remoting Application

.Net Remoting supports asynchronous programming. In this model, a call is made to a class method while the calling program continues to execute. This increases application speed as the application continues to execute without waiting for the called methods to finish execution.

Asynchronous Programming in remoting Application

There are two ways that the remoting objects can be configured. They can be configured by calling configuration methods inside the application. .Net Framework allows configuring objects also by adding configuration section in the application configuration file.
When you apply any change in the configuration section, you don’t need to recompile the code. On the other hand, any change in the setting applied programmatically would require recompiling the code.

Remoting system requires certain information about remote objects to be hosted which are as follows

Activation type
Channels
URL of the remote object
Type metadata

.Net Framework provides RemotingConfiguration class in the System.Runtime.Remoting namespace that allows configuring object programmatically.

In .Net, you can have configuration setting in the application configuration file or in the machine.config file. You can use RemotingConfiguration.Configure method to load the setting in the code, e.g.

RemotingConfiguration.Configure("AppConfig.exe.config")

The configuration attributes in the XML configuration file of the application are below.


This element contains the information about the remote objects.

This element contains the remote object.

This element has three attribute such as mode, type, and objectUri. Mode can be Singleton or SingleCall. Type is the name of the assembly that contains type implementation. ObjectUri specifies the endpoint for the URI of an object.

This element contains information about the client-activated objects that are exposed by the application.

Events and Delegates in Remoting Applications

Events are one of the members of the class. When any noteworthy activity occurs in the application, an event is raised which sends out the message to the other part of the application which handles the event. The event can carry arguments that contain information about the event. The method which handles the event must have the same signature as the event itself. Events are commonly used in the applications with graphical user interface elements such as buttons, textbox etc. An event is triggered when any action such as mouse click occurred in the interface element. The event-based programming model can be used in the non-GUI applications such as .NET Remoting application. An event in remoting.net occurs when the state of the application changes.

A delegate acts like a strongly type function pointer. Delegates can invoke the methods that they reference without making explicit calls to those methods. It is type safe since it holds reference of only those methods that match its signature. Unlike other classes, the delegate class has a signature. Delegates are used to implement event programming model in .NET application. Delegates enable the methods that listen for an event, to be abstract.

Steps to implement delegate to listen for events in the remoting application

Define a delegate that wraps an event handler method to handle the event.
Implement a class that raises the event.
Implement class that handles the event

.Net Remoting Channels

Channels are the objects that remote objects use to communicate with each other. It allows applications to send and receive messages using protocols such as TCP and HTTP. It is a message carrier that converts the message in either as XML or binary format before sending message across boundary.

In .Net Framework, channel's classes and interfaces are included in System.Runtime.Remotig.Channels namespace. A channel needs to be registered to the remoting system infrastructure both at client and server side before it receives or send data.

Based on the protocol used by the channel, you have
HTTPChannel
TCPChannel

HTTPChannel

.Net Framework provides System.Runtime.Remoting.Channels.http namespace that provides classes to use HTTPChannel. You can use HTTPChannel when interoperability is the main issue. HTTPChannel uses SOAPformatter to serialize messages into XML format before sending messages.

TCPChannel

.Net Framework provides System.Runtime.Remoting.Channels.tcp namespace that provides classes to use TCPChannel. This kind of channel is used when performance is main issue. TCPChannel uses BinaryFormatter to serialize messages into binary stream before sending messages.

.Net Remoting Overview

Distributed application is a set of components distributed across network and work as if all the components are there on the same computer. These components based technologies can be developed using DCOM, CORBA, RMI etc. These technologies are good for intranet environment.

Microsoft has provided suitable framework for developing distributed application through .Net Remoting and Web Services. Remoting.net allows components to interact across application domains, processes, and machine boundaries. It enables your applications to take advantage of remote resources in a networked environment.

Web Services are best suited when clients outside the firewall calling components on the server over the Internet.

Remoting.Net is the best solution when clients and components are inside the firewall. It requires the client to be built using .NET which means it can’t work in heterogeneous environments.

.Net Remoting uses channels (HTTP and TCP channels) to transport messages to and from remotable objects. The HTTP channel uses the SOAP protocol to transport messages which means all messages are serialized to XML. The TCP channel uses a binary stream to transport the messages.

.Net Remoting supports two activation modes: Singleton and SingleCall. Singleton mode allows only one instance of an object at any time which means all requests are serviced by the single instance. You can maintain state across each request using this mode. SingleCall Mode creates a new instance of the object for each client request and are stateless.

.NET Remoting when hosted with IIS, can use all the security features of ASP.NET. But you need to implement your own security features for the application if channel is hosted in the process other than aspnet_wp.exe.

What is .Net Remoting?

.Net Remoting enables communication between applications across separate domains or networks. .Net objects are exposed to remote processes to have interprocess communication. With remoting, we can use TCP or HTTP communications protocols on any port. We can use text or binary formatting. .Net Remoting supports server activated (single call and singleton) as well as client activated objects.

Describe the .Net Remoting Architecture.

.Net Remoing allows communication between server and client objects. To facilitate this, when new instance of remote object is created in the client application, the client receives reference (called proxy) to the server object. This proxy object contains references to all the methods and properties of the server object. When the client object calls any method (the call actually on proxy object), which resolves the references and invokes server object, receives the result and pass on to the client application.

What are the remotable and non-remotable objects in .Net Remoting.

The remotable objects are the objects which can be distributed accross domains, can be used with domain. The non-remotable objects are the objects which can't be distributed accross domains. In distributed system, if an object is very big, we can make it non-remotable object.

Describe the type of remotable objects in .Net Remoting.

Marshal-by-value-objects - When client calls a method on marshal-by-value-object, the remoting system creates a copy of this object and passes the copy to the client application domain. The copy hence received can handle any method call in client domain. Using Marshal-by-value-object reduces resource consuming trip across network.
Marshal-by-reference-object - When client calls a method on Marshal by reference object, the remoting system create proxy object in the caller application that contains the reference of all method and properties of the object.

What are the types of activation modes in .Net remoting?

Server Activation Mode: In this mode, objects are created on the server when we call a method in the server class and not when we create instance using new. In this type of scenario, the client is always connected with server but the services are activated only when we call the method of the server class. We can create server activated object as a Singleton or SingleCall object. If we create server object as singleton, a single instance will manage all the clients. If we create server object as singlecall, the remoting system creates object each time a client method invokes a remote object.

Client Activation Mode: This object gets created when we create instance using new keyword. In this mode, client application domain defines the lifetimes of client activated objects. The client domain defines the lifetimes of client-activated objects. They use lifetime leases to determine the duration of their existence and after the lifetime expires, the object is marked for GC.

Describe the term Channel in .Net Remoting.

In .Net Remoting, an application use Channel to send message to another application which is runing in different domain or process. Before sending message, Channel converts message into appropriate format like XML or binary format. The channel that carries message(Mashalled parameter) can use protocal like TCP and HTTP. Channel can be HTTPChannel and TCPChannel. The HTTPChannel use soapFormatter to serialize messages into the XML format using SOAP protocal. Using SOAP method allows the client to call method on the remote object that might not be using .Net framework. The TCPChannel use binaryFormatter to serialize message into binary stream.

DCOM vs .Net Remoting

Answer - .Net Remoting is the successor of Distributed component object Model(DCOM). Both these technology are introduced by Microsoft that enable inter-process communication across application domains. DCOM was very successful technology. But it is never treated as best technology for inter-process communication because of lack of its support for interoperability across platform.

.Net Remoting is a new technology that ship with .Net Framework. It has all those features which are missing in DCOM. There are other pain involve with DCOM such as difficult to control format or channels, message trace is painful, change in configuration setting such as channels or port is not easy. DCOM is hard to learn and complicated to deploy and to maintain.

Differences between these two technologies are as follows.

DCOM technology is based on the COM architecture whereas .NET Remoting is primarily based on .NET Frameworks.

DCOM is based on proprietary binary protocol which is not supported by all object model, thus has big drawbacks in the internet world.

DCOM is based on RPC protocol whereas .Net Remoting can use TCP or HTTP protocol which is stardard protocal in the market.

DCOM is not firewall friendly, can't choose port. .Net Remoting, on the other hand, works easily across firewalls.

.Net Remoting supports cross platform communication which is not possible with DCOM (only for windows platform).

Components created DCOM involves complex deployment in windows registries whereas .Net Remoting involves easy deployment using either xml based configuration file or programmatically in the code.

DCOM uses windows security features whereas .Net Remoting can use security features of IIS if hosted with ASP.NET. .Net Remoting, if hosted other than ASP worker process, allows to create own security mechanism for the application.

In DCOM, server is started by Service Control Manager (SCM) upon receiving the activation request from the client whereas in .Net Remoting, IIS is responsible to start server service. If not hosted with IIS then client request will fail if the Remoting server is not already started.

DCOM manages remote object lifetime by frequent pinging of clients whereas .Net Remoting has more efficient leasing mechanisms to maintain object lifetime.

Define windows process

Answer - A process is an instance of a running application.
Each process is allocated its own block of available RAM space.
No process can access another process code or data.
If the process crashes, it dies alone without taking the entire OS or a bunch of other applications down.