[C# - RPC] Probleem met serialiseren object uit .dll

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Gerrit88
  • Registratie: Maart 2007
  • Laatst online: 18-09 10:55
Ik ben bezig met het schrijven van een client - server applicatie waarbij gebruik gemaakt wordt van RPC. Ik ben inmiddels zo ver dat ik allerlei soorten objecten kan versturen en ontvangen. Dit gaat allemaal zonder problemen.

Het probleem is nu dat ik een .dll heb waarmee .pdf files gegenereerd kunnen worden. Ik heb dan uiteindelijk een object PdfDocument wat via de client opvraagbaar moet zijn. Het probleem is nu dat ik de problemen heb met de serialisatie van dit object waardoor ik het niet verstuurd krijg.

Ik ben nog een redelijk beginner op het gebeid van RPC en raakte daarom de weg kwijt toen ik met google heb gezocht naar tutorials en soortgelijke problemen. Ook de search op GOT hielp mij niet bij het oplossen van de problemen maar misschien had ik andere zoekwoorden moet gebruiken.

Kunnen jullie mij op weg helpen met het serialiseren van object wat in een .dll gedefinieerd is?

p.s. Zie nu dat ik de titel nog niet afgemaakt had, moet worden: [C# - RPC] Probleem met serialiseren object uit .dll

[ Voor 6% gewijzigd door Gerrit88 op 12-06-2009 13:38 . Reden: topic titel ]


Acties:
  • 0 Henk 'm!

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 18-09 15:41

mOrPhie

❤️❤️❤️❤️🤍

Als het object zelf niet geserialiseerd kan worden, dan is het makkelijkst is om het object zelf te wrappen in een serializable class, en zelf de serialisatie te implementeren. Wellicht dat het 't beste is om te serialiseren naar base64 als je niet weet wat erin zit, en je hebt te maken met binary data. Zie http://snipplr.com/view/8...bject-to-a-base64-string/.

Zie ook http://msdn.microsoft.com/en-us/library/ms182342(vs.80).aspx.

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


Acties:
  • 0 Henk 'm!

  • Gerrit88
  • Registratie: Maart 2007
  • Laatst online: 18-09 10:55
Bedankt voor je reactie. Ik heb de base64 encoding toegepast. Heb nu de volgende code:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public string getBase64Object(DateTime start, DateTime end)
 {
            report = new AnalyseReport();
            report.setStart(start);
            report.setEnd(end);
            report.generatedReport();

            PdfDocument doc = report.getPdfReport();
            return SerializeBase64(doc);
}

public static string SerializeBase64(object o)
 {
            // Serialize to a base 64 string
            byte[] bytes;
            long length = 0;
            MemoryStream ws = new MemoryStream();
            BinaryFormatter sf = new BinaryFormatter();
            sf.Serialize(ws, o);
            length = ws.Length;
            bytes = ws.GetBuffer();
            string encodedData = bytes.Length + ":" + Convert.ToBase64String(bytes, 0, bytes.Length, Base64FormattingOptions.None);
            return encodedData;
 }


Ik krijg nu op regel 19 de fout dat deze niet als 'serialisable' aangemerkt is. Deze class is onderdeel van de .dll en dus niet editable. Hoe kan ik dit dan toch als 'serialisable' aanmerken?

Acties:
  • 0 Henk 'm!

  • mOrPhie
  • Registratie: September 2000
  • Laatst online: 18-09 15:41

mOrPhie

❤️❤️❤️❤️🤍

Je haalt wat dingen door elkaar.

1) Je hebt geen ISerializable wrapper voor PdfDocument gemaakt.
2) De wrapper moet elke property apart behandelen. Het daadwerkelijke bestand doe je base64-encoden. Je kunt dan gewoon een byte-array maken van een filestream. De conversie wordt dan zoiets als PdfDocument.File --> byte[] --> string. Mijn eerste linkje was wellicht wat verwarrend, maar ik bedoel dus niet dat je het hele object serialiseert per se. Alleen die properties die je nodig hebt.
3) De wrapper (wel serialiseerbaar) gebruik je vervolgens voor de overdracht.

Zie ook: http://www.codeproject.com/KB/cs/objserial.aspx

[ Voor 14% gewijzigd door mOrPhie op 12-06-2009 15:48 ]

Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.


Acties:
  • 0 Henk 'm!

  • Gerrit88
  • Registratie: Maart 2007
  • Laatst online: 18-09 10:55
Oké nogmaals bedankt! Ik ga er maandag weer even naar kijken. Moet inderdaad nog een hoop leren op het gebied van PRC.