| Alberto Tronchin |
Enterprise services e costruttori parametrizzati
Ciao a tutti,
Ho iniziato da poco a studiare gli Enterprise Services in .NET e la prima cosa sulla quale ho cercato di indagare riguarda la possibilità (o meno) di sfruttare tutte le potenzialità dei linguaggi OO di .NET anche per realizzare componenti distribuiti. Anche in conseguenza ad un quesito da me posto in occasione di un Join the export avevo dedotto quanto segue: - se devo realizzare dei componenti COM+ di tipo Server, allora devo rispettare una serie di limitazioni nell'interfaccia dei miei oggetti per far sì che la comunicazione DCOM con i client remoti funzioni correttamente; quindi le interfacce pubbliche dei miei oggetti devono rispettare i rigidi vincoli di un marshalling COM; quindi addio costruttori con parametri, overload di metodi, ecc. - se devo realizzare componente COM+ di tipo library, allora dipende da chi è il client; se il client è .NET tutto bene: il mio assembly può sfruttare tutte le potenzialità OOP in ambito .NET e quindi, per esempio, posso tranquillamente usare costruttori con parametri con l'accorgimento di fornire anche il costruttore di default nel caso voglia beneficiare del object pooling. Quanto detto, perdonatemi se riassunto magari rapidamente e con qualche difetto di forma, mi viene confermato anche da un documento MS ( http://msdn.microsoft.com/library/en-us/cpguide/html/cpconservicedcomponentprogrammingguidelines.asp) Purtroppo nelle mie prove non trovo il risultato sperato; ecco quanto ho tentato di implementare. Ho realizzato un componente .NET che sfrutta gli enterprisecomponent e che viene installato in COM+ come Library. Questo componente contiene due classi pubbliche (A e B), ciascuna delle quali espone anche un costruttore con parametri. In particolare la prima classe (A) ha un metodo che istanzia un oggetto della seconda classe (B) tramite costruttore con parametri. Quindi ho realizzato una console application .NET che istanzia un oggetto della classe A invocando il costruttore con parametri. In fase di esecuzione, però, ottengo questo errore: "Unhandled Exception: System.EnterpriseServices.ServicedComponentException: Classes derived from ServicedComponent do not support constructors with arguments." La stessa cosa accade se la console application istanza un oggetto di A con costruttore di default e poi richiama il suo metodo che istanzia un oggetto di B con costruttore parametrizzato. Le prove le ho eseguite in questo ambiente: Windows 2000 Server SP3 COM+ 1.0 .NET framework 1.0 SP2 Sapete aiutarmi o fornirmi indicazioni su documentazione esistente ? grazie e tutti Alberto |