Для каждой службы Windows существует класс обслуживания, который также содержит методы запуска и остановки. Однако для вашей службы я просто создаю одноэлементный класс, доступ к которому осуществляется из класса, который обрабатывает запросы клиента WCF.
Нет необходимости ссылаться на exe службы (и я настоятельно рекомендую вам не делать этого), поскольку, когда вы используете WCF, вы вставляете ссылку на службу в свой проект клиента и должны просто использовать два метода для получить и установить данные.
Предлагаю: Конструируйте операции и контракты на данные для службы, а затем создайте ссылку на обслуживание в рамках своего проекта клиента. Это прояснит ситуацию.
Если вы не знаете, о чем я говорю, я рекомендую googleing для образцов WCF.
EDIT
Вы пишете в комментариях, что вы создали класс обслуживания с собственным полем. Я полагаю, вы на самом деле не делали то, что я предлагал :-) Я сказал: создайте одноэлементный класс, к которому обращается класс, обрабатывающий запросы get/set.
public class ValueHolder
{
private static ValueHolder m_singleton = null;
private int m_someValue;
private ValueHolder()
{
m_someValue = 0;
}
public static ValueHolder Instance
{
get
{
if (m_singleton = null)
m_singleton = new ValueHolder();
return m_singleton;
}
}
public int SomeValue
{
get { return m_someValue; }
set { m_someValue = value; }
}
}
Итак, теперь у вас есть класс обслуживания окон, который используется для размещения службы WCF. Служба WCF содержит методы получения/установки значения от ValueHolder.Instance.SomeValue
. Эти методы подвергаются клиенту, используя контракт с данными.
Запустите службу и добавить ссылку на службу к клиенту, используя соответствующий параметр в Visual Studio (не отсылку к DLL, но ссылка службы !!). Теперь клиент обращается к методам get/set службы.
Работа выполнена, где мои деньги? :-D
привет я сделал, как у сказал, но он не работает. Я создал класс Service с методом set и get и частным полем со значением по умолчанию 5. Этот класс ссылается на службу Windows. Я запустил службу. Затем вызванный метод get из единичного тестового класса получил значение по умолчанию 5, затем я вызвал метод Set с аргументом 9, а затем снова вызвал метод Get. Mathod снова возвратил значение 5, а не 9, как ожидалось. – user137348
Опубликовать код. Не могу сказать без кода. –
просто отлично, он отлично работает! Какой номер вашей учетной записи? :-) Чтобы сделать еще один шаг, не лучше ли иметь фабричный метод для получения синглетов? – user137348