2010-05-24 73 views
1

我想設置一個WCF服務,以便客戶端對我發送的對象所做的任何更改也反映在服務器端。例如,如果大會A具有以下...通過WCF傳遞對象,以便服務器接收客戶端更改

namespace AssemblyA 
{ 

    public class Person 
    { 
     public string FirstName { get; set; } 
     public string LastName { get; set; } 
    } 

    [ServiceContract] 
    public interface IServer 
    { 
     [OperationContract] 
     Person GetPerson(); 
    } 

} 

而組件B引用組件A ...

using AssemblyA; 

namespace AssemblyB 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      <snip> 
      IServer server = factory.CreateChannel(); 
      Person person = server.GetPerson(); 
      person.FirstName = "Kilroy"; 
      person.LastName = "WuzHere"; 
     } 
    } 
} 

是什麼讓這個最簡單的/最佳方式服務的副本Person對象的反映也反映了客戶所做的改變?這甚至有可能嗎?

回答

2

在服務器上創建一個以Person對象爲參數的方法。

[ServiceContract] 
public interface IServer 
{ 
    [OperationContract] 
    Person GetPerson(); 

    [OperationContract] 
    void UpdatePerson(Person person) 
} 

並在設置了FirstName和LastName屬性後,從客戶端調用它。

server.UpdatePerson(person); 
+0

我不確定這是否適用於我正在嘗試做的事......上面給出的示例非常簡單,但對象我其實想要通過更復雜 - 屬性有多個事件,並導致UI更改,硬件輸出等,我會給它一個鏡頭,雖然。 – 2010-05-25 12:26:13

+0

你能否多說一點你的情況?你希望客戶端事件觸發服務器操作,還是反過來呢?服務器和客戶端是否位於本地網絡或Internet上? 如果您的Person對象有事件,您可以實現客戶端代碼以在服務器上運行Update方法。 – 2010-05-25 14:19:01

+1

對不起,花了這麼長的時間來回應 - 在做了一些更多的研究之後,我想我誤解了WCF的工作原理以及它能做的事情。我已經能夠實施像你這樣的建議,適合我需要做的事情。謝謝! – 2010-06-02 22:01:59

相關問題