Этот вопрос будет конкретным c и требует определенного количества справочной информации, так что держитесь.
Проект, над которым я работаю, имеет (для упрощения) 4 основных компонента: OP C Сервер UA (OP C UA - протокол связи), веб-интерфейс (используемый для отображения данных и получения действий пользователя), сложная структура объектов, служба «реального времени» для связи последних трех компонентов.
Я создаю этот проект (в основном) в Visual Studio, используя C# проектов.
OP C Сервер UA
Этот компонент существует вне моего достичь, и я просто собираюсь запросить данные с него, используя протокол OP C UA. Эта конкретная c часть моего проекта все еще находится в разработке, но я знаю, что нужно сделать, это просто вопрос написания кода.
Веб-интерфейс
Этот компонент будет получать и запрашивать данные из службы реального времени. Как и сервер OP C UA, эта часть находится в разработке и является далеко не самой сложной частью проекта.
Сложная структура объекта
У меня есть сложная объектная структура, основанная на «главном» объекте, который я называю тегом. Ниже представлен макет структуры тега ( Примечание : система общих c классов используется в фоновом режиме, но пока работает правильно). Эта структура объекта в настоящее время основана на проекте библиотеки классов.
public class Tag
{
// TagConfiguration derives into a generic class
public TagConfiguration Configuration; // This contains a lot of properties which is what makes a Tag complex
public object CurrentValue; // This is where one of the generic uses comes in
public object Alarm; // This is also where the generic comes in
// Constructors and methods (not required for my issue)
}
Служба в реальном времени
В этом и заключается моя проблема. Эта служба должна выполнить 5 основных заданий:
- Прочитать файл конфигурации для создания списка объектов Tag
- Запрашивать данные с OP C UA-сервера через регулярные промежутки времени
- Записывать данные в свойство
CurrentValue
тега - Периодически (на основе
TagConfiguration
свойств pu sh объектов тега во внешнюю SQL базу данных - Получение запрашивать из веб-интерфейса и обслуживать их (включая вводимые пользователем данные)
Теперь, когда структура объяснена, я ищу две части информации:
- Какой тип службы для использования (WCF, Windows, Other?) и рекомендации по ее правильной реализации
- Какой тип проекта. NET использовать для хранения обновляемых объектов тегов и отправки в веб-интерфейс и база данных SQL, поскольку я предполагаю, что библиотека классов - это не решение 'go to'.