Здравствуйте, коллеги!
В ходе развития проекта своего пришёл к тому, что у меня куча параллельных циклов, нотифьеров, переменных и так далее. При этом, должна быть возможность включать/выключать отдельный функционал, поддержка оборудования разных производителей (функционал один, но разные протоколы) с возможностью замены "на лету". В итоге, отладка кода, добавление функционала и так далее происходит всё пробематичнее. Решил менять общую структуру приложения, пока не поздно.
Уже начал вырисовывать схему нескольких машин состояний, с контроллером общего состояния, и так далее. Понемногу начал унывать от предстоящего обьёма работы.
А потом попались на глаза темы по LVOOP. И стал закономерный вопрос, как я могу перестроить свое приложение при помощи этого инструментария.
Первое, что бросилось в глаза - веб-сервисы это те же классы лабвью. а с первыми у меня есть некоторый опыт работы. И первый же вопрос, который возник - веб-сервис - это живущий своей жизнью функционал, который запускается вместе с приложением. Как в этом плане обстоят дела у "обычного" класса? надо ли его как-то отдельно запускать?
Второй вопрос - в веб-сервисах есть такое понятие, как StartUp VI's. Там можно организовать цикл, который будет работать постоянно, как только будет загружен сервис. Что выполняет в "обычных" классах такую функцию? Обычный ? Как можно подобного рода включать и отключать - через классический функционал -сервера, или есть какой-то отдельный функционал?
Ну и если есть какие-то советы - с радостью прислушаюсь. Также интересует, не появилось ли толковых русскоязычных источников с "разжевыванием" LVOOP?
Спасибо!
Начал разбираться в LVOOP, нужны советы
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
-
- professor
- Сообщения: 3407
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 176 раз
- Контактная информация:
Re: Начал разбираться в LVOOP, нужны советы
1) смотрел классы бегло, так что на авторитеность в данном вопросе не претендую, а скорее даже сам с интересом почитаю что более опытные напишут
2) смотрел много (6-7) лет назад, может с тех пор ситуация улучшилась.
Так вот, в моём представлении LVOOP, это никакой не OOP, а завуалированные кластеры.
Т.е. создаю я класс, а потом в какой-то момент проводник разветвляю, и обнаруживаю, что изменения данных в одном проводнике не влияют на данные во втором, что оч странно с точки зрения класса.
Это, конечно, лечится очередями, но зачем такие пляски с бубном?
Класс это всего лишь данные, которые где-то хранятся. Функции класса, вызываемые в процессе исполнения кода тут же и исполняются, я не оч понимаю, что там долгжно "крутиться" параллельно всему коду с самого начала.
А управление запуском-остановкой отдельных , да, через viserver,
2) смотрел много (6-7) лет назад, может с тех пор ситуация улучшилась.
Так вот, в моём представлении LVOOP, это никакой не OOP, а завуалированные кластеры.
Т.е. создаю я класс, а потом в какой-то момент проводник разветвляю, и обнаруживаю, что изменения данных в одном проводнике не влияют на данные во втором, что оч странно с точки зрения класса.
Это, конечно, лечится очередями, но зачем такие пляски с бубном?
потому что сразу надо делать по уму :)AlexanderKonoval писал(а):Уже начал вырисовывать схему нескольких машин состояний, с контроллером общего состояния, и так далее. Понемногу начал унывать от предстоящего обьёма работы.
Класс это всего лишь данные, которые где-то хранятся. Функции класса, вызываемые в процессе исполнения кода тут же и исполняются, я не оч понимаю, что там долгжно "крутиться" параллельно всему коду с самого начала.
А управление запуском-остановкой отдельных , да, через viserver,
-
- developer
- Сообщения: 257
- Зарегистрирован: 03 янв 2014, 19:37
- Версия LabVIEW: 2016
- Откуда: Украина, Киев
- Контактная информация:
Re: Начал разбираться в LVOOP, нужны советы
Artem.spb, чтобы сразу по уму делать, навыков не было. я вообще по образованию экономист. - первый язык программирования, которым занимался. и учился на ходу, прямо в процессе решения поставленной задачи. ПО сейчас работает и хорошо, да вот только хочется сделать лучше. да и гибкости ПО хотелось бы добавить. и сейчас как раз навыков достаточно, чтобы сделать лучше. хочу просто понять, делать привычно для себя, или стоит перейти на LVOOP.
Касательно завуалированных кластеров - так-то оно так. почти. только вот всё оживает при помощи Actor'ов. как - пока не понял. слишком всё непривычно и сперва непонятно, но за день уже более-менее представление начало формироваться.
Касательно завуалированных кластеров - так-то оно так. почти. только вот всё оживает при помощи Actor'ов. как - пока не понял. слишком всё непривычно и сперва непонятно, но за день уже более-менее представление начало формироваться.
колдооооовствооооо! (С)
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Начал разбираться в LVOOP, нужны советы
AlexanderKonoval писал(а):
Касательно завуалированных кластеров - так-то оно так. почти. только вот всё оживает при помощи Actor'ов. как - пока не понял. слишком всё непривычно и сперва непонятно, но за день уже более-менее представление начало формироваться.
Actor - это, если я не ошибаюсь, относится к архитектуре Actor Framework, и это совсем другая история. Actor Framework сделан на основе концепций OOP. Но использование OOP не обязательно подразумевает под собой использование Actor Framework.
Мы делили апельсин - много наших полегло...
-
- user
- Сообщения: 97
- Зарегистрирован: 21 июн 2011, 15:05
- Награды: 1
- Версия LabVIEW: 2009-2017
- Откуда: Novosibirsk
- Контактная информация:
Re: Начал разбираться в LVOOP, нужны советы
Простой такой кластер с инкапсуляцией, наследованием и полиморфизмом.Artem.spb писал(а):Так вот, в моём представлении LVOOP, это никакой не OOP, а завуалированные кластеры.
При разветвлении создается копия объекта (не обязательно класса). Если Вы хотите чтобы при разветвлении проводников можно было менять данные класса в разных местах, рекомендую ознакомится с G# и/или GOOP (тем более что последний из платного стал бесплатным) или просто использовать DVR.Artem.spb писал(а): Т.е. создаю я класс, а потом в какой-то момент проводник разветвляю, и обнаруживаю, что изменения данных в одном проводнике не влияют на данные во втором
Uniscan Research