yury_finkel: (Default)
yury_finkel ([personal profile] yury_finkel) wrote2012-02-04 09:33 pm

работа

После долгих исканий и метаний (например, пытались смотреть OpenSwing), всё-таки решили остановиться на «классике»: NetBeans Platform. Пришло осознание, что систему нужно полностью переписать, причём не изобретать велосипед, а сделать так, как люди делают. Поэтому поставил себе NetBeans IDE (кстати, потыкавшись и пообвыкшись, понял, что оно не многим хуже Eclipse и даже IDEA, зато в него интегрировано многое) и пытаюсь разобраться с фреймворком. Пока не очень понятно (но что-то начинает проясняться), и ещё пока не ясно, как организовать 3-tier-архитектуру (не знаю даже, как это сказать по-русски: трёхъярусную архитектуру?) — а она нам очень нужна. Судя по всему, надо будет использовать что-то вроде Hibernate на серверной стороне (ещё и с ним придётся разбираться).

Минус во всём этом один: приходится изучать большой материал, совершенно новый для меня (я даже термины-то не все понимаю), да ещё и по-английски. А с возрастом я чувствую, что способность к обучению у меня всё ниже и ниже. Ей-богу, мне проще что-то самому кодить, чем разбираться в том, что понапридумывали другие... На работе меня утешают, что, мол, изучение нового — это тренировка мозгов против маразма :) Но башка всё-таки пухнет. :(

[identity profile] bezbogny.livejournal.com 2012-02-04 06:24 pm (UTC)(link)
Если вам нужна мощно разветвлённое клиентское приложение, то тогда да, NetBeans Platform (хотя и Эклипс в качестве платформы сгодится, у нас тут в Украине одна фирма торгует бухгалтерским приложением на эклипсовой платформе). К сожалению, Оракл закрыла SwingFramework, а ведь весьма мощная штука была.
Что касается двух других слоев, то вот эта книга как раз об этом. Поскольку она "from beginner to professional", то я уверен, что она - лучшее чтиво на эту тему. Предлагаемую ораклом книгу я осилить не смог, а вот эту - запросто :) И поскольку я, как и вы, на джаву пришел с делфей, то уверен, она и вам подойдет.

[identity profile] yury-finkel.livejournal.com 2012-02-05 08:12 am (UTC)(link)
Ну да, я уже понял. Эту книжку я уже просматривал, потом буду штудировать основательно. Только я пока ещё не понял, как оторвать клиент от прямой связи с БД, мне нужно, чтобы между БД и клиентом был ещё один слой (на сервере), который брал бы данные из БД, как-то их перерабатывал и отдавал бы клиенту (в XML, JSON или как-то ещё). Это для нас принципиально важно.

Я сейчас грызу талмуд «The Definitive Guide to NetBeans Platform» (только начал ещё).

[identity profile] bezbogny.livejournal.com 2012-02-05 12:12 pm (UTC)(link)
Так и оторвать. Предполагается, что между БД и клиентом находится сервер приложений, относительно которого БД находится локально. Хотя для большей производительности БД и может крутиться на отдельной машине, но с ней общается только сервер приложений, а клиент о ней вообще знать не обязан.
GlassFish или JBoss - это самые популярные свободные сервера.
Соответственно, при такой архитектуре клиент и вовсе может быть "тонким", т.е. набором веб-страниц. Если же вы делаете "толстый" клиент, то по всей видимости, серверное приложение у вас будет набором веб-сервисов.

[identity profile] yury-finkel.livejournal.com 2012-02-05 01:18 pm (UTC)(link)
 >Так и оторвать.
В том смысле, что клиент не должен обращаться к БД напрямую, не должен содержать SQL-запросов.
 >Предполагается, что между БД и клиентом находится сервер приложений, относительно которого БД находится локально. Хотя для большей производительности БД и может крутиться на отдельной машине, но с ней общается только сервер приложений, а клиент о ней вообще знать не обязан.
Ну да, именно это я и имею в виду.
 >Соответственно, при такой архитектуре клиент и вовсе может быть «тонким», т.е. набором веб-страниц.
Это у нас фактически было раньше, но практика показала, что веб-страницы — это неудобно (даже если это SmartGWT). Решили делать на клиентской стороне полноценное приложение на Swing.
 >Если же вы делаете «толстый» клиент, то по всей видимости, серверное приложение у вас будет набором веб-сервисов.
Серверное приложение должно отрабатывать запросы клиента, делая свои запросы к БД, преобразовывая данные и отдавая их клиенту.

[identity profile] bezbogny.livejournal.com 2012-02-05 01:25 pm (UTC)(link)
--В том смысле, что клиент не должен обращаться к БД напрямую, не должен содержать SQL-запросов.
Да, он их и не будет содержать. На клиенте вы будете получать готовые объекты своих классов.

-- Серверное приложение должно отрабатывать запросы клиента, делая свои запросы к БД, преобразовывая данные и отдавая их клиенту.
Так веб-сервисы и работают.

[identity profile] bezbogny.livejournal.com 2012-02-05 01:38 pm (UTC)(link)
--На клиенте вы будете получать готовые объекты своих классов.
Т.е. разумеется, вы будете получать данные в XML или JSON, но джава имеет готовые инструменты, которые позволяют по этому поводу не париться. Грубо говоря, выглядеть это будет так:
ClassForSend sendedObject.setData(data);
RecievedClass recievedObject = StaticClassThatImplementsIO(sendedObject);
int x = recievedObject.getAnotherData();

[identity profile] yury-finkel.livejournal.com 2012-02-05 01:42 pm (UTC)(link)
Понятно, именно это мне и нужно. Буду штудировать умные книжки :)