|
By Nishant Kumar
.Net Remoting Interview Questions & their Answer
Define Windows
process. | Define
channels in .NET Remoting. | What
security means available for .NET Remoting in System.Runtime.Remoting?
| What is a
formatter in .Net Remoting? | .NET
Remoting and Web services. | Name
the distributed systems available apart from .Net Remoting.
| How
do you implement distributed applications in .NET? | Define
proxy in .NET Remoting. | Define
remotable objects in .NET Remoting. | Define
SingleCall activation mode in .Net Remoting. | Define
Singleton activation mode in .Net Remoting. | Define
the lease of the object.
Question - 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.
Question - 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.
Question - Define channels in .NET Remoting
Answer - Channels represent the objects
that transfer the other serialized objects from one application domain to
another and from one computer to
another, as well as one process to another on the same box.
A channel must exist before
an object can be transferred.
Question - What security means available for .NET Remoting in
System.Runtime.Remoting?
Answer - None. Security should be taken
care of at the application level.
Cryptography and other
security techniques can be applied at application or server level.
Answer - A formatter is an object that
is responsible for encoding and serializing data into messages on one end, and
deserializing and decoding messages into data on the other end.
Question - .NET Remoting and Web
services.
Answer - Use remoting for more efficient
exchange of information when you control both ends of the application.
Use Web services for
open-protocol-based information exchange when you are just a client or a server
with the other end belonging to someone
else.
Question - Name the distributed systems
available apart from .Net Remoting.
Answer - Distributed Computing
Environment/Remote Procedure Calls (DEC/RPC),
Microsoft Distributed
Component Object Model (DCOM),
Common Object Request
Broker Architecture (CORBA), and
Java Remote Method
Invocation (RMI).
Question - How do you
implement distributed applications in .NET?
Answer - .NET Remoting and ASP.NET Web
Services.
Classes for the same are in
System.Runtime.Remoting and System.Web.Services.
Question - Define proxy in .NET
Remoting.
Answer - Its a fake copy of the server
object that resides on the client side and behaves as if it was the server.
It handles the
communication between real server object and the client object.
This process is also known
as marshaling.
Question - Define remotable objects in .NET
Remoting.
Answer - Remotable objects are the
objects that can be marshaled across the application domains.
You can marshal by value,
where a copy of the object is created and then passed to the receiver.
You can also marshal by
reference, where just a reference to an existing object is passed.
Question -
Define SingleCall activation mode in .Net
Remoting.
Answer - If the server object is
instantiated for responding to just one single request, the request should be
made in SingleCall mode.
Question -
Define Singleton activation mode in .Net
Remoting.
Answer - A single object is instantiated
regardless of the number of clients accessing it.
Lifetime of this object is
determined by lifetime lease.
Question - Define the lease of the
object.
Answer - By implementing ILease
interface when writing the class code.
Question - .NET Remoting versus Distributed
COM
.NET Remoting is
the successor of DCOM. Microsoft DCOM is a solution for distributed
object and very good in terms of performance when components are in
the same network. But its drawbacks in the internet connected world
are visible. It uses proprietary binary protocol which is not
supported by other object models, thus can't support
interoperability across platform. .NET Remoting uses TCP or HTTP
protocol that is supported by most of the object models. This allows
.NET Remoting to be adaptable to the network environment in which it
is being used.
Question - Advantage of Remoting over Web
Services
Answer -
.NET Remoting allows objects to interact that can be hosted
in different application domain within the same process or different
process. The objects can also interact over intranet or internet. It
supports many different protocols unlike Web Services that works
over SOAP/HTTP protocol. .Net Remoting can work on TCP protocol that
provides speed benefit from its counterpart. Being tied up with
IIS, .Net Web service can only work with producer /consumer model
whereas .Net Remoting can share objects from any type of
application. .Net Remoting being part of .Net Framework support full
.Net type system and can expose any object to the client. .Net Web
Service supports on those types that can be expressed with XSD.
Question - When should we choose .Net Remoting over .Net
Web Services?
Answer -
.Net Remoting provides distributed solution for a corporate
use. So, if you need distributed environment to be implemented for
internal use, .Net remoting is the best choice.
If you require a
faster distributed solution, .Net Remoting with TCP protocal using
binary format is faster than Web services. .Net Remoting is better
solution when large transfer of data is required. Web Services
provide an open-protocol-based exchange of information. Web Services
are best when you need to communicate with an external organization
or non .NET technology.
Question - What are the ways to configure Remoting
objects before client can use them?
Answer -
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 or machine.config file. Application-level XML
settings take precedence over machine.config. 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.
Question - Define Delegates.
Answer -
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.
Question - Define Events.
Answer -
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.
Question - What is asynchronous
programming?
Answer -
.Net Remoting supports asynchronous programming. In this
model, a call is made to a class method while the calling program
continues to execute. This increase application speed as the
application continues to execute without waiting for the called
methods to finish execution.
Question - When do we use delegates in your remoting
applications?
Answer -
You use delegates to implement callback functions, event
programming, and asynchronous programming in your remoting
applications. Events use delegates to enable callback functions to
the client in remoting applications.
Question - What are the ways to renew lifetime leases of
objects?
Answer -
A client can renew the lifetime lease of an object by
calling the ILease.Renew method.
Question - What are the types of remotable
objects?
Answer -
The two types of remotable objects are
Marshal-by-value
objects - These objects are copied and passed by value out
of the application domain. 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
objects - The clients that use these objects need a proxy
to access the object remotely. 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.
Question - What are the Security features in .Net
Remoting.
Answer -
.Net Remoting is integral part of .Net Framework, so it has
access to all security features of Framework. If remoting objects
are hosted using IIS, it leverages the entire authentication and
authorization features that are available to Web based protocols. If
hosted other than HTTP protocols over IIS, then you have the
opportunity to create your own security infrastructure.
Question - What are the information required to
configure remote objects?
Answer -
Following information to be provide to configure remote
object.
Activation type
for the remote object Channels URL of the remote object
Type metadata of the remote object
Question - Explain Serialization Formatters in .NET
Remoting.
Answer -
In .Net Remoting, the objects are shared over distributed
network. The objects are transmitted in serialized form. The objects
are first serialized into message data before it is sent with the
wire. On the other end of the wire, this serialized data is read and
desterilized back to the actual object. This process of converting
objects into message data is done by serialization formatters. .Net
Remoting supports two formatters. SOAP Formatter Binary
Formatter SOAP Formatter converts objects into XML string whereas
Binary Formatter converts an object's state into a binary stream.
The binary serialization formatter is slightly
faster.
Question - What are the requirements to enable remote
components to interact each other?
Answer -
To enable communication between objects across remoting
boundaries, you need to have A server object to expose service
A client that calls server object to consume service A
message transmission protocol
Question - Steps to publish an object outside the
service domain.
Answer -
To publish a service outside the service domain, you need
to:
Identify the
application domain that will host the service. Identify the
activation model: server activation or client activation.
Identify and create a channel and a port. Identify how the
client application obtains the metadata information about the
service.
Question - Define Client Activated Objects (CAO).
Answer -
Client-activated
objects are objects whose lifetimes are controlled by the client,
i.e. calling application domain. This mode works in similar fashion
to the model where object is local to the client and referenced
object's lifetime is controlled by the calling object. When instance
of server object is created, object reference is obtained in the
form of proxy.
In COM model,
clients hold an object in memory by holding a reference to it. The
object is released from the memory when the entire client releases
the reference. But in .Net Remoting, client-activated objects use
lifetime leases to determine how long they should continue to exist.
When a client creates a remote object, it can specify a default
length of time that the object should exist. If the remote object
reaches its default lifetime limit, it contacts the client to ask
whether it should continue to exist, and if so, for how much longer.
If the client is not currently available, a default time is also
specified for how long the server object should wait while trying to
contact the client before marking itself for garbage collection. The
client might even request an indefinite default lifetime.
Client-activated instances serve only the client and the reference
that was responsible for their creation.
To create an
instance of a client-activated type, clients either configure their
application programmatically or using a configuration file and call
new, or they pass the remote object's configuration in a call to
Activator.CreateInstance.
Question - Explain Marshalling and
its types in .Net Remoting.
Answer - Objects can't be transmitted as such
over communication channel. The objects are packed into message
buffer before transmitted. This process is called marshalling. There
are two different ways to Marshal objects
Marshal by Value: Server creates copy of the remoting object's
state and passes it to the client. You need to implement your
classes to have marshal by value features either by implementing
ISerializable interface or using attribute. Here
you need to copy whole object to the client which means with large
size object, the communication overhead is significant.
Marshal by Reference: In this type proxy is created by the
reference of the server objects. Class must extend the
System.MarshalByRefObject to implement marshal by reference. Here,
client keeps server object reference which means round trip to
server with each method call.
Summary of .Net Remoting
.Net
enables interaction between applications over distributed
network.
To develop a
Remoting application, you need to create client and server objects.
You need to activate the objects and use reference of the server
objects in client to communicate.
Channels allow
application to send and receive messages using protocal like TCP or
HTTP.
You can use
delegates in Remoting application to implement event based
programming and asynchronous programming.
Asynchronous
programming in Remoting application helps to calls remote methods
while client continues to execute other local method.
To host remote
object, server needs some information about the objects.
The information
can be provided programmatically in the code or can be loaded from
configuration section of application configuration file or
machine.config file.
Being part of
.Net Framework, .Net Remoting can implement role based security.
Moreover, it can leverage all security features of ASP.NET, if it
hosted in ASP.NET.
|