Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Механизм обмена информацией между компонентами сис


Автор: Anyone 25.5.2012, 10:20
Здравствуйте!

Есть некое распределенное приложение, компоненты которой выполнены в виде сборок, WCF-сервисов и Веб-сервисов. Все они имеют свой, отличный от других интерфейс. Необходимо продумать механизм обмена данными между компонентами и управления ими (к примеру, обратится к компоненту A, вызвать его метод а1 и возвратить данные компоненту Б).

На ум приходит такое решение: реализовать очередь задач, компоненты создают задачи и добавляют их в очередь, в отдельном потоке из очереди последовательно извлекаются задачи и перенаправляются на компоненты, которые указаны в качестве получателей, они выполняют необходимые действия и складывают результат в очередь выполненных задач (ну или в ту же очередь с типом задачи "ответ").
Соответственно интерфейс задачи будет иметь примерно такой вид:
Код

public interface ITask
{
    Guid Id { get; } // Идентификатор задачи
    string SourceName { get; } // Отправитель
    string DestantinationName { get; } // Получатель
    int Task { get; set; } // Идентификатор действия (метода)
    object Data {get; set; } // Данные
}

А интерфейс подключаемого компонента:
Код

public interface IComponent
{
    Guid Id { get; set; } // Идентификатор компонента (однотипные компоненты имеют одинаковый идентификатор, но разное имя)
    string Name { get; set; } // Имя компонента (используется как имя отправителя или получателя)
    ExecuteTask (Task task); // Выполнить задачу
    Task CreateTask(); // Создать задачу
}


Какие еще есть варианты?
Есть ли какие-то стандартные средства для решения задачи?

Спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)