Я попытаюсь объяснить, что я хочу в коде, потому что не может сформулировать его словами.Как реализовать концепцию службы WCF, которая инкапсулирует другие службы WCF?
У меня есть какой-то ресурс, и я инкапсулировать его использование в службе WCF, и у меня есть менеджер ресурсов, который контролирует доступ к этим ресурсам, который также является служба WCF, что-то вроде этого:
//Allows only one client to use it at the same time...
public interface IResource
{
string GetResourceDescription();
void DoWork();
void BeginWork();
void EndWork();
}
//Governs access and location of resources
public interface IResourceManager
{
IEnumerable<string> GetResourcesDescriptions();
bool IsResourceAvailable(string resourceDescription);
void BeginWorkWith(string resourceDescription);
void DoWorkWith(string resourceDescription)
void EndWorkWith(string resourceDescription);
}
Что мне не нравится в этом коде, так это то, что при работе с IResourceManager
мне нужно всегда указывать, какой ресурс я хочу использовать для работы сервиса, поэтому в основном IResourceManager
имеют те же сервисные операции, что и IResource
, но в качестве параметра принимает дополнительный идентификатор IResource
.
Что я хочу:
public interface IResourceManager
{
IEnumerable<string> GetResourcesDescriptions();
//I want it to return service proxy (ICommunicationObject)
IResource GetResource(string resourceDescription);
}
Во-первых, это невозможно, во-вторых, клиенты не могут взаимодействовать с IResource
непосредственно на сетевом уровне (нет прямой связи).
До сих пор я нашел только одно не уродливое решение, чтобы создать клиентскую оболочку, которая имитирует это поведение. Как реализовать и использовать такие службы WCF?