|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Пользовательские формочки проектирую первый раз. Требуется программа для рассчета инженерных конструкций. Помимо средств работы со стандартными датасетами типо Клиенты, Адреса, Меджеры, Шурупы, Операции, программа включает в себя несколько достаточно крупных модулей таких как, к примеру Расчет Конструкци. РК состоит из множества форм: иифа об объекте, инфо о материалах, геолокации, операциях, субподрядчиков, калькуляторы цемента, механических рисков, стандартных отклонений, гантт, временная таблица по операциям, расчет P10, P90 по статистическим данным и т.д., и т.п. Клиент работает через веб с медленным интернетом, поддержка IE9 обязательна. Для РК нужна одна очень длинная страница со скролингом, котарая включет в себя все модули. Согласно спецификации и юзерстори это должно быть как огромный вордовский документ, где на каждой странице вводится определённая информация (котая может быть представлена в виде формы, таблицы, датагрида, калькулятора, ричедитора, графика и т.д.), и сводной. Плюс при изменении одной информации должна динамически изменяться вся связанная информация, к примеру если в информации о проекте я меняю одно из обслуживающих судов - это влечет за собой пересчет рисков, времени и возможно удалинию инфы о доставке некоторых материалов из определенных стран. Само собой все алертится пользователю и сохраняется в базу. Система будет полностью абстрагирована от клиентской части и экспозит во внешний мир только Services (бизнесс модели и методы для работы с ними согласно бизнесс логики), которые клиент (включая и клиентов 3 партиес) и должен консумить (включая и 3 партиес сервисы). Сервисы экспозятся через Web API OData (можно экспозить и через WCF, API2, проблемы нет). Команда в основном джуниоры. Отношения с проектом намечаются долгие (контракт 5 лет) и регулярные. Для клиента пока рассматриваю: 1) ASP.NET + Kendo UI (Kendo MVVM Framework) ЗА: отличнейший суппорт, низкий порог вхождения ПРОТИВ: дублирование моделей в MVC на сервере и VM на клиенте, тестирование клиента проблематичное. 2) ASP.NET (ReactJS.NET) + ReactJS + Observable MV (Kendo, Knockout и т.п.) ЗА: учитывая серверсайд рендеринг и сам реакт - апп очень быстрая ПРОТИВ: саппорт только комунити, проекты молодые, дублирование моделей в MVC на сервере и VM на клиенте, высокий порог вхождения, тестирование клиента проблематичное. 3) Чистый ReactJS + Object.observe или тот же Knockout ЗА: быстрый, клиент полностью абстрагирован, тестируем. ПРОТИВ: саппорт только комунити, проекты молодые, высокий порог вхождения. Что еще стоит рассмотреть, какие за/против не учел? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2015, 11:14 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Cheerful CalfПлюс при изменении одной информации должна динамически изменяться вся связанная информация, к примеру если в информации о проекте я меняю одно из обслуживающих судов - это влечет за собой пересчет рисков, времени и возможно удалинию инфы о доставке некоторых материалов из определенных стран.посмотреть в сторону FRP (functional reactive programming) как на клиенте (тот же ReactJS, Bacon, ClosureScript, Kefir, так и на сервере (Reactive Extensions или Rx). ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2015, 11:35 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
skyANACheerful CalfПлюс при изменении одной информации должна динамически изменяться вся связанная информация, к примеру если в информации о проекте я меняю одно из обслуживающих судов - это влечет за собой пересчет рисков, времени и возможно удалинию инфы о доставке некоторых материалов из определенных стран.посмотреть в сторону FRP (functional reactive programming) как на клиенте (тот же ReactJS, Bacon, ClosureScript, Kefir, так и на сервере (Reactive Extensions или Rx).То есть вариант нр 2 ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2015, 11:40 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Cheerful CalfskyANAпропущено... посмотреть в сторону FRP (functional reactive programming) как на клиенте (тот же ReactJS, Bacon, ClosureScript, Kefir, так и на сервере (Reactive Extensions или Rx).То есть вариант нр 2 ?где у Вас в варианте номер 2 FRP? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2015, 12:04 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
skyANACheerful Calfпропущено... То есть вариант нр 2 ?где у Вас в варианте номер 2 FRP?A разве весь его смысл не в асинхронности и наблюдателе? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2015, 12:43 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Cheerful CalfskyANAпропущено... где у Вас в варианте номер 2 FRP?A разве весь его смысл не в асинхронности и наблюдателе?не все так просто :) смысл в другом подходе к обработке событий изменения модели, а наблюдатель и наблюдаемый - это базовые интерфейсы реализации ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2015, 13:00 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Cheerful Calfюзерстори это должно быть как огромный вордовский документ почему не вкладки\окна или ещё что? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2015, 11:06 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Petro123Cheerful Calfюзерстори это должно быть как огромный вордовский документ почему не вкладки\окна или ещё что?Когда нужен оверолл - скроллить удобнее/привычнее/эффективнее (особенно, когда 20 лет работаешь только с вордом/екселем). ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2015, 08:28 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
и никто ведь не запрещает теже вкладки расположить вертикально и при переходе показать фейковый скролл :) но это уже нюансы реализации ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2015, 08:30 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Cheerful CalfКлиент работает через веб с медленным интернетом Это ведь вы написали. Не знаю кому у вас там удобнее работать с простынкой на 10 экранов, но при ленивой загрузке\подгрузке совсем другая архитектура приложения. .... Вы бы не ориентировались при САПР, на работу с вордом и ридерами книг. Елозить колёсиком туда-сюда IMHO авторно это уже нюансы реализации нет. Будете всё переписывать при смене основной парадигмы (всё впихнуть в DOM сразу и потом перестраивать в динамике.) IMHO ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2015, 09:25 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Petro123, И итоговый совет? Нафик обзервабле с МВ, надо делать все лениво? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2015, 15:07 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Cheerful CalfPetro123, И итоговый совет? Понизить сеть в тестовом стенде до 1-2-х мегабит и прописать требования в ТЗ. В архитектуре нет советов "делать всё так-то". Меня удивило желание делать простынь со скроллом как в анкете на новый паспорт. Что это может не взлететь я сказал. Что у вас значит "медленный" я не знаю. авторСистема будет полностью абстрагирована от клиентской части разве в веб бывает по другому? Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2015, 15:15 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Petro123разве в веб бывает по другому?Бывает вебформз. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2015, 15:20 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Cheerful CalfPetro123разве в веб бывает по другому?Бывает вебформз. да. Согласен. ...тут же САПР. Возможно для живости понадобится таки БЛ на клиенте. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2015, 15:22 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
А, только сейчас заметил (просил модератора поменять, но без ответа). Предложение в первом посте "Требуется программа для рассчета инженерных конструкций" должно звучать как "Нужна программа для планирования процесса расчёта инженерных конструкций" (то есть САПРа как такого на этом этапе будет очень мало, это скеорее простыня из датагридов, форм, и процентов 10 интерактив для первичного расчета узлов, да и те не фридровинг). ПС: При выборе архитектуры, меня также значительно волнует на чем сейчас модно писать и чем молодежь увлекается / умеет с прогнозом лет на 5. А то есть уже проекты на скала, чистом js, и том что сейчас вообще никто учить не станет, 2 года сам правлю никого найти не могу, хорошо что сложность хелло ворда. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2015, 16:00 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Cheerful Calf чем молодежь увлекается в Java тренд на уход от "рендеринг от Java" в написание клиента на JS фреймворках. Т.е. JS программирование и вёрстка HTML. "Маятник качнулся в другую сторону". ... |
|||
:
Нравится:
Не нравится:
|
|||
14.07.2015, 16:24 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Можно как .net разработчик свои 5 копеек вставлю: авторПРОТИВ: дублирование моделей в MVC на сервере и VM на клиенте, тестирование клиента проблематичное. Это более чем странное "против". Во-первых вы написали что собрались использовать сервисы WebAPI. Значит на сервере никакого MVC не будет. Он мог бы быть на клиенте в случае использования angular но о нем речи нет. дублирование моделей - это вообще нормально. Тем более если даже на сервере они MVC а на клиенте она MVVM. Самый простой пример - много страниц. Таблица имён игроков и наверху сложный фильтр. Очень сложный, кастомный. У него есть своя MyFilterModel модель, поля которой формируют фильтры для датасорса. Вы ввели новый фильтр, старый отключили, модель поменялась, сделала запрос на сервер получила ответ. Вот уже байндинг из VM сработал между MyFilterModel, ипут-контролом или селектором и датасорсом. Более того, модель может и скореее должна дублироваться не 2 а 4 раза. И это всё 4 разные модели для системы. Первое - это модель в базе данных. Пример - таблица заказов многие ко многим с товарами. По всем правилам БД, целостностью данных и т.д. Второй уровень - это модель в бизнес логике, сущности (из EF например), агрегаты, value objects. Обычно лежи в отдельно сборке DomainModel. Когда у нас из этих 3х таблиц из БД будет 1 сущность заказ с коллекцией товаров. И уже своими уже бизнес правилами, проверками цены, какими-то атрибутами. Третий уровень - должен идти уровень Data Transfer object (DTO, лежит в сборке asp.net приложения в папке Model) и сложные сущности из модели будут приведены автомапером в просыте поля для передачи их как json объектов на клиент. Т.е. связь между результатом метода WebApi и datasource на клиенте Если от это отказаться, то через 1-2 месяца вы столкнётесь с таким количеством коварных проблем как со стороны ORM так и со стороны датасорса тех же Kendo, что не будете знать, что делать. Проходили, а всё потому что подумал что клиента из 2х страниц и 2х таблиц негоже "усложнять". Ага. Ну и четвёртый уровень - клиент (JavaScript) где своя модель и свои правила. Там может быть MVVM реализована с помощью инструментов Kendo (зачем в данном случае knockout - мне не понятно. Он только для байиндинга нужен и всё. Кендо умеет это делать). авторСервисы экспоузятся через Web API OData Это не рекомендую, мало того, что это дерьмо не работает и полностью нормально не поддерживается MS для запросов чуть сложнее чем фильтр, так выпячивание логики запросов с конвертацией её автоматически в экспрешен и далее в ORM сделаем вам просто очень большую поболь при малейшей кастомизации. Ну и да, одата реализованная Майкрософтом не полностью и сильно не полностью поддерживает одату 4. По крайне мере ещё пол года назад было так. Выигрыша никакого она не даёт по сравнению с подходом "веб-сервисы и вся логика через репозитории в бд". WCF больше не поддерживается MS не стоит его брать, если это простые HTTP сервисы. авторподдержка IE9 обязательна. Слышал, что некоторые современные UI Фреймворки ограничивают поддержку этого браузера. Пора людям уже прекратить потакать в их желании использовать ишака. Что касается тестирования, то это как бы не зависит вообще. Сервер как всегда юнит и интеграционные тесты. Там главное SOLID принципы блюсти и про DI не забывать везде и повсюду, тогда тесты будут писаться на ура. А для тестирования UI нужно либо много рук, либо брать всё тот же Фреймворк и UI тесты (юнит и интеграционные с селениумом) фигарить. Тут риск правда появляется: если разрабы не писали тесты и не очень умеют это делать, то появляется соблазн бросить их писать и в итоге бросят писать, а ещё же есть IE 9, 10 и теперь уже 11(или 12?) + по 2 версии других браузеров.... лихо, ой лихо. Короче закопаться можно без тестов. Нужно сперва UI тестирование осваивать. Я бы выбрал Asp.net webApi + KendoUI + angular\backbone, если нужно писать SPA или если это не SPA а все больше таблички показать и отредактировать, то без ангуляра. Коллега писал на кендо + ангуляре. Кастомизации там было немало. ну и только одни джуны с этим всем не справятся. Нужен ментор, который в этом всё варился сам. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2015, 17:11 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
v_enomЯ бы выбрал Asp.net webApi + KendoUI + angular\backbone, если нужно писать SPA или если это не SPA а все больше таблички показать и отредактировать, то без ангуляра. Коллега писал на кендо + ангуляре. Кастомизации там было немало. ну и только одни джуны с этим всем не справятся. Нужен ментор, который в этом всё варился сам. извините что вклиниваюсь в тему, но вы не могли бы более подробно описать как это будет работать... то есть Asp.net webApi как я понимаю это REST-сервис, а где будут крутится само приложение? или само веб-приложение как-раз и пишется посредством KendoUI + angular\backbone? а почему не использовать для web-приложения ASP.NET MVC? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 12:57 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
плюс хотел спросить почему перестала поддерживать WCF? а что в замен? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 13:06 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
mikola1982плюс хотел спросить почему перестала поддерживать WCF? а что в замен? Потому что "гладиолус" Взамен MVC :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 14:19 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
mad_nazgulmikola1982плюс хотел спросить почему перестала поддерживать WCF? а что в замен? Потому что "гладиолус" Взамен MVC :-) ну да какой вопрос такой ответ.... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 14:21 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
mikola1982v_enomЯ бы выбрал Asp.net webApi + KendoUI + angular\backbone, если нужно писать SPA или если это не SPA а все больше таблички показать и отредактировать, то без ангуляра. Коллега писал на кендо + ангуляре. Кастомизации там было немало. ну и только одни джуны с этим всем не справятся. Нужен ментор, который в этом всё варился сам. извините что вклиниваюсь в тему, но вы не могли бы более подробно описать как это будет работать... то есть Asp.net webApi как я понимаю это REST-сервис, а где будут крутится само приложение? или само веб-приложение как-раз и пишется посредством KendoUI + angular\backbone? а почему не использовать для web-приложения ASP.NET MVC? Простите, но вопрос немного ставит в тупик. Я так понимаю, вы не с MVC ни с WebApi не работали? ASp.net MVC это бекенд (контролы) + фронтенд из шаблонов (view и подели), генерируемый на сервере можно игнорировать View-часть из ASP.net MVC и писать только контроллеры как REST сервисы, гонять ввиде json модель (DTO объекты). Но для всего этого есть уже реализованный новый тип проектов - WebAPI - те же REST контроллеры, та же модель, возвращаемая как json. Просто уже приготовленно всё - webApi приготовлен для ajax запросов с UI Можно делать так: Asp.net MVC + KendoUI ( кстати, можно как javascript вресию так и asp.net mvc версию, я брал JS). Получится, что загружаются странички, а на них контролы (гриды, фильтры). Думаю, для новичков это лучший вариант. Ибо MVC контроллеры в WebAPI контроллеры переделываются очень легко. Можно так: Asp.net WebAPI (сервисы) + JS проект (Kendo UI js версия или angular версия). Шаблонами будут уже не Asp.net MVC вьюхи, а HTML страницы\куски. Тут уже зависит от того, на чем клиента писать. Есть это ангуляр, то у него свой шаблонизатор и работа с html и переключение вью авторто есть Asp.net webApi как я понимаю это REST-сервис, а где будут крутится само приложение? Немного трудно понять, где для вас заканчивается "само приложение". SPA приложение состоит из 2х частей: клиентской(html + javascript) и серверной (C#, webapi). Серверная часть это сервисы WebAPI, она отдаёт json на клиент. Какая-то часть обрабатывается на клиенте, какая-то на сервере уже зависит от логики. авторили само веб-приложение как-раз и пишется посредством KendoUI + angular\backbone? возможно ответ на этот ваш вопрос "Да", если под самим приложением вы понимаете контролы, таблицы, окошки. Но это неправильное понимание приложения и концепции веб-разработки в принципе, Клиент не отделим от сервера с т.з. бизнеса. автора почему не использовать для web-приложения ASP.NET MVC Да пожалуйста. Для новичков это было бы проще даже, меньше с JS войны. Если есть отдельный спец по Javascript - проще asp.net webAPI писать вместо WCF будут WebAPI для REST сервисов. WCF нужны скорее для работе по SOAP или даже бинарных данных а также очень тонкой настройки. WebAPI упрощены, что вполне удобно. Просто WCF больше пока не будут поддерживаться. Хз что там и почему, но инфа ещё с того года. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2015, 19:19 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
Большое спасибо за ответы, ждал вашего сообщения с нетерпением. все более менее становится понятно. давно работал с asp.nat mvc плюс на jquery (тогда это все только начиналось), потом очень долгое время занимался другим... а сейчас вот снова встала задача, залез посмотреть что изменилось, а изменилось очень многое. под приложением я понимал клиентскую часть. запутался из-за определения WEBapi. сейчас все встало на свои места. не совсем понял, кто будет отдавать первую страничку, то есть когда пользователь нажимает на ссылку... запрос уходит на какой сервер (имеется ввиду программная реализация). ведь пользователю кто-то должен вернуть страничку с которой уже браузер получит JS, который сможет слать запросы WEBApi. Кто отправляет первую страничку? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 06:15 |
|
На чем писать клиента?
|
|||
---|---|---|---|
#18+
v_enomИбо MVC контроллеры в WebAPI контроллеры переделываются очень легко.A если там ооочень много акшинов которые ретурнят MVC партиал вьювсы (скажем 30 на 4 джейсона и 1 фулвью)? Имхо апи/неапи - должно решаться на стадии проектирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.08.2015, 09:43 |
|
|
start [/forum/topic.php?fid=33&msg=39007082&tid=1547442]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
160ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 19ms |
total: | 284ms |
0 / 0 |