Angenommen, ich eine Klasse ähnlich wie diese haben (mit allen notwendigen WCF-Attribute):Kann ich einen Datenproduzenten von einem WCF-Dienst zurückgeben?
class JobProducer
{
Job Produce()
{
// Do some work
return new Job(params);
}
}
und einen WCF-Dienst (ich alle Attribute nicht zu schreiben, aber sie sind da)
class MyService : IService
{
Producer GetProducer()
{
return new Producer();
}
}
und ein WCF-Client:
IService client;
var producer = client.GetProducer();
var job = producer.Produce();
while (job != null)
{
// Process job
job = producer.Produce();
}
Wird diese Art von Design-Arbeit? Gibt es irgendwelche Nachteile, die ich beachten sollte?
Genauer gesagt, was passiert, wenn ich die Produce()
Methode auf dem aufrufen? wird WCF diesen Methodenaufruf an den Dienst weiterleiten und den Client-Thread entsperren, wenn Job
bereit ist?
Ich dachte über eine einfache Rückgabe eines Stream
aus dem Dienst, aber ich möchte vermeiden, die Bytes zu einer konkreten Klasse deserialisieren und lassen Sie das Framework das für mich tun.
WCF befasst sich mit bloßer Serialisierung. Sie senden Eigenschaften über den Draht, keine Instanzen. Sie suchen nach "Remoting" oder steuern ein Objekt, das auf einem Server von einem Client lebt. – CodeCaster
@CodeCaster Bedeutet das, dass ich eine Methode auf etwas, das WCF zurückgibt, nicht aufrufen kann? – Shmoopy
Sie können nicht, da generierte Klassen keine Methoden haben. Wenn Sie die DTO-Definitionen zwischen Dienst und Client freigeben, können Sie den Code auf dem Client ausführen. – CodeCaster