Recently I was converting the COM+ app component to WCF service. There were couple of chan ges required specicially regarding the interface type of programming that is enforced by COM+.

E.g. if you have the data classes passed as input or returned as output parameters, you need to use interfaces vs class type declarations. In such a way a collection of objects of custom class will be passed back as ICollection. COM+ does not understand generics, so strongly typed collections cannot be used.

When you convert COM+ app component classes to WCF, you naturally exclude the interfaces for the custom data classes and present them as DataConstracts (classes marked as data contracts with datamember). If you forget to change the return type ICollection to the actual implementation (e.g. List or List<T>; the latter is preferred), WCF will not complain and you will be able to genarate and use the proxy on the client app until you try to call the method that return collection. Serializartion exception will be thrown as WCF does not allow to pass interaces as the results.

The short story story is:

public ICollecton GetResults()

must be converted to

public List<T> GetResults(), where T is the actual type.

On the client side, this function will be nicely avaialble as the array of T (T[]).