Laden...

Mit Session.IDBConnection aus COM+App(A) ein Customer.IDBCommand in COM+App(B) ausführen

Erstellt von specialwork vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.243 Views
specialwork Themenstarter:in
26 Beiträge seit 2009
vor 13 Jahren
Mit Session.IDBConnection aus COM+App(A) ein Customer.IDBCommand in COM+App(B) ausführen

Hallo zusammen,

Ich habe folgendes Problem:

Ich habe einen kleine COM+ Anwendung auf der Grundlage von ServicedComponent's entwickelt. In dieser Anwendung ist neben den DataAccess Components (wie beispielsweise "CustomerServices", ProductServices, etc) außerdem noch eine Session Komponente enthalten. Diese Session Komponente ist abgeleitet von ServicedComponent und IDBConnection. Stelle ich nun eine Verbindung mit Hilfe der Session Komponente her, klappt alles wunderbar. Ich kann also auf alle Components in der COM+ Anwendung zugreifen und damit Daten von der entsprechenden Datenbank abrufen, speichern oder aktualisieren.

Nun habe ich mir aber in den Kopf gesetzt, die Komponenten in der COM+ Anwendung in entsprechend kategorische Anwendungen aufzuteilen. Also z.B. werden die Components (SessionServices, AccountServices, etc) in die COM+ Anwendung "Identity and Access Management (IAM)" abgelegt; die Components (CustomerServices, ContactPersonServices, etc) in die COM+ Anwendung "Stakeholder Relationship Management (SRM), usw.

Folgendes geschieht nun seit dieser Änderung:

  1. Der Zugriff auf alle Komponenten in allen entsprechenden COM+ Anwendungen funktioniert einwandfrei.
  2. Sobald ich eine Methode aufrufe, die auf die Datenbank (mit Hilfe von IDbCommand) zugreift, bekomme ich eine Fehlermeldung, das der Server keinen Channelempfänger besitzt.

Ergo habe ich im Server einen TcpServerChannel und in der BusinessLogic einen TcpClientChannel eingebaut.

Nach dieser Änderung wird kein Fehler mehr ausgegeben, aber die Funktion beibt genau an der stelle stehen, andem ein IDbCommand mit der IDbConnection aus der Session einer anderen COM+ Anwendung erstellt wird.

Ich hoffe ich habs einigermaßen verständlich erklärt...

3.728 Beiträge seit 2005
vor 13 Jahren

Hallo specialwork,

warum schreibst Du ServicedComponents?
Verteilte Transaktionen bekommst Du über System.Transactions und reinem Remoting genauso gut hin. Du kannst die Transaktionen dann sogar viel besser steuern.

ServicedComponents sind wegen der Notwendigkeit der Verteilung vom COM+ Proxy-Paketen problematisch.

Wo siehst Du die Vorteile von ServicedComponents für Dein Projekt?