PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : .Net Remoting Platform AnyCPU -> 32 Bit -> 64 Bit


BigKid
2017-07-21, 10:03:27
Hallo,

ich bin beim Entwickeln in einem Projekt auf Quellen gestossen in denen eine DLL in der ein Marshalled Objekt beschrieben ist mit AnyCPU als Target Platform erzeugt wird.

AnyCPU bedeutet nach meinem Verständnis dass die DLL von JIT Compiler dann je nach Bedarf als 32 oder 64 Bit Variante erzeugt und geladen wird.

Diese DLL/dieses Objekt wird nun einmal von einem Prozess der auch mit AnyCPU erzeugt wurde aber mit Sicherheit unter 32 Bit läuft genutzt bzw. erzeugt und dann per Remoting an einen Prozess übergeben der unter 64 Bit läuft.

Das funktioniert in dem Fall auch. Aber ist das gesichert ?

Ich habe im Netz Posts gefunden, dass das nicht nur geht sondern der einzige Weg ist 32 und 64 Bit Dlls miteinenader arbeiten zu lassen.

Aber nix "offizielles" von MS - hat da jemand was ?

Monger
2017-08-08, 22:52:19
Das große Werbeversprechen von .net war ja gerade, dass man rechnerübergreifend Prozesse miteinander reden lassen kann. Basiert halt alles im Endeffekt auf Serialisierung. Das hat erstmal wenig mit 64/32 Bit Prozessen zu tun.

BigKid
2017-09-07, 14:43:59
Das große Werbeversprechen von .net war ja gerade, dass man rechnerübergreifend Prozesse miteinander reden lassen kann. Basiert halt alles im Endeffekt auf Serialisierung. Das hat erstmal wenig mit 64/32 Bit Prozessen zu tun.
Meine Sorge war: Wenn du eine INT serialisierst spielt es schon eine Rolle dass Sender und Empfänger sich einig sind wie lange die INT ist.
Int war "früher" mal so lange wie deine CPU bzw. dein OS es vorgegeben hat...
Soweit ich das mittlerweile verstanden habe ist eine INT bei C# / .NET immer gleich lang, egal ob ich mich in einem 32Bit oder einem 64 Bit process space aufhalte... Insofern hat es sich für mich erledigt - ich nehms als gegeben hin...

Demirug
2017-09-08, 14:27:46
Soweit ich das mittlerweile verstanden habe ist eine INT bei C# / .NET immer gleich lang, egal ob ich mich in einem 32Bit oder einem 64 Bit process space aufhalte... Insofern hat es sich für mich erledigt - ich nehms als gegeben hin...

Ja die Datentypen sind bis auf wenige Ausnahmen (z.B. IntPtr) genau definiert. Kritisch wird es nur wenn man sich auf die tiefen von unsafe Code und damit pointer begibt. Da muss man dann wieder sehr genau aufpassen was man macht wenn man kompatible bleiben möchte.

Monger
2017-09-08, 15:01:44
Int in C# ist ein Alias für int32 - also immer 32 Bit. Du kannst auch int64 unter 32 Bit nutzen - ist dann halt nur evtl langsamer.
Als normaler Entwickler merkst du kaum, gegen was für ne Hardware du entwickelst.

iamthebear
2017-09-22, 18:43:14
Ich würde einmal zuerst klären ob doe .dll überhaupt unter 64Bit funktioniert. Wenn diese dann 32Bit dlls nachlädt oder zB einen ODBC Zugriff macht ohne den entsprechenden 64 Bit Treiber zu haben, dann schlägt das oft fehl.