Autor Beitrag
Dede
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 21

Win 2000, Suse Linux 8.0
D6 Ent
BeitragVerfasst: Di 14.09.04 15:27 
Huhu,

Ich versuche derzeit mit der .NET Remoting Komponente zu arbeiten um eine 3-Schicht (GUI->Application Server->Datenbank)Architektur zu erstellen. Allerdings habe ich das Problem das ich meine Methoden in der gleichen Unit implementieren muss, indem ich Object Manager erzeuge. Die Funktionen die dort aber angegeben werden, sollen allerdings in einer anderen Klasse liegen (auch andere Unit)...
Zum besseren Verständnis hier mal ein bisschen Code:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
...
type
  RemoteObjectManager = class(MarshalByRefObject, IRemoteObjectManager)
  public
    function EchoStr (Str : string) : string//<--- Diese Funktion soll nicht in dieser Unit implementiert werden, sondern in einer Klasse, die sich in einer anderen Unit befindet
  end;

const
  Port = 4242;
  ServerResource = 'RemoteObjectManager.soap';

var chan : TcpChannel;
begin
  WriteLn('Server wurde gestartet');
  Chan := TcpChannel.Create(Port);
  ChannelServices.RegisterChannel(Chan);
  RemotingConfiguration.RegisterWellKnownServiceType(typeof(RemoteObjectManager),ServerResource,WellKnownObjectMode.SingleCall);
  WriteLn('Mit Tastendruck Server beenden');
  klasse := tClass1.Create; // <- in dieser feschen Klasse befindet sich die EchoStr Methode
  ReadLn;
  klasse := nil;
end.


Nun ist aber mein Problem, rummault und will das diese methode auch in dieser unit implementiert wird... das will ich aber nicht ;D

So ich hoffe ich konnte mein Problem verständlich schildern...

Gruß
Dede
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Di 14.09.04 15:32 
Das Stichwort lautet "Abstrakte Methoden" (Siehe Delphi-Hilfe). :wink:

Cu,
Udontknow
Dede Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 21

Win 2000, Suse Linux 8.0
D6 Ent
BeitragVerfasst: Di 14.09.04 15:44 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
  RemoteObjectManager = class(MarshalByRefObject, IRemoteObjectManager)  
  public  
    function EchoStr (Str : string) : stringvirtualabstract;//<--- Diese Funktion soll nicht in dieser Unit implementiert werden, sondern in einer Klasse, die sich in einer anderen Unit befindet  
  end;


Soweit so gut, doch wie kann ich jetzt auf die EchoStr methode in meiner anderen Klasse referenzieren??

Gruß
Dede
Udontknow
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2596

Win7
D2006 WIN32, .NET (C#)
BeitragVerfasst: Di 14.09.04 16:15 
Ähm, irgendwie glaube ich, dich falsch verstanden zu haben.

Du machst doch einen Nachfahren in der anderen Unit, ja? Dann musst du dort die Funktion mit "override"-Flag implementieren.

Cu,
Udontknow
Dede Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 21

Win 2000, Suse Linux 8.0
D6 Ent
BeitragVerfasst: Di 14.09.04 17:28 
Hm... ich glaub auch :D

ich will eigentlich meinen application server in mehere units (klassen) aufspalten damit nicht jede methode in einer einzigen unit rumgammelt

hab nun aber was im Internet gefunden:

www.aspfree.com/c/a/...moting-and-Delphi/8/

die letzten seiten von dem dokument waren doch recht aufschlussreich...
man braucht also für jede klasse die der application server handlen soll ein eigenes interface.

Trotzdem danke für deine Hilfe Udontknow

Gruß
Dede