Exponer las aplicaciones internas de un winforms a través de WCF.

Estoy tratando de dar mis primeros pasos en IPC y WCF, y hasta ahora, estoy cayendo de bruces. Tengo una aplicación Winforms que me gustaría instrumentar un poco para los llamadores remotos. La aplicación winforms tiene la mayor parte de su lógica empresarial limitada a un singleton que se encarga de todo el trabajo de fondo. Me gustaría exponer algunas de las funciones a través de un mecanismo de IPC. WCF parece ser el camino a seguir, así que empecé con eso.

Lo que intenté fue agregar un proyecto de biblioteca de servicios WCF a mi solución, a través del cual me gustaría exponer algunas llamadas. Cuando inicio el proyecto Winforms en el depurador de VS, se ejecuta normalmente y se inicia WcfSvcHost. Puedo comunicarme con el servicio WCF con el WcfTestClient.

Sin embargo, cuando intento acceder al singleton que contiene el código con el que me gustaría comunicarme, parece que estoy obteniendo un nuevo objeto singleton. Claramente, lo estoy haciendo mal; Lo que supongo que está sucediendo es que el servicio se ejecuta en un proceso diferente, por lo que no hay un código compartido real, y por lo tanto no hay un singleton compartido.

No estoy seguro de cómo debo continuar. ¿Mi elección de usar WCF para IPC es incorrecta? ¿Debo integrar los puntos finales de WCF en la aplicación Winforms? ¿Es lo que estoy intentando incluso factible?

EDITAR: pensé que esto era tan alto nivel, y también tan simple que cualquier ejemplo de código sería inútil. Creo que me equivoqué. Así que algún código:

En el montaje de 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;
    }
  }
}

En el ensamblaje 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();
  }
}

cuando preguntoSingletonInited a través del WcfTestClient, obtengo un InitedAt que no es el mismo DateTime que el instatiation del singleton de winforms.

Edit2:

Tengo este código funcionando tal como está (con los andamios generados automáticamente alrededor de las cosas de Winforms). La etiqueta en el formulario muestra un tiempo diferente al tiempo devuelto por la llamada WCF, lo que demuestra que es una instancia diferente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta