Лучшая практика/идеи по вызову методов, основанных на сетевых текстовых командах? [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Лучшая практика/идеи по вызову методов, основанных на сетевых текстовых командах? [закрыто]

Сообщение Anonymous »


У меня есть проект на C#, который включает управление внешним устройством, например моторизованной сценой. У меня есть класс, который взаимодействует со сценой и предоставляет API для управления им/сообщения о его статусе.

Я хочу иметь серверную программу, которая контролирует указанный этап и может получать текстовые запросы (json) по сети и на основе содержимого запроса активировать соответствующий метод в классе устройства с предоставленными параметрами.

Все запросы являются асинхронными (т. е. клиент не блокирует/не ждет ответа), и поэтому связь осуществляется через асинхронный обмен сообщениями (RabbitMQ), а не через какую-либо структуру RPC (например, gRPC).

Мне пока удалось сделать это с помощью отражения, например:

public void MesseageReciveCallback (строка msg) { RemoteCommand cmd = json.Deserialized(msg); Введите тип устройства = _motorizedStage.GetType(); deviceType.InvokeMember(cmd.Name, BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance, нулевой, _моторизованная сцена, cmd.Параметры); } но мне было интересно, есть ли лучший способ сделать это элегантным способом в вышеуказанных условиях, кроме простого использования большого старого блока переключателей, который использует параметр cmd.Name и вызывает правильный метод.

Я хотел бы отметить, что производительность не является проблемой - то есть я знаю, что отражение не является идеальным с точки зрения этого, но мы говорим об исследовательской установке, используемой немногими пользователями и обрабатывающей максимум несколько запросов в секунду.
р>
Моя главная проблема заключается в том, что текущее решение заставляет клиента отправлять все параметры в object[], что делает эту настройку более склонной к ошибкам во время выполнения, то есть если я изменил тип/порядок параметров в некоторых функции в классе MotorizedStage, клиентский код не будет автоматически предупреждать меня об этом во время компиляции.

Заранее благодарим за любые идеи.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»