|
|
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Добрый день, Недавно сменил работу и тем самым вынужден адаптироваться на новом месте. До этого в программировании бизнес слоя приложения я всегда использовал BLToolKit.NET, я предпочитаю работать с хранимыми процедурами и для меня этот фреймворк просто идеальная вещь, он очень "лёгкий" и прозрачный, так же очень удобен для проведения унитарных тестов. Но на моей новой работе разработчики используют LLBLGen, я немного ознакомился с данным инструментом разработки бизнес уровня приложения, и могу сказать что мне он не очень понравился. Во первых LLBLGen не работает с объектами на лету как BLToolKit, он генерирует уровень доступа DAL и уровень управления данными. Далее LLBLGen поддерживает хранимые процедуры но результатом запуска ХП может быть или DataTable или DataSet, а не типизированный список как в BLToolKit. Преведенных мной аргументов недостаточно для того что бы не использовать LLBLGen в моих проектах. Не могли бы знающие люди мне помочь сравнить эти два инструментария, выделив при этом их сильные и слабые стороны. А так же поделится своим мнением по поводу вышеуказанных фреймворков. Я понимаю что это не так легко сравнить эти две вещи. И каково ваше лично предпочтение. Заранее вам благодарен за помощь. -- С уважением Виктор Бартель ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2008, 12:22 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Личные предпочтения,врядли, помогут изменить корпоративные стандарты. Приходишь в контору, дают лопату, берешь копаешь.Сначала тошнит, но потом привыкаешь и вырабатывается иммунитет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2008, 13:09 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
:) Да в чем то я с вами согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2008, 13:17 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
LLBLGen, по аналогичному опыту работы на новом месте, -- это форменный ахтунг. Я слабо себе представляю даже, как его можно использовать. Дальше, возможно, будет некая доля субъективизма, но от нее никуда не деться. Во-первых, сама идея автоматической генерации классов "мне странна". Если с этим смириться, то на сцену выходит дизайнер. Он какой-то очень замороченный: поднимает все метаданные из БД и генерирует тучу кода по поводу загрузки объектов через все relation'ы подряд. Все это нафиг никому не нужно, а код засоряется. Более того, код засоряется перегрузками вида GetCustomers_(), GetCustomers__(), GetCustomers___() и т.д. Совершенно невменяемая работа с фильтрами: ручная возня с IPredicate и прочими IExpression как-то не впечатляет. Так и не удалось нормально научить его работать с table-per-hierarchy реализацией наследования. Полиморфные запросы не работают. Ленивая загрузка если и работает, то очень странно. Список можно продолжать, но только как дискуссию а-ля "а как там-то и сям-то делается такая вот вещь". Однако же если LLBLGen уже используют, то заставить от него отказаться будет очень и очень непросто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2008, 13:24 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Нахлобуч Во-первых, сама идея автоматической генерации классов "мне странна". почему? Код: plaintext Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2008, 18:18 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Нахлобуч Во-первых, сама идея автоматической генерации классов "мне странна". Если с этим смириться, то на сцену выходит дизайнер. Он какой-то очень замороченный: поднимает все метаданные из БД и генерирует тучу кода по поводу загрузки объектов через все relation'ы подряд. Все это нафиг никому не нужно, а код засоряется. ..... Однако же если LLBLGen уже используют, то заставить от него отказаться будет очень и очень непросто. Я с вами согласен, мне тоже принцип генерации классов из источника данных не нравится, и если я не ошибаюсь LLBLGen генерирует не простые объекты а классы производные от типизированных датасетов, первый ахтуг. Так же с вами согласен что загрузка объектов через связи мало востребована. По третьему пункту может быть есть небольшая возможность, т.к. Я попал в период реструктуризации департамента разработки ПО, народ сваливает и новые люди приходят. Но что бы гнуть мою линию мне нужны неоспоримые доводы для начальства, именно по-этому я и обратился за помощью на данный форум. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2008, 19:46 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Saпочему? Потому что генератор, если он будет простой, то не сможет справиться с моими задумками. Я, например, не хочу иметь класс, один к одному дублирующий структуру таблицы; какие-то поля мне не нужны, а какие-то я хочу агрегировать в отдельный класс. Плюс еще хочу заполучить иерархию классов в какой-нибудь замороченной структуре. А тот генератор, который с этим всем справится, уже не будет простым либо никогда не будет написан, либо будет таким сложным, что я быстрее врукопашную все напишу, чем разберусь в нем. К тому же (камень в город LLBLGen'а) его *.lgp файлы бинарные, так что ни о какой коллективной работе речи не идет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2008, 10:11 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Viktor BartelПо третьему пункту может быть есть небольшая возможность, т.к. Я попал в период реструктуризации департамента разработки ПО, народ сваливает и новые люди приходят. Но что бы гнуть мою линию мне нужны неоспоримые доводы для начальства, именно по-этому я и обратился за помощью на данный форум. Ну покажите им, как одна и та же задача решается средствами BLT и LLBLGen'а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2008, 10:11 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
2Нахлобуч: - предикаты пишутся спокойно без интерфейсов и без ручной возни, см. раздел предикаты для .net 2.0 - кроме того чтобы писать класс руками, ещё быстрее будет дописать то что тебе нагенерит llblgen, чудое он не затрет. - не нравится куча непонятного кода, можно выбрать DataAdapter :) - куча методов с подчеркиваниями - потому что либо дофига одинаковых имен у тебя в базе, либо надо отключать все ненужное. Пол часа возни в дизайнере, зато потом все чисто и аккуратно до конца жизни. - ленивая загрузка у меня никогда не работала странно. В чем странность у тебя? - в релейшенах есть смысл, поймешь когда надо будет делать сложную фильтрацию. Конечно это не так красиво как в том же dlinq, например, но они обещают порт под dlinq (если уже не сделали), так что можно будет писать коротко и читаемо. - из хранимых процедур можно вернуть не только датасет или дататаблицу, но и объект. Смотри шейпинг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2008, 10:55 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
зы2Нахлобуч: - предикаты пишутся спокойно без интерфейсов и без ручной возни, см. раздел предикаты для .net 2.0 Кроме этого ужаса: Код: plaintext 1. 2. 3. 4. 5. 6. зы - кроме того чтобы писать класс руками, ещё быстрее будет дописать то что тебе нагенерит llblgen, чудое он не затрет. Писать где? Править шаблоны, что ли? Так егойный шаблон не является валидным исходником на C#, что автоматически отменяет всякие интеллисенсы и решарперы. Я так писать не намерен. partial-классы, если только. зы - не нравится куча непонятного кода, можно выбрать DataAdapter :) Это который противоположность SelfServicing? зы - куча методов с подчеркиваниями - потому что либо дофига одинаковых имен у тебя в базе, либо надо отключать все ненужное. Пол часа возни в дизайнере, зато потом все чисто и аккуратно до конца жизни. См. скрин. Захватывающе, не правда ли? зы - ленивая загрузка у меня никогда не работала странно. В чем странность у тебя? Нервов не хватило разобраться с той ромашкой разобраться, что она мне устраивала. "Буду работать - не буду работать - может быть, не буду". зы - в релейшенах есть смысл, поймешь когда надо будет делать сложную фильтрацию. Конечно это не так красиво как в том же dlinq, например, но они обещают порт под dlinq (если уже не сделали), так что можно будет писать коротко и читаемо. AFAIK, ничего такого не сделано еще. К тому же, еще не все на 3.0+ перешли. зы - из хранимых процедур можно вернуть не только датасет или дататаблицу, но и объект. Смотри шейпинг. Это все очень приятно, но на общем фоне как-то бледненько. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2008, 11:31 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
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) ну а что делать, все не без грехов :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2008, 11:43 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
зы 1) collection.GetMulti((TableFields.Foo == "a" & TableFields.Bar==1) | Table2Fields.Foo="b"), вообще-то все написано в хелпе :) SelfServicing фтопку. А вот то, что ты написал -- это жесткий хардкод. В рантайме такое не соберешь. зы 2) открой сгенеренный файл, найдешь секцию че-то вроде # custom code here. Читай хелп, раздел как расширять класс своим кодом. Начитал три варианта, из которых приемлемый только partial classes. зы 4) хотелось бы увидеть скриншот диаграммы этой части таблиц, думаю все будет понятней. В любом случае show/hide members/relations рулит Это сущность "Валюта", на которую завязана куча таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2008, 11:56 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Нахлобуч SelfServicing фтопку. А вот то, что ты написал -- это жесткий хардкод. В рантайме такое не соберешь. вообще-то ты тоже написал жесткий хардкод :) чтобы собирать в рантайме, всегда нужно поднапрячься, с любыми средствами. Кстати никто не мешает писать что-то типа predicate = predicate | another predicate. Это сущность "Валюта", на которую завязана куча таблиц. скорее всего оно нашло кучу сквозных связей одних таблиц с другими через цену, спрячь их всех или при добавлении сними галку "automatically add m:n relations" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2008, 13:25 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
зы - из хранимых процедур можно вернуть не только датасет или дататаблицу, но и объект. Смотри шейпинг. Вообще то это не у них называется LLBLGen Pro v2's projection approach Но должен вам сказать что данная реализация уродлива, зачем еще в добавок определять тип каждого свойства, LLBLGen не может сделать этого на лету? Получается дофига кода набивать, сначала определяем кастом класс и потом при каждом вызове ХП когда нам нужен результат в виде нашего CustomObject, нужно переписывать уйму кода, бред. Нахлобуч Ну покажите им, как одна и та же задача решается средствами BLT и LLBLGen'а. Я думаю что именно это и сделаю, хорошо подготовившись. А еще по поводу перформанс, есть ли у LLBLGen встроенные механизмы кэширования? Поскольку базовые сущности являются производными от типизированных DS, мне кажется очень даже жирно работать так в проектах нацеленных на быстроту функционирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2008, 13:51 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Viktor Bartelзачем еще в добавок определять тип каждого свойства, LLBLGen не может сделать этого на лету? можешь не указывать, читай хелп Viktor Bartel Получается дофига кода набивать, сначала определяем кастом класс и потом при каждом вызове ХП когда нам нужен результат в виде нашего CustomObject, нужно переписывать уйму кода, бред. мм не понял проблему, а один раз написать никак? Viktor Bartel А еще по поводу перформанс, есть ли у LLBLGen встроенные механизмы кэширования? нет конечно, это simple orm, особенно в self-servicing сценарии, где каждая сущность несет в себе логику работы с базой, такое вообще не реализуемо. Поскольку базовые сущности являются производными от типизированных DS сам только что придумал? какие ещё типизированные датасеты? мне кажется очень даже жирно работать так в проектах нацеленных на быстроту функционирования. тем не менее работает и достаточно шустро ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2008, 14:28 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Итак вроде бы все разрешилось, я представил тех директору BLToolKit, презентация прошла неплохо, с одним большим "Но". BLToolKit оперирует классами определёнными пользователями, а это значит что зачастую эти классы надо писать в рукопашную, и на это типа уходит много времени. Так вот если бы я смог найти генератор простых классов(с таблиц и видов) из источника данных то это было бы шикарно(хотя я вовсе не должен его использовать). Это наверное не относится к данной теме, но может быть вы знаете какой-нибудь продукт способный делать это? -- С уважением Виктор Бартель ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2008, 18:56 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Viktor Bartel Так вот если бы я смог найти генератор простых классов(с таблиц и видов) из источника данных то это было бы шикарно(хотя я вовсе не должен его использовать). Это наверное не относится к данной теме, но может быть вы знаете какой-нибудь продукт способный делать это? MyGeneration способен сделать это Код: plaintext Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2008, 19:42 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Sa MyGeneration способен сделать это Код: plaintext Благодарю вас за совет, MyGeneration впринципе подходит, только остается написать коррекнтый генератор для бизнесс модели BLToolKit. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2008, 12:34 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
Viktor Bartel[quot Sa] Благодарю вас за совет, MyGeneration впринципе подходит, только остается написать коррекнтый генератор для бизнесс модели BLToolKit. http://www.mygenerationsoftware.com/TemplateLibrary/Template/?id=a1e54825-1926-43aa-8b1f-1addbab63b30 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2008, 23:40 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
bltoolkit http://www.mygenerationsoftware.com/TemplateLibrary/Template/?id=a1e54825-1926-43aa-8b1f-1addbab63b30 Спасибо, я уже видел этот плагин, он в принципе подходит нам ну если что можно адаптировать под нужды предприятия :). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2008, 16:06 |
|
||
|
Помощь в сравнении LLBLGen и BLToolKit
|
|||
|---|---|---|---|
|
#18+
У MyGeneration - Server Error DynBack - blog about Asp.Net, Mvc, jQuery, VWG and other rapid Ajax concepts ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2010, 17:12 |
|
||
|
|

start [/forum/topic.php?fid=17&msg=36571367&tid=1351354]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
136ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 208ms |
| total: | 406ms |

| 0 / 0 |
