COM+ bulit on c#

J

Joseph

Please any help will do!!!!

I have several issues implementing serviced components with .NET framework. Please stop a few minutes to read the issues found on my application. This is an academic project emulating an online billing software for a health care facility.

My application is divided into different projects which they map to the logical layers that microsoft suggests for architectural design.

1.. A presentation layer that is a winform project.
2.. A class library of common functionality that is referenced by all projects (client & server side).
On the server side I have:

1.. A project of Interoperability or something like a business facade that interprets incoming parameters (DataSets or XmlDocuments with specified schemas) and passes through the data in order 2 be processed by the business logic application. Then returns the appropiate responses that can be native .net types compliant with COM as string, int, double, or serializable objects like XmlDocument or DataSets. THIS IS WHERE THE SERVICED COMPONENTS ARE!!
2.. A project of business logic, a simple class library containing business rules
3.. A project of data access, a simple class library containing simple methods that receive parameters from the business logic and updates the relational database.
4.. A project that is used to communicate with other applications like invoking other serviced components and consuming XML web services
I have done this:

1.. On the properties of the (1) project I have set on true the Register for COM interoperability
2.. On the bin/debug folder of the (1) project a tlb file is generated.
3.. On the Component Services Admin console I create a new Application, this is set as a ServerLibrary
4.. I drag the tlb from the windows explorer to the Component Services Admin console creating as many components as serviced classes in the project.
5.. I export the application to install a server in another computer. Lets call this Server.msi
6.. I execute the generated Server.msi on computer A
7.. Now on the component services of computer A the application has been installed.
8.. From this computer I generate a client proxy from the Component Services Admin console right clicking on the app. This generates Client.msi
9.. I execute Client.msi on computer B. This creates the same app on the Component Services Admin console but all the settings are disabled except for the activation server to use that is by default computer A.




My questions are:

1.. What should I deploy on computer B. :
1.. The cilente.exe. (It shows an System.IO error, it doesn't find the requested dll meaning dll number 1)
2.. The cilente.exe, and a local copy of project (1).dll (It shows an System.IO error, it doesn't find the requested dll - meaning dll number 2)
3.. The cilente.exe, and a local copy of project (1).dll and the rest of the required dlls by the project (1).dll. That are all the server side dll's.
This actually works but there is no remote access here!!. I run a profiler trace and the HostName of the statements is computer B







Another doubt, I have previously created COM objects and registered on the COM+ catalog.. But these ones where made on Delphi as an active X Library. I notice that building the classes this fashion, the methods of the interfaces implemented by my classes are visible to the COM+ console ..



When I register the Serviced Components built on C#, and setting the class attribute

[ClassInterface ( ClassINterfaceType.AutoDispatch) ] this is suppose to expose all the public methods of my class.. and it doesn't actually none of them is visible.



PLEASE, PLEASE SOMEONE HELP ME



Joseph Higaki
 
S

Stan

You have to

1. run regsvcs on the server for your serviced component
2. Export application proxy on server
3. Import application proxy on client (by running msi file or Add Application).
4. Copy server dlls to client. You might want to put them into GAC but it is not required)

Hope this helps,

-Stan
Please any help will do!!!!

I have several issues implementing serviced components with .NET framework. Please stop a few minutes to read the issues found on my application. This is an academic project emulating an online billing software for a health care facility.

My application is divided into different projects which they map to the logical layers that microsoft suggests for architectural design.

1.. A presentation layer that is a winform project.
2.. A class library of common functionality that is referenced by all projects (client & server side).
On the server side I have:

1.. A project of Interoperability or something like a business facade that interprets incoming parameters (DataSets or XmlDocuments with specified schemas) and passes through the data in order 2 be processed by the business logic application. Then returns the appropiate responses that can be native .net types compliant with COM as string, int, double, or serializable objects like XmlDocument or DataSets. THIS IS WHERE THE SERVICED COMPONENTS ARE!!
2.. A project of business logic, a simple class library containing business rules
3.. A project of data access, a simple class library containing simple methods that receive parameters from the business logic and updates the relational database.
4.. A project that is used to communicate with other applications like invoking other serviced components and consuming XML web services
I have done this:

1.. On the properties of the (1) project I have set on true the Register for COM interoperability
2.. On the bin/debug folder of the (1) project a tlb file is generated.
3.. On the Component Services Admin console I create a new Application, this is set as a ServerLibrary
4.. I drag the tlb from the windows explorer to the Component Services Admin console creating as many components as serviced classes in the project.
5.. I export the application to install a server in another computer. Lets call this Server.msi
6.. I execute the generated Server.msi on computer A
7.. Now on the component services of computer A the application has been installed.
8.. From this computer I generate a client proxy from the Component Services Admin console right clicking on the app. This generates Client.msi
9.. I execute Client.msi on computer B. This creates the same app on the Component Services Admin console but all the settings are disabled except for the activation server to use that is by default computer A.




My questions are:

1.. What should I deploy on computer B. :
1.. The cilente.exe. (It shows an System.IO error, it doesn't find the requested dll meaning dll number 1)
2.. The cilente.exe, and a local copy of project (1).dll (It shows an System.IO error, it doesn't find the requested dll - meaning dll number 2)
3.. The cilente.exe, and a local copy of project (1).dll and the rest of the required dlls by the project (1).dll. That are all the server side dll's.
This actually works but there is no remote access here!!. I run a profiler trace and the HostName of the statements is computer B







Another doubt, I have previously created COM objects and registered on the COM+ catalog.. But these ones where made on Delphi as an active X Library. I notice that building the classes this fashion, the methods of the interfaces implemented by my classes are visible to the COM+ console ..



When I register the Serviced Components built on C#, and setting the class attribute

[ClassInterface ( ClassINterfaceType.AutoDispatch) ] this is suppose to expose all the public methods of my class.. and it doesn't actually none of them is visible.



PLEASE, PLEASE SOMEONE HELP ME



Joseph Higaki
 
S

Stan

You got to have an application proxy installed. There must be something wrong with it because this is the only reason I can think of...
yes i've already done that,
cause i'm pretty sure that draging the component to the COM + console is the same as calling regsvcs but it seems that when i invoke the remote methods on the client, it runs on the local copy of the dll.
I may be wrong, but if the server dll will be instanciated on the remote machine (computer A on my case). The other dlls used by the COM are no t nescessary on the client machine.
When i copy all the server dll's (notice that only one of them contains serviced components). it actually works but running all processes on client machine

Jospeh
You have to

1. run regsvcs on the server for your serviced component
2. Export application proxy on server
3. Import application proxy on client (by running msi file or Add Application).
4. Copy server dlls to client. You might want to put them into GAC but it is not required)

Hope this helps,

-Stan
Please any help will do!!!!

I have several issues implementing serviced components with .NET framework. Please stop a few minutes to read the issues found on my application. This is an academic project emulating an online billing software for a health care facility.

My application is divided into different projects which they map to the logical layers that microsoft suggests for architectural design.

1.. A presentation layer that is a winform project.
2.. A class library of common functionality that is referenced by all projects (client & server side).
On the server side I have:

1.. A project of Interoperability or something like a business facade that interprets incoming parameters (DataSets or XmlDocuments with specified schemas) and passes through the data in order 2 be processed by the business logic application. Then returns the appropiate responses that can be native .net types compliant with COM as string, int, double, or serializable objects like XmlDocument or DataSets. THIS IS WHERE THE SERVICED COMPONENTS ARE!!
2.. A project of business logic, a simple class library containing business rules
3.. A project of data access, a simple class library containing simple methods that receive parameters from the business logic and updates the relational database.
4.. A project that is used to communicate with other applications like invoking other serviced components and consuming XML web services
I have done this:

1.. On the properties of the (1) project I have set on true the Register for COM interoperability
2.. On the bin/debug folder of the (1) project a tlb file is generated.
3.. On the Component Services Admin console I create a new Application, this is set as a ServerLibrary
4.. I drag the tlb from the windows explorer to the Component Services Admin console creating as many components as serviced classes in the project.
5.. I export the application to install a server in another computer. Lets call this Server.msi
6.. I execute the generated Server.msi on computer A
7.. Now on the component services of computer A the application has been installed.
8.. From this computer I generate a client proxy from the Component Services Admin console right clicking on the app. This generates Client.msi
9.. I execute Client.msi on computer B. This creates the same app on the Component Services Admin console but all the settings are disabled except for the activation server to use that is by default computer A.




My questions are:

1.. What should I deploy on computer B. :
1.. The cilente.exe. (It shows an System.IO error, it doesn't find the requested dll meaning dll number 1)
2.. The cilente.exe, and a local copy of project (1).dll (It shows an System.IO error, it doesn't find the requested dll - meaning dll number 2)
3.. The cilente.exe, and a local copy of project (1).dll and the rest of the required dlls by the project (1).dll. That are all the server side dll's.
This actually works but there is no remote access here!!. I run a profiler trace and the HostName of the statements is computer B







Another doubt, I have previously created COM objects and registered on the COM+ catalog.. But these ones where made on Delphi as an active X Library. I notice that building the classes this fashion, the methods of the interfaces implemented by my classes are visible to the COM+ console .



When I register the Serviced Components built on C#, and setting the class attribute

[ClassInterface ( ClassINterfaceType.AutoDispatch) ] this is suppose to expose all the public methods of my class.. and it doesn't actually none of them is visible.



PLEASE, PLEASE SOMEONE HELP ME



Joseph Higaki
 
S

Stan

How do you know that it runs on client?
yes i've already done that,
cause i'm pretty sure that draging the component to the COM + console is the same as calling regsvcs but it seems that when i invoke the remote methods on the client, it runs on the local copy of the dll.
I may be wrong, but if the server dll will be instanciated on the remote machine (computer A on my case). The other dlls used by the COM are no t nescessary on the client machine.
When i copy all the server dll's (notice that only one of them contains serviced components). it actually works but running all processes on client machine

Jospeh
You have to

1. run regsvcs on the server for your serviced component
2. Export application proxy on server
3. Import application proxy on client (by running msi file or Add Application).
4. Copy server dlls to client. You might want to put them into GAC but it is not required)

Hope this helps,

-Stan
Please any help will do!!!!

I have several issues implementing serviced components with .NET framework. Please stop a few minutes to read the issues found on my application. This is an academic project emulating an online billing software for a health care facility.

My application is divided into different projects which they map to the logical layers that microsoft suggests for architectural design.

1.. A presentation layer that is a winform project.
2.. A class library of common functionality that is referenced by all projects (client & server side).
On the server side I have:

1.. A project of Interoperability or something like a business facade that interprets incoming parameters (DataSets or XmlDocuments with specified schemas) and passes through the data in order 2 be processed by the business logic application. Then returns the appropiate responses that can be native .net types compliant with COM as string, int, double, or serializable objects like XmlDocument or DataSets. THIS IS WHERE THE SERVICED COMPONENTS ARE!!
2.. A project of business logic, a simple class library containing business rules
3.. A project of data access, a simple class library containing simple methods that receive parameters from the business logic and updates the relational database.
4.. A project that is used to communicate with other applications like invoking other serviced components and consuming XML web services
I have done this:

1.. On the properties of the (1) project I have set on true the Register for COM interoperability
2.. On the bin/debug folder of the (1) project a tlb file is generated.
3.. On the Component Services Admin console I create a new Application, this is set as a ServerLibrary
4.. I drag the tlb from the windows explorer to the Component Services Admin console creating as many components as serviced classes in the project.
5.. I export the application to install a server in another computer. Lets call this Server.msi
6.. I execute the generated Server.msi on computer A
7.. Now on the component services of computer A the application has been installed.
8.. From this computer I generate a client proxy from the Component Services Admin console right clicking on the app. This generates Client.msi
9.. I execute Client.msi on computer B. This creates the same app on the Component Services Admin console but all the settings are disabled except for the activation server to use that is by default computer A.




My questions are:

1.. What should I deploy on computer B. :
1.. The cilente.exe. (It shows an System.IO error, it doesn't find the requested dll meaning dll number 1)
2.. The cilente.exe, and a local copy of project (1).dll (It shows an System.IO error, it doesn't find the requested dll - meaning dll number 2)
3.. The cilente.exe, and a local copy of project (1).dll and the rest of the required dlls by the project (1).dll. That are all the server side dll's.
This actually works but there is no remote access here!!. I run a profiler trace and the HostName of the statements is computer B







Another doubt, I have previously created COM objects and registered on the COM+ catalog.. But these ones where made on Delphi as an active X Library. I notice that building the classes this fashion, the methods of the interfaces implemented by my classes are visible to the COM+ console .



When I register the Serviced Components built on C#, and setting the class attribute

[ClassInterface ( ClassINterfaceType.AutoDispatch) ] this is suppose to expose all the public methods of my class.. and it doesn't actually none of them is visible.



PLEASE, PLEASE SOMEONE HELP ME



Joseph Higaki
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top