Проекты

WCF Server

Основная цель данного модуля заключается в удалённой автоматизации деятельности других плагинов. Используя протоколы REST или SOAP можно вызвать публичный метод другого плагина и запустить/остановить логику в процессе или получить статистику работы логики в процессе

Внимание! Внутри используется технология WCF, учитывая что пока в новых версия .NET нет ни WCF, ни .NET Remoting, то завязываться на эту технологию в долгосрочных проектах может быть проблематично.

Из-за динамики и строгой типизацией SOAP протокола, ответ и массив аргументов передаётся в REST формате.

Настройки

  • Host Url http://{ipAddress}:8080 — Ссылка по которой будет доступен протокол управления плагинами. Для SOAP протокола ссылка по умолчанию будет вида: http://{ipAddress}:8080/soap
  • Service Type REST — Используемые протоколы для взаимодействия с плагинами. По умолчанию используется REST протокол. Можно запустить на одном хосте как оба, так и один протокол. Если ни один протокол не выбран, то плагин будет искать контролирующий процесс через IPC и не будет самостоятельно поднимать хост.

REST Endpoints

  • Получить массив идентификаторов запущенных на машине процессов SAL хостов, которые используют плагин WCF Server.

    Url: http://{ipAddress}:8080/Instance
    Method: GET
    Result: [63464,13488]
  • Получить список плагинов запущенных в процессе SAL хоста. Если указать идентификатор инстанса, то будут получены плагины через IPC конкретного инстанса

    Url: http://{ipAddress}:8080/Plugins или http://{ipAddress}:8080/{instanceId}/Plugins
    Method: GET
    Result: [{"Company":"{AssemblyCompanyAttribute}","Copyright":"{AssemblyCopyrightAttribute}","Description":"{AssemblyDescriptionAttribute}","ID":"{GuidAttribute}","Name":"{AssemblyTitleAttribute}","Source":"{Physical file path}","Version":{"_Build":7660,"_Major":1,"_Minor":0,"_Revision":42700}},...]
  • Получить информацию о досупных публичных методах плагина

    Url: http://{ipAddress}:8080/Plugins/{GuidAttribute} или http://{ipAddress}:8080/{instanceId}/Plugins/{GuidAttribute}
    Method: GET
    Result: {"Members":[{"ReturnType":null,"Parameters":null,"Name":"{MethodName}","TypeName":"{Namespace.ClassName}","MemberType":"Method"},{"Name":"{PropertyName}","TypeName":"{PropertyType}","MemberType":"Property"},...]}
  • Выполнить метод или свойство без параметров

    Url: http://{ipAddress}:8080/Plugins/{GuidAttribute}/{MethodName/PropertyName} или http://{ipAddress}:8080/{instanceId}/Plugins/{GuidAttibute}/{MethodName/PropertyName}
    Method: GET
    Result: HTTP 200 OK или сериализованный результат выполнения метода или FaultException
  • Выполнить метод или свойство с передачей параметров

    Url: http://{ipAddress}:8080/Plugins/{GuidAttribute}/{MethodName/PropertyName} или http://{ipAddress}:8080/{instanceId}/Plugins/{GuidAttibute}/{MethodName/PropertyName}
    Method: POST
    Payload: {"{Argument1Name}":"{Argument1Value}","{Argument2Name}":"{Argument2Value}",...}
    Result: HTTP 200 OK или сериализованный результат выполнения метода или FaultException

SOAP Endpoints

WSDL и все SOAP методы доступны по URL: http://{ipAddress}:8080/soap

  • GetPlugins — Получить все плагины в главном инстансе
    Result: Массив объектов описаний загруженных плагинов
  • GetPlugin — Получить информацию об одном плагине. Поиск осуществляется до первого найденного плагина во всех инстансах
    id: Идентификатор загруженного плагина в одном из процессов
    Result: Строка в JSON формате описания публичных функций и свойств загруженного плагина
  • InvokeGetMember — Найти и выполнить метод плагина без аргументов
    id: Идентификатор загруженного плагина в одном из процессов
    memberName: Наименование метода или свойства для вызова в указанном плагине
    Result:Результат выполнения метода в JSON формате или исключение
  • InvokeMember — Найти и выполнить метод плагина без аргументов
    id: Идентификатор загруженного плагина в указанном процессе
    memberName: Наименование метода или свойства для вызова в указанном плагине
    payload: Строковая строка в формате JSON со списком аргументов и их значений
    Result:Результат выполнения метода в JSON формате или исключение
  • GetInstance — Получить все инстансы запущенных хостов на машине
    Result: Массив Int32 всех процессов запущенных хостов
  • GetIpcPlugins — Получить список всех плагинов в конкретном хосте на машине
    instance: Идентификатор процесса запущенного хоста
    Result: Массив всех плагинов в загруженном хосте
  • GetIpcPlugin — Получить информацию об одном плагине в конкретном инстансе.
    instance: Идентификатор процесса запущенного хоста
    id: Идентификатор загруженного плагина в указанном процессе
    Result: Строка в JSON формате описания публичных функций и свойств загруженного плагина
  • InvokeIpcGetMember — Выполнить метод или свойство плагина без указания параметров
    instance: Идентификатор процесса запущенного хоста
    id: Идентификатор загруженного плагина в указанном процессе
    memberName: Наименование метода или свойства для вызова в указанном плагине
    Result:Результат выполнения метода в JSON формате или исключение
  • InvokeIpcMember — Внутренний метод. В SOAP работать не будет
  • FindAndInvokeIpcMember — Внутренний метод. В SOAP работать не будет
Теги:

Скачать

Ссылки