Здравствуйте IT, Вы писали:
AVK>>Увы, идеальной документации не бывает и некоторые тонкости могут быть не представлены. Когда есть исходники — всегдна можно в них заглянуть. В свое время мне очень исходники библиотек Дельфи помогли. Да и в исходники библиотек java несколько раз приходилось лазить.
IT>Я пытаюсь вспомнить когда мне исходники реально помогли.
IT>1. Надо было сделать локализацию ещё в DOS для DPMI в BC++ 4.5, что-то там Борланд нахимичил с DLL'ками.
IT>2. Много пришлось погулять по MFC, что бы понять what's going on там внутри.
IT>3. ATL пришлось покопать, хотя после ATL InternalsАвтор(ы): Brent Rector, Chris Sells
When I first saw the title of this book, I told Chris Sells that it
sounded like the book I always wanted to writed. Ever since we released ATL,
some of us have been saying, "I've often thought that I should write a book on
how ATL works." After reading ATL Internals, I don't think there would
be much left for me to write about. Actually, this is kind of a relief.
At this point, I think most aspects of ATL have been covered,
and ATL Internals provides an excellent source of information on the
inner workings of ATL. So, Chris asked me to provide some information that
can't be deduced by looking at the ATL source code.
многие вопросы снялись.
IT>Т.е. в первом случае это было связано с глюками, в остальных с недостатком литературы по изучаемому вопросу.
Где это противоречит тому что я сказал? В свое время мне очень сильно пришлось поковыряться в исходниках Дельфей ввиду не очень внятной документации по design-time среде (тогда это была 2 версия ее). Увы, идеального в природе нет и .Net документация тоже не идеальна. И когда ты упрешся в какой нибудь темный угол — что ты будешь делать?
AVK>>Для корпоративных приложений java все же остается более предпочтительной. На порядок больше специфических API. Где например в .net аналог EJB или JDO?
IT>Давай ты мне расшифруешь эти аббревиатуры и скажешь для чего они нужны, а я постараюсь привести примеры аналогов.
Нет проблем. Начнем с более простой. JDO — Java Data Objects. Технология сериализации объектов в различные источники (обычно DB и XML) с возможностью выборочной десериализации. А главное — умеющая десериализовывать по набору условий при помощи языка похожего на SQL но для работы с объектами. Короче — механизм персистентности.
Ничего похожего у MS пока нет.
EJB — Enterprise Java Beans, ключевая технология J2EE. Это сервер приложений. Главное отличие от других подобных технологий — более глубокое взаимодейстиве с объектами. К примеру EJB сервер сам загружает, выгружает и инициализирует бизнес-объекты, активно их кеширует, обеспечивает безопасность, механизм транзакций, в т.ч. и распределенных, пул соединений с SQL сервером, балансировку нагрузки и работу в кластерах. Существуе механизм полностью автоматической загрузки\выгрузки объектов, когда контейнер сам создает запросы к БД, выполняет их и результат предоставляет разработчику. Ну и наконец это полноценный Object-Relational преобразователь реализующий отношения 1-1, 1-n, n-1, n-n. Самое похожее на это у MS — COM+ и serviced components, но они не умеют многое из того что могут EJB-сервера.
IT>Только сразу предупреждаю, как я уже говорил, .NET дополняет Win32 и возможно некоторые вещи эффективнее реализовывать на последней.
Э нет, так не пойдет. Идеология .Net такова что следует по возможности максимально избегать legacy интерфейсов, особенно Win32 API. И не только для переносимости. При этом вся система anti dll-hell идет нафик. Да и за что тогда боролись? Чтобы все писать на Win32? А нафига тогда дотнет?
AVK>>При чем здесь все возможности. Вот скажи для примера — если мне LinkedList нужен — мне его ручками писать или ArrayList пользовать? Ни Queue ни Stack мне не подходят ввиду необходимости удалять элементы из середины.
IT>А чем ArrayList не подходит?
Сделаем проще. Вот исходник
using System;
using System.Collections;
public class Coll {
public static void Main() {
ArrayList al = new ArrayList();
int st = Environment.TickCount;
for(int i = 0; i < 1000000; i++) {
al.Insert(0,new object());
if(al.Count > 1000)
al.RemoveAt(al.Count-1);
}
Console.WriteLine(Environment.TickCount-st);
Queue q = new Queue();
st = Environment.TickCount;
for(int i = 0; i < 1000000; i++) {
q.Enqueue(new object());
if(q.Count > 1000)
q.Dequeue();
}
Console.WriteLine(Environment.TickCount-st);
}
}
А вот результат его выполнения на моей машине
1859
188
Комментарии я думаю излишни. Если интересно почему такой результат — могу рассказать.
AVK>>Все же бывает он нужен. Да и от глюков в .Net никто не застрахован. Знаешь как xslt процессор в beta2 чудесатил.
IT>Ok, пусть без исходников никуда, убалтали ;o) Можете напечатаь исходники CRTL или библиотек Java и обвешать ими все стены.
Зачем ими стены обвешивать. Просто наличие исходников уменьшает степень риска. И ничего более.
IT> А про beta2 это не честно. Это ж бэта, она глючить должна по определению ;)
Думаешь есть существенная разница между бетами и релизами? То-то MS не успел выпустить релиз дотнета уже сервис пак к нему лежит.