Head1 Head2

Dotnet Framework

Interoperability

Threading

Remoting

Webservices

Caching Concepts

OOPS

ASP.NET

NET Architecture

ADO.NET

SQL SERVER

UML

Project Management

Interoperability

(I)How can we use COM Components in .NET?
Twist : What is RCW ?
.NET components communicate with COM using RCW (Runtime Callable Wrapper).Following are the ways with which you can generate RCW :-

√ Adding reference in Visual Studio.net.See figure below (Adding reference using VS.NET 2005).Wrapper class is generated and placed in the “BIN” directory.

RCW

√ Using Type library import tool. Tlbimp.exe yourname.dll.
√ Using interopservices.System.runtime.Interopservices namespace contains class TypeLib Converter which provides methods to convert COM classes and interface in to assembly metadata.
√ Make your custom wrappers.If your COM component does not have type library then the only way to communicate is writing custom wrappers. That means communicating directly with COM components.

(I) Once i have developed the COM wrapper do i have to still register the
COM in registry?

Yes.

(A)How can we use .NET components in COM?
Twist :- What is CCW (COM callable wrapper) ?, What caution needs to be taken in order that .NET components is compatible with COM ?
.NET components can not be used in straight forward way with COM.You will need to create CCW in order that COM components communicate with .NET assemblies.Following are the different approaches to implement it :-

√ Explicitly declare interfaces.
√ The second way to create CCW using InteropServices attributes.Here interfaces are created automatically.

Following are different type of class attributes :
None :No class interface is generated for the class.This is default setting when you do not specify anything.
AutoDispatch :- Interface that supports IDispatch is created for the class. However, no type information is produced.
AutoDual :- A dual interface is created for the class. Typeinfo is produced and made available in the type library.
In below source code we have used the third attribute.

Imports System.Runtime.InteropServices
<ClassInterfaceAttribute(ClassInterfaceType.AutoDual)> _
Public Class ClsCompliant
End Class

Other than class attributes defined up there are other attributes with which you can govern other part of assembly.Example “GuidAttribute” allows you to specify the GUID,”ComVisibleAttribute “ can be used to hide .NET types from COM etc.All attributes are not in scope of the book as this is a interview questions book refer MSDN for more details.

√ Once .NET assembly is created using either interface or using interopservices method we need to create a COM type library using Type library export tool. Tlbexp (AssemblyName)
√ The final thing is registering the CCW in registry using regasm tool. regasm AssemblyName [Options]
√ Finally refer the TLB in your COM IDE Below is figure showing VB6 IDE referencing the DLL
Note :- DLL and TLB should be in same directory where the application is executed.





(A)How can we make Windows API calls in .NET?

Windows API call are not COM based and are invoked through Platform Invoke Services.
Declare StringConversionType (Function | Sub) MethodName Lib "DllName" ([Args])
As Type
√ StringConversionType is for what type of conversion should take place.Either we can specify Unicode to convert all strings to Unicode values, or Auto to convert strings according to the .NET runtime rules.
√ MethodName is the name of the API to call.
√ DllName is the name of the DLL.
√ Args are any arguments to the API call.
√ Type is the return type of the API call.

namespace CSharpCode
{
     partial class Form1 : Form
     {
          [DllImport(“Kernel32.dll”)]
          static extern int Sleep(long dwMilliseconds);
          public Form1()
          {
               InitializeComponent();
          }
          private void Form1_Load(object sender, EventArgs e)
          {
               MessageBox.Show(“Starting of 5000 ms...”);
                    Sleep(5000);
               MessageBox.Show(“End of 5000 ms...”);
          }
     }
}

(B)When we use windows API in .NET is it managed or unmanaged code ?
Windows API in .NET is unmanaged code.

(I)What is COM ?
Microsoft’s COM is a technology for component software development. It is a binary standard which is language independent. DCOM is a distributed extension of COM.

(A) What is Reference counting in COM ?
Reference counting is a memory management technique used to count how many times an object has a pointer referring to it. The first time it is created, the reference count is set to one. When the last reference to the object is nulled, the reference count is set to zero and the object is deleted. Care must be exercised to prevent a context switch from changing the reference count at the time of deletion. In the methods that follow, the syntax is shortened to keep the scope of the discussion brief and manageable.

(A) Can you describe IUKNOWN interface in short ?
Every COM object supports at least one interface, the IUnknown interface. All interfaces are classes derived from the base class IUnknown. Each interface supports methods access data and perform operations transparently to the programmer. For example, IUnknown supports three methods, AddRef, Release(), and QueryInterface(). Suppose that pinterf is a pointer to an IUnknown. pinterf->AddRef() increments the reference count. pinterf->Release() decrements the reference count, deleting the object when the reference count reaches zero. pinterf->QueryInterface( IDesired, pDesired) checks to see if the current interface (IUnknown) supports another interface, IDesired, creates an instance (via a call to CoCreateInstance()) of the object if the reference count is zero (the object does not yet exist), and then calls pDesired->AddRef() to increment the reference count (where pDesired is a pointer to IDesired) and returns the pointer to the caller.

(A)How do you do object pooling in .NET ?
COM+ reduces overhead by creating object from scratch. So in COM+ when object is activated its activated from pool and when its deactivated it’s pushed back to the pool. Object pooling is configures by using the “ObjectPoolingAttribute” to the class.

Top

  Home   |   Submit a Question   |   Share your Interview Experience   |   Contact Us  
Footer
 
Copyright © Gurmeet Singh Khalsa
Website designed by: Freelance Web