Если надо забрать данные из контроллера, то можно использовать OPC-сервер Kepware KEPServer или аналоги. Далее данные забираются с него каким-нибудь OPC-client SDK. Можно погуглить или посмотреть на http://www.opcconnect.com (лично я работал с данными в самописном десктоп .Net приложении, но если бы хотел делать именно как сайт, то написал бы на .Net MVC без CSWorks, получались бы более просто в конфигурации и с возможностью работать с данными на сервере, а не только браузере)
Можно похоливарить на тему SPA is wrong way.
Если не делать SPA, то как-то легче становиться жить, меньше кода на JS, меньше тестов на JS, шаблонизатор за счёт бэкэнда, бандлы и минификация тоже на любимом бэкэнде, и не надо никаких Grunt, Gulp и т.п.
В итоге на фронтэнде нужен наипростейший two-way model databinding, да всякие разные компоненты календарей, селектов и т.п.
Известен ли вам термин ПИД-регулятор? А передаточная функция из теории автоматического управления?
Я это к тому что есть специальность инженера по автоматизации в автомобильной отрасли, и это отличается от специальности программиста, хотя и там и там есть место программированию.
(например, консольное приложение не имеет сессии вообще), поэтому работу с ними реализуют тоже сервисы
А зачем вообще использовать сессии, особенно на уровне бизнес логики? Если хочется закэшировать данные только для конкретного пользователя, используйте составной ключ cacheKey = cacheKeyPrefix + separator + user.Id.
Я ещё могу понять редкие случаи использования сессий на уровне web-приложения, но тащить их ниже на уровень бизнесс-логики — это ошибка протекающих абстракций.
мне не нравится класс SessionDataServiceBase, а именно метод T Get(string key, Func getData), который не только работает с сессией, но и занимается обработкой данных.
Зря вы так. Какая там обработка данных? Вот код из одного моего проекта
public class InMemoryCache : ICache
{
public const int CacheMinutes = 10;
public T GetOrSet<T>(string cacheKey, Func<T> getItemCallback) where T : class
{
T item = MemoryCache.Default.Get(cacheKey) as T;
if (item == null)
{
item = getItemCallback();
MemoryCache.Default.Add(cacheKey, item, DateTime.Now.AddMinutes(CacheMinutes));
}
return item;
}
Вся логика обработки данных остаётся в соответствующих сервисах, а в этом тупо получение/сохранение данных в кэше. Это очень удобно.
Но на самом-то деле Хром используется также для доступа к багтрекеру, документации, stackoverflow. Но первая версия трекера не умела отличать эти действия и записывала всё в одну категорию. Одно из временных решений — использовать Хром для чтения хабра / почты / vk и т.п., а всю рабочую деятельность вести в Frirefox. Но привычка была слишком сильна и всё равно в итоге часть работы делалась по привычке в Хроме.
Так как была решена эта проблема? Я установил, запустил, а в отчётах только сам браузер без возможности разделить что эти сайты смотрю по работе, а это я во вконтактике сижу.
Что было бы здорово? Во-первых, какой-нибудь опенсорс-проект, который вы от начала и до конца написали. Желательно, если я делаю какую-нибудь инфраструктуру, чтобы данные быстро считались, ещё что-то, то, конечно, мне было бы интересно, чтобы мне написали чего-нибудь опенсорсное. Не сайтик какой-то сделали, а чего-нибудь по теме. Почему мне это интересно? Могу посмотреть на ваш код, я могу посмотреть как часто вы коммитили, могу посмотреть как вы реагировали на баги от пользователей, баги от разработчиков, которые это используют — всё записано, я всё смотрю и думаю: «Во, тут баг два года уже не закрывали, тут вы невежливо ответили пользователю, тут ещё чего-то — не беру»
Перевод — «Поработай бесплатно, выложи в опенсорс что-нибудь что поможет мне по моей работе, и тогда я может быть рассмотрю твоё резюме». Какая-то дедовщина и поиск халявы.
Антипомпажный клапан с регулятором, при приближении к границе помпажа, подают часть потока с выхода на вход компрессора, КПД падает, но в качестве защиты подходит.
Я очень сильно сомневаюсь что программу на ПЛК в принципе будут писать на Java. По крайней мере на взрывоопасном производстве ПЛК должны быть сертифицированы и программируемым на одном из языков стандарта IEC 61131. А они очень низкоуровневые, напрямую привязаны к железу. И несмотря на более высокие требования к знаниям, оплачивается меньше чем написание сайтиков (я собственно поэтому и сменил область).
Так что приведённая аналогия подобна котёнку с дверцей.
Получается в 2016 году низкоквалифицированных кадров считающих что «Нет бога кроме JS и V8 пророк его...» станет в 2 раза больше? С одной стороны печально. С другой стороны чем больше таких спецов тем дороже становится настоящие специалисты.
Специалистов по JS станет больше, потому что он более востребован. Оплачиваться они будут выше чем «настоящие специалисты».
Собственно, затея вот в чем: можно было бы, конечно, отдельно поднять Fiddler, написать в нем логику и гонять через него трафик с node-webkit-но это не так интересно. А значит, будем совмещать все под одной крышей, благо у Fiddler есть библиотека на C#
Что-то не уловил суть происходящего, зачем это делается, можете рассказать подробнее в контексте бизнес-логики?
Насчёт «лежа» — у меня как-то выработалась постоянная поза, сидеть в полулежачем состоянии (угол 120, жопу на передний край кресла, спина скруглена и касается спинки стула только лопатками). Что скажете об этой позе?
Если не делать SPA, то как-то легче становиться жить, меньше кода на JS, меньше тестов на JS, шаблонизатор за счёт бэкэнда, бандлы и минификация тоже на любимом бэкэнде, и не надо никаких Grunt, Gulp и т.п.
В итоге на фронтэнде нужен наипростейший two-way model databinding, да всякие разные компоненты календарей, селектов и т.п.
Я это к тому что есть специальность инженера по автоматизации в автомобильной отрасли, и это отличается от специальности программиста, хотя и там и там есть место программированию.
А зачем вообще использовать сессии, особенно на уровне бизнес логики? Если хочется закэшировать данные только для конкретного пользователя, используйте составной ключ cacheKey = cacheKeyPrefix + separator + user.Id.
Я ещё могу понять редкие случаи использования сессий на уровне web-приложения, но тащить их ниже на уровень бизнесс-логики — это ошибка протекающих абстракций.
Зря вы так. Какая там обработка данных? Вот код из одного моего проекта
Вся логика обработки данных остаётся в соответствующих сервисах, а в этом тупо получение/сохранение данных в кэше. Это очень удобно.
(Simon’s Cat — 04 Fly Guy)
Так как была решена эта проблема? Я установил, запустил, а в отчётах только сам браузер без возможности разделить что эти сайты смотрю по работе, а это я во вконтактике сижу.
Перевод — «Поработай бесплатно, выложи в опенсорс что-нибудь что поможет мне по моей работе, и тогда я может быть рассмотрю твоё резюме». Какая-то дедовщина и поиск халявы.
github.com/ulex/ZenSharp
Так что приведённая аналогия подобна котёнку с дверцей.
Специалистов по JS станет больше, потому что он более востребован. Оплачиваться они будут выше чем «настоящие специалисты».
Что-то не уловил суть происходящего, зачем это делается, можете рассказать подробнее в контексте бизнес-логики?