Доброго времени суток!
Возник вопрос:
Как формировать классы динамически?
Нужно для создания объектной БД под .NET.
Конечно, у меня у самого есть кое-какие соображения связанные с сериализацией в XML, но хотелось бы послушать умных людей.
Или может, кто посоветует, что почитать… буду очень благодарен.
Sex Drugs and Linux Rules? Realy? ;-)
ICQ:2489468 MSN:mcloud[at]list.ru
Здравствуйте, NetStyler, Вы писали:
NS>Доброго времени суток! NS>Возник вопрос: NS>Как формировать классы динамически? NS>Нужно для создания объектной БД под .NET. NS>Конечно, у меня у самого есть кое-какие соображения связанные с сериализацией в XML, но хотелось бы послушать умных людей. NS>Или может, кто посоветует, что почитать… буду очень благодарен.
То о чем ты спрашиваешь описано в книге "C# и платформа .Net" г-на Эндрю Троелсена (см. стр. 328 — 333). Если в кратце, то он использует типы из пространства имен System.Reflection.Emit. Правда добавляет, что это пространство имен, в основном, предназначено для создателей средств разработки. Так что, может для твоей проблемы лучше другое решение (тогда твой вопрос нужно как-то переформулировать и я думаю, что тебе нужно рассказать о проблеме подробнее и, возможно, кто-нибудь предложить более подходящее решение).
Как вариант можешь формировать код на C# динамически и данамически же его генерировать. Вот пример:
using System;
using Microsoft.CSharp;
class TestCScompiller
{
static void Main(string[] args)
{
// этот текст и будем компилироватьstring sText =
@"
using System;
class Foo
{
[STAThread]
static void Main(string[] args)
{
Console.WriteLine(" + "\"Hello world\"" + @");
}
}
";
// компиляция
CompilerError[] errs = Compiler.Compile(
new string[]{sText},
new string[]{"any_name.cs"},
"out.exe",
null,
null);
foreach(CompilerError err in errs)
{
Console.WriteLine(err);
}
}
}
Здравствуйте, Spark2K, Вы писали:
SK>Здравствуйте, NetStyler, Вы писали:
Ну собственно нужно динамически добавлять атрибуты в уже существующий класс.
Методы трогать не надо. Да и формирование класса о котором система не знает тоже не нужно.
А то получтся .. создаем неизвестно что, потом делаем на это неизвестно что отображение — выясняем что это.. и еще интрфейсы тоже динамически.... слишком заморочено!
Нужно просто добавить несколлько атрибутов.
NS>>Доброго времени суток! NS>>Возник вопрос: NS>>Как формировать классы динамически? NS>>Нужно для создания объектной БД под .NET. NS>>Конечно, у меня у самого есть кое-какие соображения связанные с сериализацией в XML, но хотелось бы послушать умных людей. NS>>Или может, кто посоветует, что почитать… буду очень благодарен.
SK>То о чем ты спрашиваешь описано в книге "C# и платформа .Net" г-на Эндрю Троелсена (см. стр. 328 — 333). Если в кратце, то он использует типы из пространства имен System.Reflection.Emit. Правда добавляет, что это пространство имен, в основном, предназначено для создателей средств разработки. Так что, может для твоей проблемы лучше другое решение (тогда твой вопрос нужно как-то переформулировать и я думаю, что тебе нужно рассказать о проблеме подробнее и, возможно, кто-нибудь предложить более подходящее решение). SK>Как вариант можешь формировать код на C# динамически и данамически же его генерировать. Вот пример: SK>using System;
SK> SK>
Здравствуйте, kreek, Вы писали:
K>Здравствуйте NetStyler, Вы писали:
Это слишком просто и неудобно.
Может еще идеи есть? NS>>Доброго времени суток! NS>>Возник вопрос: NS>>Как формировать классы динамически?
K>Класс сделать один и на основе метаданных набивать свойства сущности в массив.
Sex Drugs and Linux Rules? Realy? ;-)
ICQ:2489468 MSN:mcloud[at]list.ru
Здравствуйте, NetStyler, Вы писали:
NS>Возник вопрос: NS>Как формировать классы динамически? NS>Нужно для создания объектной БД под .NET.
А зачем динамически? У тебя в процессе работы структура БД меняться будет? Почему не сделать генератор исходников?
NS>Конечно, у меня у самого есть кое-какие соображения связанные с сериализацией в XML, но хотелось бы послушать умных людей.
А ты про typed dataset и xsd.exe смотрел? Может не надо тебе ничего делать?
Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, Spark2K, Вы писали:
SK>>Правда добавляет, что это пространство имен, в основном, предназначено для создателей средств разработки.
AVK>Фигню он говорит.
Здравствуйте AndrewVK, Вы писали:
AVK>Здравствуйте, NetStyler, Вы писали:
NS>>Ну собственно нужно динамически добавлять атрибуты в уже существующий класс.
AVK>От изврат. Не надо этого делать, не для этого атрибуты предназначены.
Он под атрибутами понял как атрибуты бизнес сущности, а не наследников System.Attribute.
Правильно поняли.
На самом деле хочется сделать объектный движок к MS SQL.
Думаю он всем будет полезен. K>Здравствуйте AndrewVK, Вы писали:
AVK>>Здравствуйте, NetStyler, Вы писали:
NS>>>Ну собственно нужно динамически добавлять атрибуты в уже существующий класс.
AVK>>От изврат. Не надо этого делать, не для этого атрибуты предназначены.
K> K>Он под атрибутами понял как атрибуты бизнес сущности, а не наследников System.Attribute.
Sex Drugs and Linux Rules? Realy? ;-)
ICQ:2489468 MSN:mcloud[at]list.ru
Да. Будет динамически меняться. AVK>Здравствуйте, NetStyler, Вы писали:
NS>>Возник вопрос: NS>>Как формировать классы динамически? NS>>Нужно для создания объектной БД под .NET.
AVK>А зачем динамически? У тебя в процессе работы структура БД меняться будет? Почему не сделать генератор исходников?
NS>>Конечно, у меня у самого есть кое-какие соображения связанные с сериализацией в XML, но хотелось бы послушать умных людей.
AVK>А ты про typed dataset и xsd.exe смотрел? Может не надо тебе ничего делать?
Sex Drugs and Linux Rules? Realy? ;-)
ICQ:2489468 MSN:mcloud[at]list.ru
Не смотрел .. а стоит ? AVK>Здравствуйте, NetStyler, Вы писали:
NS>>Правильно поняли. NS>>На самом деле хочется сделать объектный движок к MS SQL. NS>>Думаю он всем будет полезен.
AVK>Ты все же ответь — ты xsd.exe смотрел?
Sex Drugs and Linux Rules? Realy? ;-)
ICQ:2489468 MSN:mcloud[at]list.ru
Ну .. это не совсем то .. что мне программу каждый раз пересобирать при изменении объектов ? AVK>Здравствуйте, NetStyler, Вы писали:
NS>>Правильно поняли. NS>>На самом деле хочется сделать объектный движок к MS SQL. NS>>Думаю он всем будет полезен.
AVK>Ты все же ответь — ты xsd.exe смотрел?
Sex Drugs and Linux Rules? Realy? ;-)
ICQ:2489468 MSN:mcloud[at]list.ru
Здравствуйте NetStyler, Вы писали:
NS>Здравствуйте, kreek, Вы писали:
K>>Здравствуйте NetStyler, Вы писали:
NS>Это слишком просто и неудобно. NS>Может еще идеи есть? NS>>>Доброго времени суток! NS>>>Возник вопрос: NS>>>Как формировать классы динамически?
K>>Класс сделать один и на основе метаданных набивать свойства сущности в массив.
Отказываться от простоты?
ICustomTypeDescriptor и PropertyDescriptor дадут возможность такие объекты отображать в гриде или использовать датабиндинг.
Хочется создать службу которая:
При пересылки ей объекта — знала как положить его в базу.
При изменениии структуры БД знала как собрать объект.
При изменении объекта — меняла структуру базы.
Поддерживаля связи между объектами и т.д.
Создание объектной БД.
AVK>Здравствуйте, NetStyler, Вы писали:
NS>>Здравствуйте, AndrewVK, Вы писали:
NS>>Да. Будет динамически меняться.
AVK>Тогда следующий вопрос — зачем?
Sex Drugs and Linux Rules? Realy? ;-)
ICQ:2489468 MSN:mcloud[at]list.ru
NS>Ну .. это не совсем то .. что мне программу каждый раз пересобирать при изменении объектов ?
а какие тут парадоксы? версия базы при этом меняется.. выдели отдельный уровень — реализуй его
компоненты в отдельной сборке.. иначе не отделаться тебе от тормозов... не везде к сожалению
можно реализовать динамику так, чтобы при этом не "посадить" систему...
В этой задаче как раз тормоза не пугают
NS>>Ну .. это не совсем то .. что мне программу каждый раз пересобирать при изменении объектов ?
МС>а какие тут парадоксы? версия базы при этом меняется.. выдели отдельный уровень — реализуй его МС>компоненты в отдельной сборке.. иначе не отделаться тебе от тормозов... не везде к сожалению МС>можно реализовать динамику так, чтобы при этом не "посадить" систему...
Sex Drugs and Linux Rules? Realy? ;-)
ICQ:2489468 MSN:mcloud[at]list.ru
Здравствуйте, NetStyler, Вы писали:
NS>В этой задаче как раз тормоза не пугают
а не пугает то, что эти наработки из-за тормозов больше никуда не впихнешь и
не прикрутишь? не пугает осознание того, что сделал что-то еле шевелящееся или
то, что в случае увеличения нагрузки в будушем просто встанет колом и начальство
поставит всех раком (извини. ничего личного, но такая перспектива
есть практически у всех).
Здравствуйте, NetStyler, Вы писали:
NS>Ну .. это не совсем то .. что мне программу каждый раз пересобирать при изменении объектов ? NS>
Во-первых — если ты поменял структуру данных то программу тоже скорее всего менять придеться. Во-вторых — зачем пересобирать? Классы в любом случае нужно помещать в отдельную сборку. Вот ее и пересоберешь.
Динамическая генерация нужна только если ты будешь менять структуру базы не закрывая работающей программы. Вот зачем это нужно я и не могу понять.
Здравствуйте, NetStyler, Вы писали:
NS>Хочется создать службу которая: NS>При пересылки ей объекта — знала как положить его в базу. NS>При изменениии структуры БД знала как собрать объект.
Это все xsd делает
NS>При изменении объекта — меняла структуру базы.
А это ты сам и не сделаешь так просто — по практике использования EJB тебе скажу — лучше базу делать руками.
NS>Поддерживаля связи между объектами и т.д.
И это тоже xsd ltkftn
Сразу ты упустил важнейшую вешь — а кешировать ты собираешься?
Пока обойдемся без кеширования.
На самом деле я принимал участие в подобной разработке. (давным давно).
И видел что это работало ... теперь надо как-то воспроизвести. AVK>Здравствуйте, NetStyler, Вы писали:
NS>>Хочется создать службу которая: NS>>При пересылки ей объекта — знала как положить его в базу. NS>>При изменениии структуры БД знала как собрать объект.
AVK>Это все xsd делает
NS>>При изменении объекта — меняла структуру базы.
AVK>А это ты сам и не сделаешь так просто — по практике использования EJB тебе скажу — лучше базу делать руками.
NS>>Поддерживаля связи между объектами и т.д.
AVK>И это тоже xsd ltkftn
AVK> AVK>Сразу ты упустил важнейшую вешь — а кешировать ты собираешься?
Sex Drugs and Linux Rules? Realy? ;-)
ICQ:2489468 MSN:mcloud[at]list.ru
Здравствуйте, NetStyler, Вы писали:
NS>Пока обойдемся без кеширования.
Вряд ли получится
NS>На самом деле я принимал участие в подобной разработке. (давным давно). NS>И видел что это работало ... теперь надо как-то воспроизвести.
Я сам небольшой проектик на дотнете делал. Преобразователь в БД от него лежит на http://xobjects.narod.ru
Здравствуйте, NetStyler, Вы писали:
NS>Доброго времени суток! NS>Возник вопрос: NS>Как формировать классы динамически? NS>Нужно для создания объектной БД под .NET. NS>Конечно, у меня у самого есть кое-какие соображения связанные с сериализацией в XML, но хотелось бы послушать умных людей. NS>Или может, кто посоветует, что почитать… буду очень благодарен.
Почитай статью здесь, может
что-то и полезное написали.
Ни в коей мере не претендуя на звание "умного человека", выскажу своё мнение — возможно, окажется полезным. На мой взгляд, можно определить абстрактный класс, в конструкторе прописать логику создания на основе атрибутов полей и методов, определить эти самые атрибуты. А во время исполнения просто генерить наследников и добавлять поля с заданными атрибутами. Не буду утверждать, что решение оптимальное, но похожую задачу неадвно я решал именно так.
Здравствуйте, NetStyler, Вы писали: NS>Доброго времени суток! NS>Возник вопрос: NS>Как формировать классы динамически? NS>Нужно для создания объектной БД под .NET. NS>Конечно, у меня у самого есть кое-какие соображения связанные с сериализацией в XML, но хотелось бы послушать умных людей. NS>Или может, кто посоветует, что почитать… буду очень благодарен.
Здравствуйте, Low IQ Bastard, Вы писали:
LIB>Ни в коей мере не претендуя на звание "умного человека", выскажу своё мнение — возможно, окажется полезным. На мой взгляд, можно определить абстрактный класс, в конструкторе прописать логику создания на основе атрибутов полей и методов, определить эти самые атрибуты. А во время исполнения просто генерить наследников и добавлять поля с заданными атрибутами. Не буду утверждать, что решение оптимальное, но похожую задачу неадвно я решал именно так.
Ну хоть кто нибудь объясните — зачем во время выполнения?
Здравствуйте, AndrewVK, Вы писали:
AVK>И все таки — зачем?
Если быть точным — смысл был не в генерировании самого класса во время выполнения (их исходники как раз генерились автоматически), а в упрощении работы — не писать каждый раз конструктор, методы и т.д. — свести генерацию к созданию наследника, указанию полей и атрибутов. Ну и такой же подход можно использовать для генерации во время выполнения.
Здравствуйте, Low IQ Bastard, Вы писали:
LIB>Если быть точным — смысл был не в генерировании самого класса во время выполнения (их исходники как раз генерились автоматически), а в упрощении работы — не писать каждый раз конструктор, методы и т.д. — свести генерацию к созданию наследника, указанию полей и атрибутов. Ну и такой же подход можно использовать для генерации во время выполнения.
Понятно. Но тут тебя ждет другая засада — в этом случае тебе придется сам код генерить прямо в опкодах. ИМХО лучше сгенерить и скомпилировать исходники. Плюс возможность просмотреть генеренные исходники иногда очень удобна. И большинство родных утилит генерируют исходники, исключение составляет только tlbimp.
Здравствуйте, kreek, Вы писали:
K>ICustomTypeDescriptor и PropertyDescriptor дадут возможность такие объекты отображать в гриде или использовать датабиндинг.
Да в принципе их можно при этом и через PropertyDescriptor вызывать в лучшем виде. Вот только для статического вызова это доступно не будет. Разве что если вызов делать из JScript.NET.
Кстати, об этом можно статейку написать... Если интересно.
... << RSDN@Home 1.0 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
NS>>Создание объектной БД.
VD>А может проще взять готовую? Ну Каше например.
Не Влад, ребяты имеют ввиду создание ОО прослойки, вроде EJB или Castor. Вот только еще не знают сколько при этом надо сил положить чтобы получить приемлемое быстродействие.
Здравствуйте, AndrewVK, Вы писали:
AVK>Не Влад, ребяты имеют ввиду создание ОО прослойки, вроде EJB или Castor. Вот только еще не знают сколько при этом надо сил положить чтобы получить приемлемое быстродействие.
Вот я и говорю. Готовая ООБД будет куда лучше и проще.
... << RSDN@Home 1.0 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте VladD2, Вы писали:
VD>Здравствуйте, kreek, Вы писали:
K>>ICustomTypeDescriptor и PropertyDescriptor дадут возможность такие объекты отображать в гриде или использовать датабиндинг.
VD>Да в принципе их можно при этом и через PropertyDescriptor вызывать в лучшем виде. Вот только для статического вызова это доступно не будет. Разве что если вызов делать из JScript.NET.
VD>Кстати, об этом можно статейку написать... Если интересно.
Сории за непонимание статического вызова, вот только если грид читает метаданные о объекте, то ему это все можно подсунуть в рантайме, т.е он это скушает. Пока я писал предидущее предложение, догнал, что ты подразумеваешь под статическим вызовом — т.е. это, то что отображает IntelliSense? тогда можно VB.NET для позднего связывания. Или я тут смешал разые понятия?
А статья нужна людям! Кстати есть наработки по этому поводу.
Здравствуйте, kreek, Вы писали:
K>Сории за непонимание статического вызова, вот только если грид читает метаданные о объекте, то ему это все можно подсунуть в рантайме, т.е он это скушает. Пока я писал предидущее предложение, догнал, что ты подразумеваешь под статическим вызовом — т.е. это, то что отображает IntelliSense? тогда можно VB.NET для позднего связывания. Или я тут смешал разые понятия?
Я не знаю потянет ли VB.NET это дело. Но даже если и поянет, то вызов будет динамическим. Т.е. с помощью PropertyDescriptor и в рантайме. Во время компиляции VB.NET не будет знать что это за тип.
Под статическим вызовом я понимаю нормальный код на том же VB.NET или шарпе. Так например от этого объекта нельзя будет унаследоваться или нельзя будет просто считать свойство. Т.е. можно будет сделать так:
K>А статья нужна людям! Кстати есть наработки по этому поводу.
object c = new Class2();
Type t = c.GetType();
pd = pdc["DinTestStr"];
pd.SetValue(c, "Свойство DinTestStr");
Console.WriteLine(pd.GetValue(c).ToString());
Или (возомжно):
Dim c as Object = new Class2()
Console.WriteLine c.DinTestStr
Но нельзя будет написать:
Dim c as Class2 = new Class2()
Console.WriteLine c.DinTestStr
или
Class2 c = new Class2();
Console.WriteLine(c.DinTestStr);
... << RSDN@Home 1.0 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Так можно описать базовый класс, который помимо Custom Type Definition будет напрямую предоставлять доступ к свойствам, типа, string or ValueType {get, set}SimpleValue[SimpleValPropertyName] & Business_Object {get, set}RefValue[RefValPropertyName]
Здравствуйте AndrewVK, Вы писали:
AVK>Здравствуйте, kreek, Вы писали:
K>>Неа, охота свою инфраструктуру иметь, на основе которой клепать и клепать приложения
AVK>А зачем свою? Чем не устраивают существующие? Сколько вобще существующих видел?
Пару видел (названия не помню, одна под ДотНет, кажись DotNetPark.сом, другая визуальная под Джаву), для крупного проекта нужна своя, не хочу на уверсальности многое терять.
Здравствуйте, kreek, Вы писали:
K>Пару видел (названия не помню, одна под ДотНет, кажись DotNetPark.сом, другая визуальная под Джаву), для крупного проекта нужна своя, не хочу на уверсальности многое терять.
Даже если писать свою тебе как минимум нужно ознакомиться с теми решениями что предлагает индустрия. Ты просто еще не представляешь какой геморой тебя ждет.
Здравствуйте, kreek, Вы писали:
K>Неа, охота свою инфраструктуру иметь, на основе которой клепать и клепать приложения
Ну тогда начинай с своей СУБД. Так инфраструктура будет полнее.
Ну или не выпендривайся и используй ДатаСеты из адо.нэт или вообще рекорсеты из обычного адо. Ну а на клиенте можешь и обертку сделать, шоб все було в ОО-стиле.
... << RSDN@Home 1.0 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, kreek, Вы писали:
K>Так можно описать базовый класс, который помимо Custom Type Definition будет напрямую предоставлять доступ к свойствам, типа, string or ValueType {get, set}SimpleValue[SimpleValPropertyName] & Business_Object {get, set}RefValue[RefValPropertyName]
Ну и чем это от датасета будет отличаться? Что городить огород на пустом месте?
... << RSDN@Home 1.0 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
AVK>>А зачем свою? Чем не устраивают существующие? Сколько вобще существующих видел?
VD>Если ты о типизированных датасетах,
Нет, я вобще о подобных решениях, о каше, о EJB и т.д.
VD>то они конечно кривоваты. Столько года когда нужно то всего легкую оберточку над отключенным крусором.
Это разве много? Так, мелочь. Ты много не видел. У нас на джаве в свое время код мегабайтами генерился.
Здравствуйте, AndrewVK, Вы писали:
AVK>Это разве много? Так, мелочь. Ты много не видел. У нас на джаве в свое время код мегабайтами генерился.
Ну и зачем? Там делов то... обернуть датасет чтобы из кода работать удобнее было. Кстати, производительность турда от этого вряд ли повысится. Я бы делал больший упор на визуализацию. 90% работы с БД можно визуально делать. Там же жесткие алгоритмы. А логику можно на сервере обрабатывать. Презинтационную на событиях. По мне так выбрал РСУБД так и работай в ее терминах. Хочешь объеты в БД, то и выбирай ООБД или на худой конец нечно вроде хмл-я (то тут свои проблемы).
Самый большой прикол со всеми этими обертками заключается в том, что работать нужно со множествами (ну таблицами/списками если по рабочекрестьянски выражаться), а все эти обертки или вообще упускают этот вопрос или становятся крайне не эффективными (как EJB). Вот в ООСУБД другое дело. Там и запросы вс6 в терминах ОО. И хранение соотвествующее. Жаль только что на рынке ООСУБД нет пока нет явного лидера вроде МС или Оракла.
... << RSDN@Home 1.0 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Ну и зачем? Там делов то... обернуть датасет чтобы из кода работать удобнее было.
Ага, а еще чтобы ко всем отношениям коллекции были, а еще чтобы это чудо сериализоваться умело. Ты посмотри код, нет там ничего лишнего, все по делу.
VD>Кстати, производительность турда от этого вряд ли повысится.
Не Влад, повышается очень сильно, проверено на практике.
VD>Я бы делал больший упор на визуализацию. 90% работы с БД можно визуально делать. Там же жесткие алгоритмы. А логику можно на сервере обрабатывать. Презинтационную на событиях.
А по хорошему презентационной логики программист вобще почти не должен писать.
VD>По мне так выбрал РСУБД так и работай в ее терминах. Хочешь объеты в БД, то и выбирай ООБД или на худой конец нечно вроде хмл-я (то тут свои проблемы).
Это уже топкая область, тут никаких решений вроде делай так и никак иначе нет.
VD> а все эти обертки или вообще упускают этот вопрос или становятся крайне не эффективными (как EJB).
Да, пожалуй главный недостаток. Но сами датасеты тоже самое — никаких групповых операций они не делают.
VD> Жаль только что на рынке ООСУБД нет пока нет явного лидера вроде МС или Оракла.
Жаль. Но я бы удовлетворился хорошей XML БД, ее до уровня ООБД отмапить несложно. Вот только МС все нас завтраками кормит, а сам пока предлагает только какие то нелепые примочки.
Здравствуйте, VladD2, Вы писали:
VD>Ну и зачем? Там делов то... обернуть датасет чтобы из кода работать удобнее было.
Ага, а еще чтобы ко всем отношениям коллекции были, а еще чтобы это чудо сериализоваться умело. Ты посмотри код, нет там ничего лишнего, все по делу.
VD>Кстати, производительность турда от этого вряд ли повысится.
Не Влад, повышается очень сильно, проверено на практике.
VD>Я бы делал больший упор на визуализацию. 90% работы с БД можно визуально делать. Там же жесткие алгоритмы. А логику можно на сервере обрабатывать. Презинтационную на событиях.
А по хорошему презентационной логики программист вобще почти не должен писать.
VD>По мне так выбрал РСУБД так и работай в ее терминах. Хочешь объеты в БД, то и выбирай ООБД или на худой конец нечно вроде хмл-я (то тут свои проблемы).
Это уже топкая область, тут никаких решений вроде делай так и никак иначе нет.
VD> а все эти обертки или вообще упускают этот вопрос или становятся крайне не эффективными (как EJB).
Да, пожалуй главный недостаток. Но сами датасеты тоже самое — никаких групповых операций они не делают.
VD> Жаль только что на рынке ООСУБД нет пока нет явного лидера вроде МС или Оракла.
Жаль. Но я бы удовлетворился хорошей XML БД, ее до уровня ООБД отмапить несложно. Вот только МС все нас завтраками кормит, а сам пока предлагает только какие то нелепые примочки.
Здравствуйте, VladD2, Вы писали:
VD>Ну и зачем? Там делов то... обернуть датасет чтобы из кода работать удобнее было.
Ага, а еще чтобы ко всем отношениям коллекции были, а еще чтобы это чудо сериализоваться умело. Ты посмотри код, нет там ничего лишнего, все по делу.
VD>Кстати, производительность турда от этого вряд ли повысится.
Не Влад, повышается очень сильно, проверено на практике.
VD>Я бы делал больший упор на визуализацию. 90% работы с БД можно визуально делать. Там же жесткие алгоритмы. А логику можно на сервере обрабатывать. Презинтационную на событиях.
А по хорошему презентационной логики программист вобще почти не должен писать.
VD>По мне так выбрал РСУБД так и работай в ее терминах. Хочешь объеты в БД, то и выбирай ООБД или на худой конец нечно вроде хмл-я (то тут свои проблемы).
Это уже топкая область, тут никаких решений вроде делай так и никак иначе нет.
VD> а все эти обертки или вообще упускают этот вопрос или становятся крайне не эффективными (как EJB).
Да, пожалуй главный недостаток. Но сами датасеты тоже самое — никаких групповых операций они не делают.
VD> Жаль только что на рынке ООСУБД нет пока нет явного лидера вроде МС или Оракла.
Жаль. Но я бы удовлетворился хорошей XML БД, ее до уровня ООБД отмапить несложно. Вот только МС все нас завтраками кормит, а сам пока предлагает только какие то нелепые примочки.
Здравствуйте, VladD2, Вы писали:
VD>Ну и зачем? Там делов то... обернуть датасет чтобы из кода работать удобнее было.
Ага, а еще чтобы ко всем отношениям коллекции были, а еще чтобы это чудо сериализоваться умело. Ты посмотри код, нет там ничего лишнего, все по делу.
VD>Кстати, производительность турда от этого вряд ли повысится.
Не Влад, повышается очень сильно, проверено на практике.
VD>Я бы делал больший упор на визуализацию. 90% работы с БД можно визуально делать. Там же жесткие алгоритмы. А логику можно на сервере обрабатывать. Презинтационную на событиях.
А по хорошему презентационной логики программист вобще почти не должен писать.
VD>По мне так выбрал РСУБД так и работай в ее терминах. Хочешь объеты в БД, то и выбирай ООБД или на худой конец нечно вроде хмл-я (то тут свои проблемы).
Это уже топкая область, тут никаких решений вроде делай так и никак иначе нет.
VD> а все эти обертки или вообще упускают этот вопрос или становятся крайне не эффективными (как EJB).
Да, пожалуй главный недостаток. Но сами датасеты тоже самое — никаких групповых операций они не делают.
VD> Жаль только что на рынке ООСУБД нет пока нет явного лидера вроде МС или Оракла.
Жаль. Но я бы удовлетворился хорошей XML БД, ее до уровня ООБД отмапить несложно. Вот только МС все нас завтраками кормит, а сам пока предлагает только какие то нелепые примочки.
Здравствуйте, VladD2, Вы писали:
VD>Ну и зачем? Там делов то... обернуть датасет чтобы из кода работать удобнее было.
Ага, а еще чтобы ко всем отношениям коллекции были, а еще чтобы это чудо сериализоваться умело. Ты посмотри код, нет там ничего лишнего, все по делу.
VD>Кстати, производительность турда от этого вряд ли повысится.
Не Влад, повышается очень сильно, проверено на практике.
VD>Я бы делал больший упор на визуализацию. 90% работы с БД можно визуально делать. Там же жесткие алгоритмы. А логику можно на сервере обрабатывать. Презинтационную на событиях.
А по хорошему презентационной логики программист вобще почти не должен писать.
VD>По мне так выбрал РСУБД так и работай в ее терминах. Хочешь объеты в БД, то и выбирай ООБД или на худой конец нечно вроде хмл-я (то тут свои проблемы).
Это уже топкая область, тут никаких решений вроде делай так и никак иначе нет.
VD> а все эти обертки или вообще упускают этот вопрос или становятся крайне не эффективными (как EJB).
Да, пожалуй главный недостаток. Но сами датасеты тоже самое — никаких групповых операций они не делают.
VD> Жаль только что на рынке ООСУБД нет пока нет явного лидера вроде МС или Оракла.
Жаль. Но я бы удовлетворился хорошей XML БД, ее до уровня ООБД отмапить несложно. Вот только МС все нас завтраками кормит, а сам пока предлагает только какие то нелепые примочки.
Здравствуйте, VladD2, Вы писали:
VD>Ну и зачем? Там делов то... обернуть датасет чтобы из кода работать удобнее было.
Ага, а еще чтобы ко всем отношениям коллекции были, а еще чтобы это чудо сериализоваться умело. Ты посмотри код, нет там ничего лишнего, все по делу.
VD>Кстати, производительность турда от этого вряд ли повысится.
Не Влад, повышается очень сильно, проверено на практике.
VD>Я бы делал больший упор на визуализацию. 90% работы с БД можно визуально делать. Там же жесткие алгоритмы. А логику можно на сервере обрабатывать. Презинтационную на событиях.
А по хорошему презентационной логики программист вобще почти не должен писать.
VD>По мне так выбрал РСУБД так и работай в ее терминах. Хочешь объеты в БД, то и выбирай ООБД или на худой конец нечно вроде хмл-я (то тут свои проблемы).
Это уже топкая область, тут никаких решений вроде делай так и никак иначе нет.
VD> а все эти обертки или вообще упускают этот вопрос или становятся крайне не эффективными (как EJB).
Да, пожалуй главный недостаток. Но сами датасеты тоже самое — никаких групповых операций они не делают.
VD> Жаль только что на рынке ООСУБД нет пока нет явного лидера вроде МС или Оракла.
Жаль. Но я бы удовлетворился хорошей XML БД, ее до уровня ООБД отмапить несложно. Вот только МС все нас завтраками кормит, а сам пока предлагает только какие то нелепые примочки.
Здравствуйте, VladD2, Вы писали:
VD>Ну и зачем? Там делов то... обернуть датасет чтобы из кода работать удобнее было.
Ага, а еще чтобы ко всем отношениям коллекции были, а еще чтобы это чудо сериализоваться умело. Ты посмотри код, нет там ничего лишнего, все по делу.
VD>Кстати, производительность турда от этого вряд ли повысится.
Не Влад, повышается очень сильно, проверено на практике.
VD>Я бы делал больший упор на визуализацию. 90% работы с БД можно визуально делать. Там же жесткие алгоритмы. А логику можно на сервере обрабатывать. Презинтационную на событиях.
А по хорошему презентационной логики программист вобще почти не должен писать.
VD>По мне так выбрал РСУБД так и работай в ее терминах. Хочешь объеты в БД, то и выбирай ООБД или на худой конец нечно вроде хмл-я (то тут свои проблемы).
Это уже топкая область, тут никаких решений вроде делай так и никак иначе нет.
VD> а все эти обертки или вообще упускают этот вопрос или становятся крайне не эффективными (как EJB).
Да, пожалуй главный недостаток. Но сами датасеты тоже самое — никаких групповых операций они не делают.
VD> Жаль только что на рынке ООСУБД нет пока нет явного лидера вроде МС или Оракла.
Жаль. Но я бы удовлетворился хорошей XML БД, ее до уровня ООБД отмапить несложно. Вот только МС все нас завтраками кормит, а сам пока предлагает только какие то нелепые примочки.
Здравствуйте, VladD2, Вы писали:
VD>Ну и зачем? Там делов то... обернуть датасет чтобы из кода работать удобнее было.
Ага, а еще чтобы ко всем отношениям коллекции были, а еще чтобы это чудо сериализоваться умело. Ты посмотри код, нет там ничего лишнего, все по делу.
VD>Кстати, производительность турда от этого вряд ли повысится.
Не Влад, повышается очень сильно, проверено на практике.
VD>Я бы делал больший упор на визуализацию. 90% работы с БД можно визуально делать. Там же жесткие алгоритмы. А логику можно на сервере обрабатывать. Презинтационную на событиях.
А по хорошему презентационной логики программист вобще почти не должен писать.
VD>По мне так выбрал РСУБД так и работай в ее терминах. Хочешь объеты в БД, то и выбирай ООБД или на худой конец нечно вроде хмл-я (то тут свои проблемы).
Это уже топкая область, тут никаких решений вроде делай так и никак иначе нет.
VD> а все эти обертки или вообще упускают этот вопрос или становятся крайне не эффективными (как EJB).
Да, пожалуй главный недостаток. Но сами датасеты тоже самое — никаких групповых операций они не делают.
VD> Жаль только что на рынке ООСУБД нет пока нет явного лидера вроде МС или Оракла.
Жаль. Но я бы удовлетворился хорошей XML БД, ее до уровня ООБД отмапить несложно. Вот только МС все нас завтраками кормит, а сам пока предлагает только какие то нелепые примочки.
Здравствуйте, VladD2, Вы писали:
VD>Ну и зачем? Там делов то... обернуть датасет чтобы из кода работать удобнее было.
Ага, а еще чтобы ко всем отношениям коллекции были, а еще чтобы это чудо сериализоваться умело. Ты посмотри код, нет там ничего лишнего, все по делу.
VD>Кстати, производительность турда от этого вряд ли повысится.
Не Влад, повышается очень сильно, проверено на практике.
VD>Я бы делал больший упор на визуализацию. 90% работы с БД можно визуально делать. Там же жесткие алгоритмы. А логику можно на сервере обрабатывать. Презинтационную на событиях.
А по хорошему презентационной логики программист вобще почти не должен писать.
VD>По мне так выбрал РСУБД так и работай в ее терминах. Хочешь объеты в БД, то и выбирай ООБД или на худой конец нечно вроде хмл-я (то тут свои проблемы).
Это уже топкая область, тут никаких решений вроде делай так и никак иначе нет.
VD> а все эти обертки или вообще упускают этот вопрос или становятся крайне не эффективными (как EJB).
Да, пожалуй главный недостаток. Но сами датасеты тоже самое — никаких групповых операций они не делают.
VD> Жаль только что на рынке ООСУБД нет пока нет явного лидера вроде МС или Оракла.
Жаль. Но я бы удовлетворился хорошей XML БД, ее до уровня ООБД отмапить несложно. Вот только МС все нас завтраками кормит, а сам пока предлагает только какие то нелепые примочки.
Здравствуйте, VladD2, Вы писали:
VD>Ну и зачем? Там делов то... обернуть датасет чтобы из кода работать удобнее было.
Ага, а еще чтобы ко всем отношениям коллекции были, а еще чтобы это чудо сериализоваться умело. Ты посмотри код, нет там ничего лишнего, все по делу.
VD>Кстати, производительность турда от этого вряд ли повысится.
Не Влад, повышается очень сильно, проверено на практике.
VD>Я бы делал больший упор на визуализацию. 90% работы с БД можно визуально делать. Там же жесткие алгоритмы. А логику можно на сервере обрабатывать. Презинтационную на событиях.
А по хорошему презентационной логики программист вобще почти не должен писать.
VD>По мне так выбрал РСУБД так и работай в ее терминах. Хочешь объеты в БД, то и выбирай ООБД или на худой конец нечно вроде хмл-я (то тут свои проблемы).
Это уже топкая область, тут никаких решений вроде делай так и никак иначе нет.
VD> а все эти обертки или вообще упускают этот вопрос или становятся крайне не эффективными (как EJB).
Да, пожалуй главный недостаток. Но сами датасеты тоже самое — никаких групповых операций они не делают.
VD> Жаль только что на рынке ООСУБД нет пока нет явного лидера вроде МС или Оракла.
Жаль. Но я бы удовлетворился хорошей XML БД, ее до уровня ООБД отмапить несложно. Вот только МС все нас завтраками кормит, а сам пока предлагает только какие то нелепые примочки.
Здравствуйте VladD2, Вы писали:
VD>Здравствуйте, kreek, Вы писали:
K>>Так можно описать базовый класс, который помимо Custom Type Definition будет напрямую предоставлять доступ к свойствам, типа, string or ValueType {get, set}SimpleValue[SimpleValPropertyName] & Business_Object {get, set}RefValue[RefValPropertyName]
VD>Ну и чем это от датасета будет отличаться? Что городить огород на пустом месте?
Возможность описывать связи между сущностями в метаданных, а не в типизированных датасетах.
Например, сегодня для отображения договоров, достаточно показать наименования клиента, а завтра клиент захочет увидеть в этом списке еще и группу клиента. Придется менять датасет, перекомпилировать клиента и может еще уровень доступа к данным.