假設我有類似這樣的(與所有必要的WCF屬性)類:我可以從WCF服務中返回數據生產者嗎?
class JobProducer
{
Job Produce()
{
// Do some work
return new Job(params);
}
}
和WCF服務(我不寫所有的屬性,但他們在那裏)
class MyService : IService
{
Producer GetProducer()
{
return new Producer();
}
}
和WCF客戶端:
IService client;
var producer = client.GetProducer();
var job = producer.Produce();
while (job != null)
{
// Process job
job = producer.Produce();
}
請問那種設計工作?我應該知道有什麼缺點嗎?
更具體地說,當我調用Producer
上的Produce()
方法時會發生什麼?當WCF將Job
準備好時,WCF會將該方法調用路由到服務並取消阻止客戶端線程?
我想過簡單地從服務中返回一個Stream
,但我想避免將字節反序列化到一個具體的類,並讓框架爲我做。
WCF處理純粹的序列化。您通過線路發送屬性,而不是實例。您正在尋找「遠程處理」,或從客戶端控制居住在某個服務器上的對象。 – CodeCaster
@CodeCaster這是否意味着我無法調用WCF返回的某個方法? – Shmoopy
你不能,因爲生成的類沒有方法。如果您可以在服務和客戶端之間共享DTO定義,但代碼將在客戶端上運行。 – CodeCaster