Expondo internals de uma aplicação winforms através do WCF

Estou tentando dar os primeiros passos no IPC e no WCF, e até agora estou caindo de cara no chão. Eu tenho um aplicativo WinForms que gostaria de instrumentar um pouco para chamadores remotos. O aplicativo winforms tem a maior parte de sua lógica de negócios confinada a um singleton que cuida de todo o trabalho em segundo plano. Eu gostaria de expor algumas das funcionalidades através de um mecanismo de IPC. O WCF parece ser o caminho a seguir, então eu comecei com isso.

O que eu tentei é adicionar um projeto de biblioteca de serviços WCF à minha solução, através do qual eu gostaria de expor algumas chamadas. Quando inicio o projeto Winforms no depurador VS, ele é executado normalmente e o WcfSvcHost é inicializado. Eu posso me comunicar com o serviço WCF com o WcfTestClient.

No entanto, quando tento acessar o singleton segurando o código com o qual gostaria de me comunicar, parece que estou obtendo um novo objeto singleton. Claramente, estou fazendo errado; O que eu acho que está acontecendo é que o serviço é executado em um processo diferente, portanto, não há nenhum código compartilhado real e, portanto, nenhum singleton compartilhado.

Não tenho certeza de como devo continuar. A minha escolha de usar o WCF para IPC é a errada? Devo integrar os pontos de extremidade do WCF no aplicativo WinForms? O que estou tentando é viável?

EDIT: Eu percebi que isso era tão alto nível, e tão simples que qualquer amostra de código seria inútil. Eu acho que estava errado. Então, algum código:

No assembly WinForms:

public partial class Form1 : Form
{
  public Form1()
    {
      InitializeComponent();
      label1.Text = MySingleton.Instance.InitedAt.ToString();
    }
}

public class MySingleton
{
  private static MySingleton instance = new MySingleton();
  private DateTime inited;

  private MySingleton()
  {
    this.inited = DateTime.Now;
  }

  public static MySingleton Instance
  {
    get
    {
      return instance;
    }
  }

  public DateTime InitedAt
  {
    get
    {
      return this.inited;
    }
  }
}

No assembly WCFServiceLibrary:

[ServiceContract]
public interface IApplicationProbe {

  [OperationContract]
  string DoesItWork();

  [OperationContract]
  string SingletonInited();
}

public class ApplicationProbe : IApplicationProbe {
  public string DoesItWork(){
    return "Why yes, yes it does";
  }

  public string SingletonInited(){
    return MySingleton.Instance.InitedAt.ToString();
  }
}

quando eu consultarSingletonInited através do WcfTestClient, recebo um InitedAt que não é o mesmo DateTime que a instatiação do singleton do winforms.

Edit2:

Eu tenho esse código em execução como está (com o andaime gerado automaticamente em torno do material Winforms). O rótulo no formulário exibe um horário diferente do tempo retornado da chamada do WCF, demonstrando que é uma instância diferente.

questionAnswers(2)

yourAnswerToTheQuestion