Pull to refresh
22
0
Анатолий Крыжановский @CapitanBlood

программист

Send message

Наконец-то смог выкроить время и позвастатьмя полученныи от дедушки подарком. К сожалению еще не опробовали, но на праздниках обязательно дойдем! Спасибо, дедушка!

не, вроде нет)
жена вынесла вердикт — мыло!
где-то слышал, что мыло оказывает слабительный эффект…
т.е. либо будет вкусно, либо прочистка организма перед новым годом… так сказать, в новый год с чистой душой)
довезли олени посылку от моего Деда Мороза:
image

осталось понять, что это такое )) панет корицей и чем-то сладким. пока склоняюсь к варианту — мыло.
это очень интеретсно — проводить онлайн тренинги с привязкой к физическим городам… я конечно понимаю, что это связщано с интересами компании (видимо там у них есть офисы), но все же
а для чего мы вообще вводим абстракции, разбиваем приложение на слои?
ну и еще в качестве примера одна плюшка — в одном приложении у нас использовалась nosql (mongo) и sql (psql) субд. Было приятно писать код в едином стиле
1) это справедливо для базового понятия спецификации, но, как я рассказывал в статье, мы хотели получить расширенные правила, которые не ограничивались бы фильтрами
2) если остановиться на iqueryable, то возвращаемся к проблеме, о которой я уже не однократно упоминал и в статье и в комментариях (возможно, она специфична для конкретного проекта/решения) — предположим, у вас домен пошарен между бэкенд частью веб приложения и богатым мобильным приложением. на бэке вы используете полновесную орм, а на мобилке у вас просто in memory хранилище. что бы на основе iqueryable использовать правила, включающие в себя оптимизации для загрузки придется сослаться на сборки орм, которых на мобильной платформе может не оказаться. поэтому и появляется этот слой абстракции…
кроме того, иногда linq не хватает. в практике был пример, когда спецификации пришлось переписать на использование icriteria. но благодаря этому слою не пришлось перелапачивать весь код приложения, а все правки остались в слое доступа.

p.s. код лучше было оформить в виде ссылки на codebin или что-то вроде того
ага, более-менее понял.
ну по сути да, спецификация — изначально это как раз что-то похожее на фильтры.
Мы определяем объекты, которые соотвествуют нашим бизнес правилам, можем в последующем их объединять в более сложные правила.
зачем нужен еще один слой абстракции — я писал в статье и в комменатриях — что бы отделить уровень домена от конкретной реализации orm. в конечном счете (по крайне мере сейчас) внутри executor'a все опирается на linq, который через провайдер для orm и строит запросы, отвечая за все alias'ы и т.д
1) вы меня не совсем поняли. предположим, я хочу использовать Fetch (Include в ef.core). Что бы использовтаь его с LinqSpec (если это вообще возможно, я не уверен) — мне придется сослаться на библиотеку orm из слоя домена.
2) операторы склейки — это удобно, не спорю, только, все таки через & и |. Но судя по коду библиотеки (который на самом деле очень простой, как вы и отметили) склеить правила, которые включают в себя сортировку не получится.

я не в коем случае не говорю о том, что мое решение — серебрянная пуля. одной из целей, которую я преследовал, написав эту статью и опубликовав исходники — получить фидбек, что бы понять, «а не фигню ли я делаю» (с).

определенно, из LinqSpec есть что почерпунть!
пока не понял о чем речь, можно пример для любой orm,
Это отличный проект, поддерживающий много фич, которые мне нравятся, и которые я пока не реализовал (сериализация и сравнения — две первоочередные). Но в тоже время есть несколько НО:
1) для того, что бы использовать фичи ORM, придется добавить референс на соотвествующую сборку из слоя домена. что не всегда возможно, если у вас домен пошарен между несколькими проектами, под разные платформы
2) возможно я ошибаюсь, но она поддерживает только склейку условий, состоящих из условий фильтрации(where), в моей реализации есть возможнолсть склейки произвольных правил, соотвественно я могу определить, к примеру, правило на фильтрацию и правило для пагинации, а потмо получить правило на пагинацию и фильтарцию
хотелось бы более развернутого комменатрия. Причем тут FSM?

Несовсем понял ваш комментарий. Подход и библиотека не о генерации запросов на лету (в конечном счете все опирается на iqueryable), а про то как можно их огранизовать в коде

использование системы контроля версий в качестве механизма синхронизации… честно говоря, о таком варианте использования я даже не подумал…
да, player бесплатный, а вот про то что можно сконверить из virtual box'а я не подумал… надо поробовать, спасибо!
да, но вопрос в лицензии… можно конечно пробную версию использовать, но иногда 30 дней может и не хватить, поэтому если есть выбор между покупкой полной версией и установкой реальной ОС (при условии, что это возможно), мы выбрали реальную ОС… хотя ради эксперимента можно попробовать поднять все тоже на vm ware, что бы посмотреть будут ли там проблемы
пробуйте, будут проблемы — пишите, поробуем совместно решить… ну и в остальных частях будет материал по использованию того, что здесь наставили.
в целом неплохая идея, но это конечно в рамки одной статьи не влезет, но, если это будет интересно можно подумать и над таким материалом.
заюзал утилиту — вроде все работает, кроме случая, если в пути к папкам встречаются пробелы…

Information

Rating
Does not participate
Location
Волгоград, Волгоградская обл., Россия
Date of birth
Registered
Activity