powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помощь в сравнении LLBLGen и BLToolKit
21 сообщений из 21, страница 1 из 1
Помощь в сравнении LLBLGen и BLToolKit
    #35314080
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

Недавно сменил работу и тем самым вынужден адаптироваться на новом месте. До этого в программировании бизнес слоя приложения я всегда использовал BLToolKit.NET, я предпочитаю работать с хранимыми процедурами и для меня этот фреймворк просто идеальная вещь, он очень "лёгкий" и прозрачный, так же очень удобен для проведения унитарных тестов. Но на моей новой работе разработчики используют LLBLGen, я немного ознакомился с данным инструментом разработки бизнес уровня приложения, и могу сказать что мне он не очень понравился. Во первых LLBLGen не работает с объектами на лету как BLToolKit, он генерирует уровень доступа DAL и уровень управления данными. Далее LLBLGen поддерживает хранимые процедуры но результатом запуска ХП может быть или DataTable или DataSet, а не типизированный список как в BLToolKit.

Преведенных мной аргументов недостаточно для того что бы не использовать LLBLGen в моих проектах. Не могли бы знающие люди мне помочь сравнить эти два инструментария, выделив при этом их сильные и слабые стороны. А так же поделится своим мнением по поводу вышеуказанных фреймворков. Я понимаю что это не так легко сравнить эти две вещи. И каково ваше лично предпочтение. Заранее вам благодарен за помощь.


--
С уважением
Виктор Бартель
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35314286
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Личные предпочтения,врядли, помогут изменить корпоративные стандарты.
Приходишь в контору, дают лопату, берешь копаешь.Сначала тошнит, но потом привыкаешь и вырабатывается иммунитет
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35314327
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:) Да в чем то я с вами согласен.
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35314353
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LLBLGen, по аналогичному опыту работы на новом месте, -- это форменный ахтунг. Я слабо себе представляю даже, как его можно использовать.

Дальше, возможно, будет некая доля субъективизма, но от нее никуда не деться.

Во-первых, сама идея автоматической генерации классов "мне странна". Если с этим смириться, то на сцену выходит дизайнер. Он какой-то очень замороченный: поднимает все метаданные из БД и генерирует тучу кода по поводу загрузки объектов через все relation'ы подряд. Все это нафиг никому не нужно, а код засоряется.

Более того, код засоряется перегрузками вида GetCustomers_(), GetCustomers__(), GetCustomers___() и т.д.

Совершенно невменяемая работа с фильтрами: ручная возня с IPredicate и прочими IExpression как-то не впечатляет.

Так и не удалось нормально научить его работать с table-per-hierarchy реализацией наследования.

Полиморфные запросы не работают.

Ленивая загрузка если и работает, то очень странно.

Список можно продолжать, но только как дискуссию а-ля "а как там-то и сям-то делается такая вот вещь".

Однако же если LLBLGen уже используют, то заставить от него отказаться будет очень и очень непросто.
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35315394
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч
Во-первых, сама идея автоматической генерации классов "мне странна".

почему?


Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35315572
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч
Во-первых, сама идея автоматической генерации классов "мне странна". Если с этим смириться, то на сцену выходит дизайнер. Он какой-то очень замороченный: поднимает все метаданные из БД и генерирует тучу кода по поводу загрузки объектов через все relation'ы подряд. Все это нафиг никому не нужно, а код засоряется.
.....
Однако же если LLBLGen уже используют, то заставить от него отказаться будет очень и очень непросто.

Я с вами согласен, мне тоже принцип генерации классов из источника данных не нравится, и если я не ошибаюсь LLBLGen генерирует не простые объекты а классы производные от типизированных датасетов, первый ахтуг.

Так же с вами согласен что загрузка объектов через связи мало востребована.

По третьему пункту может быть есть небольшая возможность, т.к. Я попал в период реструктуризации департамента разработки ПО, народ сваливает и новые люди приходят. Но что бы гнуть мою линию мне нужны неоспоримые доводы для начальства, именно по-этому я и обратился за помощью на данный форум.
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35316124
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Saпочему?
Потому что генератор, если он будет простой, то не сможет справиться с моими задумками. Я, например, не хочу иметь класс, один к одному дублирующий структуру таблицы; какие-то поля мне не нужны, а какие-то я хочу агрегировать в отдельный класс. Плюс еще хочу заполучить иерархию классов в какой-нибудь замороченной структуре.

А тот генератор, который с этим всем справится, уже не будет простым либо никогда не будет написан, либо будет таким сложным, что я быстрее врукопашную все напишу, чем разберусь в нем.

К тому же (камень в город LLBLGen'а) его *.lgp файлы бинарные, так что ни о какой коллективной работе речи не идет.
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35316127
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor BartelПо третьему пункту может быть есть небольшая возможность, т.к. Я попал в период реструктуризации департамента разработки ПО, народ сваливает и новые люди приходят. Но что бы гнуть мою линию мне нужны неоспоримые доводы для начальства, именно по-этому я и обратился за помощью на данный форум.
Ну покажите им, как одна и та же задача решается средствами BLT и LLBLGen'а.
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35316290
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Нахлобуч:
- предикаты пишутся спокойно без интерфейсов и без ручной возни, см. раздел предикаты для .net 2.0
- кроме того чтобы писать класс руками, ещё быстрее будет дописать то что тебе нагенерит llblgen, чудое он не затрет.
- не нравится куча непонятного кода, можно выбрать DataAdapter :)
- куча методов с подчеркиваниями - потому что либо дофига одинаковых имен у тебя в базе, либо надо отключать все ненужное. Пол часа возни в дизайнере, зато потом все чисто и аккуратно до конца жизни.
- ленивая загрузка у меня никогда не работала странно. В чем странность у тебя?
- в релейшенах есть смысл, поймешь когда надо будет делать сложную фильтрацию. Конечно это не так красиво как в том же dlinq, например, но они обещают порт под dlinq (если уже не сделали), так что можно будет писать коротко и читаемо.
- из хранимых процедур можно вернуть не только датасет или дататаблицу, но и объект. Смотри шейпинг.
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35316439
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы2Нахлобуч:
- предикаты пишутся спокойно без интерфейсов и без ручной возни, см. раздел предикаты для .net 2.0

Кроме этого ужаса:
Код: plaintext
1.
2.
3.
4.
5.
6.
RelationPredicateBucket B = new RelationPredicateBucket();
IPredicateExpression A = new PredicateExpression();
A.Add(Table1Fields.Foo == "One");
A.AddWithAnd(Table1Fields.Bar == "Two");
B.PredicateExpression.Add(A);
B.PredicateExpression.AddWithOr(Table2Fields.Bar2 == "Three");
ничего не нашел. Покажешь, куда смотреть?
зы
- кроме того чтобы писать класс руками, ещё быстрее будет дописать то что тебе нагенерит llblgen, чудое он не затрет.
Писать где? Править шаблоны, что ли? Так егойный шаблон не является валидным исходником на C#, что автоматически отменяет всякие интеллисенсы и решарперы. Я так писать не намерен. partial-классы, если только.
зы
- не нравится куча непонятного кода, можно выбрать DataAdapter :)
Это который противоположность SelfServicing?
зы
- куча методов с подчеркиваниями - потому что либо дофига одинаковых имен у тебя в базе, либо надо отключать все ненужное. Пол часа возни в дизайнере, зато потом все чисто и аккуратно до конца жизни.
См. скрин. Захватывающе, не правда ли?
зы
- ленивая загрузка у меня никогда не работала странно. В чем странность у тебя?
Нервов не хватило разобраться с той ромашкой разобраться, что она мне устраивала. "Буду работать - не буду работать - может быть, не буду".
зы
- в релейшенах есть смысл, поймешь когда надо будет делать сложную фильтрацию. Конечно это не так красиво как в том же dlinq, например, но они обещают порт под dlinq (если уже не сделали), так что можно будет писать коротко и читаемо.
AFAIK, ничего такого не сделано еще. К тому же, еще не все на 3.0+ перешли.
зы
- из хранимых процедур можно вернуть не только датасет или дататаблицу, но и объект. Смотри шейпинг.
Это все очень приятно, но на общем фоне как-то бледненько.
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35316498
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Нахлобуч:
влом цитировать, так что просто по-порядку

1) collection.GetMulti((TableFields.Foo == "a" & TableFields.Bar==1) | Table2Fields.Foo="b"), вообще-то все написано в хелпе :)
2) открой сгенеренный файл, найдешь секцию че-то вроде # custom code here. Читай хелп, раздел как расширять класс своим кодом. Вопросы спрашиваешь, как будто твои способности к познанию выше старого доброго RTFM :)
3) да
4) хотелось бы увидеть скриншот диаграммы этой части таблиц, думаю все будет понятней. В любом случае show/hide members/relations рулит
5) не аргумент :) ни разу не сбоила
6) ..
7) ну а что делать, все не без грехов :)
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35316563
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
1) collection.GetMulti((TableFields.Foo == "a" & TableFields.Bar==1) | Table2Fields.Foo="b"), вообще-то все написано в хелпе :)
SelfServicing фтопку. А вот то, что ты написал -- это жесткий хардкод. В рантайме такое не соберешь.
зы
2) открой сгенеренный файл, найдешь секцию че-то вроде # custom code here. Читай хелп, раздел как расширять класс своим кодом.
Начитал три варианта, из которых приемлемый только partial classes.
зы
4) хотелось бы увидеть скриншот диаграммы этой части таблиц, думаю все будет понятней. В любом случае show/hide members/relations рулит
Это сущность "Валюта", на которую завязана куча таблиц.
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35316974
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч
SelfServicing фтопку. А вот то, что ты написал -- это жесткий хардкод. В рантайме такое не соберешь.

вообще-то ты тоже написал жесткий хардкод :) чтобы собирать в рантайме, всегда нужно поднапрячься, с любыми средствами. Кстати никто не мешает писать что-то типа predicate = predicate | another predicate.


Это сущность "Валюта", на которую завязана куча таблиц.
скорее всего оно нашло кучу сквозных связей одних таблиц с другими через цену, спрячь их всех или при добавлении сними галку "automatically add m:n relations"
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35317093
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы
- из хранимых процедур можно вернуть не только датасет или дататаблицу, но и объект. Смотри шейпинг.

Вообще то это не у них называется LLBLGen Pro v2's projection approach Но должен вам сказать что данная реализация уродлива, зачем еще в добавок определять тип каждого свойства, LLBLGen не может сделать этого на лету? Получается дофига кода набивать, сначала определяем кастом класс и потом при каждом вызове ХП когда нам нужен результат в виде нашего CustomObject, нужно переписывать уйму кода, бред.

Нахлобуч
Ну покажите им, как одна и та же задача решается средствами BLT и LLBLGen'а.

Я думаю что именно это и сделаю, хорошо подготовившись.

А еще по поводу перформанс, есть ли у LLBLGen встроенные механизмы кэширования? Поскольку базовые сущности являются производными от типизированных DS, мне кажется очень даже жирно работать так в проектах нацеленных на быстроту функционирования.
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35317234
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor Bartelзачем еще в добавок определять тип каждого свойства, LLBLGen не может сделать этого на лету?

можешь не указывать, читай хелп
Viktor Bartel
Получается дофига кода набивать, сначала определяем кастом класс и потом при каждом вызове ХП когда нам нужен результат в виде нашего CustomObject, нужно переписывать уйму кода, бред.

мм не понял проблему, а один раз написать никак?
Viktor Bartel
А еще по поводу перформанс, есть ли у LLBLGen встроенные механизмы кэширования?

нет конечно, это simple orm, особенно в self-servicing сценарии, где каждая сущность несет в себе логику работы с базой, такое вообще не реализуемо.

Поскольку базовые сущности являются производными от типизированных DS

сам только что придумал? какие ещё типизированные датасеты?

мне кажется очень даже жирно работать так в проектах нацеленных на быстроту функционирования.
тем не менее работает и достаточно шустро
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35318181
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак вроде бы все разрешилось, я представил тех директору BLToolKit, презентация прошла неплохо, с одним большим "Но". BLToolKit оперирует классами определёнными пользователями, а это значит что зачастую эти классы надо писать в рукопашную, и на это типа уходит много времени. Так вот если бы я смог найти генератор простых классов(с таблиц и видов) из источника данных то это было бы шикарно(хотя я вовсе не должен его использовать). Это наверное не относится к данной теме, но может быть вы знаете какой-нибудь продукт способный делать это?

--
С уважением
Виктор Бартель
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35318239
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Viktor Bartel
Так вот если бы я смог найти генератор простых классов(с таблиц и видов) из источника данных то это было бы шикарно(хотя я вовсе не должен его использовать). Это наверное не относится к данной теме, но может быть вы знаете какой-нибудь продукт способный делать это?

MyGeneration способен сделать это

Код: plaintext
 uid  =  S a

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35320328
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa
MyGeneration способен сделать это

Код: plaintext
 uid  =  S a
Posted via ActualForum NNTP Server 1.4

Благодарю вас за совет, MyGeneration впринципе подходит, только остается написать коррекнтый генератор для бизнесс модели BLToolKit.
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35330051
bltoolkit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Viktor Bartel[quot Sa]
Благодарю вас за совет, MyGeneration впринципе подходит, только остается написать коррекнтый генератор для бизнесс модели BLToolKit.

http://www.mygenerationsoftware.com/TemplateLibrary/Template/?id=a1e54825-1926-43aa-8b1f-1addbab63b30
...
Рейтинг: 0 / 0
Помощь в сравнении LLBLGen и BLToolKit
    #35331832
Фотография Viktor Bartel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bltoolkit
http://www.mygenerationsoftware.com/TemplateLibrary/Template/?id=a1e54825-1926-43aa-8b1f-1addbab63b30

Спасибо, я уже видел этот плагин, он в принципе подходит нам ну если что можно адаптировать под нужды предприятия :).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Помощь в сравнении LLBLGen и BLToolKit
    #36571367
TJivich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помощь в сравнении LLBLGen и BLToolKit
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]