Я подумал, что попытаюсь ответить на свой вопрос с подробностями о том, как я решил это решение. Он был основан на статье в блоге Дэна Майнека .
Это резюме, я думаю, что моя концепция наличия нескольких сервисов для каждого из моих корневых бизнес-объектов была неверной.
Вместо этого я предоставил один сервис, который реализовал несколько DataContracts, например
public partial class DeviceService : IDeviceService, IUserService
{
}
Поскольку служба устройств создана как частичный класс, это позволило мне разделить службы, ну, я говорю, что они раздельные, это все та же служба, но это позволило мне разделить их на отдельные файлы и придать службе некоторую структурную организацию.
Последним этапом реализации было объявление двух конечных точек в определении сервиса, например
<service behaviorConfiguration="GPSCloudHost.DeviceServiceBehavior" name="BusinessService.DeviceService">
<endpoint address="Device" binding="wsHttpBinding" contract="BusinessService.DataContracts.IDeviceService"></endpoint>
<endpoint address="User" binding="wsHttpBinding" contract="BusinessService.DataContracts.IUserService"></endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
У меня недостаточно опыта в WCF, чтобы сказать, является ли это "правильным" решением или нет, но оно работает для моих требований. Если у кого-то есть лучшее решение, я бы с удовольствием его услышал!
Приветствия