Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.04.28;
Скачать: [xml.tar.bz2];

Вниз

Мозговой штурм на тему разработки клиент-серверного приложения   Найти похожие ветки 

 
Павел Калугин ©   (2012-12-27 15:27) [40]


> честно говоря нет желания сейчас программировать под браузеры

Броузер - это всего лишь вариант реализации клиентской части приложения.


 
Сергей М. ©   (2012-12-27 15:37) [41]


> DevilDevil ©   (27.12.12 15:06) [38]
> честно говоря нет желания сейчас программировать под браузеры


А ты все же попробуй - потом за уши не оттянешь)


 
DVM ©   (2012-12-27 15:58) [42]


> Павел Калугин ©   (27.12.12 15:26) [39]


> В "каждой процедуре" первой строчкой функция дающая ответ
> имеет ли пользователь право выполнить эту процедуру с этими
> входными данными
> Спорный подход, но таки работает и почти не кашляет.  Естественно
> в ущерб быстродействию но в + к "разграничению доступа"

Если разграничивать доступ не персонально по пользователям, а по группам, и иметь не более 64 групп, то разграничение прав даже на отдельных записях делается очень легко и совсем без снижения быстродействия при выборке. Просто каждой записи ставится в соответствие некоторое 64 бит число, каждый бит в котором означает доступ той или иной группе. Два таких числа дают возможность проверять доступ на чтение и запись. Маска группы передается в каждую хранимую процедуру делающую запрос, бинарными операциями (которые есть почти в каждой субд) можно отобрать подходящие под маску записи. Способ почти не снижает быстродействие.


 
MonoLife ©   (2012-12-27 16:12) [43]


> обратить взор в сторону распределенного 3-хзвенного к/с
> веб-приложения : браузер (тонкий веб-клиент) + веб-сервер
> (со встроенным или отдельным сервером приложений) + СУБД-
> сервер

я в свое время попробовал на php написать это дело, внутри организации документооборот, понравилось
> за уши не оттянешь)
:)


 
vuk ©   (2012-12-27 16:24) [44]

to DVM ©   (27.12.12 15:58) [42]:

> Если разграничивать доступ не персонально по пользователям,
>  а по группам, и иметь не более 64 групп

А потом внезапно случается необходимость либо первого, либо второго - и привет. :) Могу сказать, что у нас используется, в основном, управление на уровне групп, но разрешения для групп автоматически раскрываются в пользовательские.


 
знайка   (2012-12-27 16:39) [45]


> Броузер - это всего лишь вариант реализации клиентской части
> приложения
так уж прям и всего лишь.. есть и нехилая разница. И опять таки html определяет ГУИ или нет.


 
Jeer ©   (2012-12-27 16:44) [46]

Начать с уже изобретенных "велосипедов" для создания АИС:

Datarun, CMM, Rational Software, Microsoft Solution Framework (MSF), Rational Unified Process (RUP), Oracle Method, SADT (IDEFx).

P.S.
И забыть об ассемблере:)


 
Сергей М. ©   (2012-12-27 16:46) [47]


> знайка   (27.12.12 16:39) [45]


Для бизнес-приложений даже достаточно высокого уровня сложности браузерного гуя и возможностей хватает выше крыши.


 
Jeer ©   (2012-12-27 16:52) [48]


> А ты все же попробуй - потом за уши не оттянешь)


Тем временем фрейворк raudus от Клопова уже доставляет приличное наслаждение.
Реализовал пару-тройку проектов для Интранет - клиент тащится:)
Добавил выход на мобильные девайсы - народ выпал в осадок.


 
Сергей М. ©   (2012-12-27 17:03) [49]


> Jeer ©   (27.12.12 16:52) [48]


Я пока не решаюсь сделать на него ставку.

Да и вот это

This release starts a new branch.
Release 0.9.0 contains only RaVCL controls

шибко огорчило - взяли да повыбрасывали из пакета кучу компонентов первой необходимости.

Еще там напрягает отсутствие слоя, дающего хоть какой-то доступ к формированию и передаче браузеру пользовательского JS-кода.


 
Сергей М. ©   (2012-12-27 17:38) [50]

Еще вот это напрягает:

Posted on 20.10.2012 by igorklopov
Raudus 0.9.2 is released.
..
2) New RaVCL control: TRaDBGrid. It has reduced functionality yet – cells are not editable, columns are not resizable. But rich UI for the grid is planned

дбгрид - настолько распространенная и нужная петрушка в веб-приложениях, что рожать его нужно бы первоочереднее и пошустрее, благо ExtJs обладает предостаточными возможностями для этого ..
На дворе 2013 год, однако, а дбгрид у Раудуса до сих пор имеет "жалкий вид и макаронную походку" - кому он нафих нужен без редактирования,ресайза и многих других вкусностей и полезностей ?)


 
Jeer ©   (2012-12-27 18:18) [51]


> кому он нафих нужен без редактирования,ресайза


Мне проще - практически никогда не применял какой-либо грид в качестве инструмента редактирирования. Можно считать бзиком:)


 
DevilDevil ©   (2012-12-27 19:48) [52]

всем участникам дискуссии спасибо!
информации достаточно


 
знайка   (2012-12-27 19:54) [53]


> Сергей М. ©   (27.12.12 16:46) [47]
я и не говорю про возможности, с ними все как раз в порядке. ;)
Я про то, что - как делать клиента, влияет и на серверную сторону.
Одно дело это какие-нить веб-сервисы (отдающие, к примеру, джсон ну и там сессии поддержать), и совсем другое веб-приложение со всеми рюшечками.


 
Пит   (2012-12-27 23:01) [54]


> практически никогда не применял какой-либо грид в качестве
> инструмента редактирирования. Можно считать бзиком:)

почему бзик. Абсолютно оправданный подход.

Убью любого, который начнет использовать грид для редактирования, это жутко неудобно для пользователя. Даже cxGrid не катит. Где начало редактирования, где окончание - хрен разберешь.
Вставка новой записи - это уже на грани фола по интуитивности интерфейса. Прибавляем фильтрацию данных - и полный конец обеда.

Единственный в мире грид, который я видел и который подходит для редактирования данных - это excel.


 
Пит   (2012-12-27 23:08) [55]


> Читать Дейта, разбиратся с моделью Сущностей-Связей и т.
> д.

читать дейта как введение в БД? Гы гы... не бережете вы новичков! Нет лучшей книги, чтобы почувствовать себя никчемным идиотом, а слово кортеж возненавидеть на всю жизнь.

А потом понять, если повезет, насколько использование современных БД далеко от этой всей теории.
Хотя для профи эти знания не бесполезны, даже флуд поддерживать не буду по этому поводу.


 
знайка   (2012-12-27 23:22) [56]


> Убью любого, который начнет использовать грид для редактирования
Начинайте с микрософта.


 
vuk ©   (2012-12-27 23:41) [57]

to Пит   (27.12.12 23:01) [54]:

> Убью любого, который начнет использовать грид для редактирования

Руки коротки! :P Гриды для редактирования используем лет 10, никаких проблем в этом нет.


> это жутко неудобно для пользователя.

Тут все зависит от реализации и от методики взаимодействия с серверной частью.


> Где начало редактирования, где окончание - хрен разберешь.

Зависит от того, что понимается под понятием "редактирование". Где конец редактирования у одного поля БД - вполне понятно.


> Вставка новой записи - это уже на грани фола по интуитивности
> интерфейса.

Вот вставка в гриде - это да, неинтуитивно. У нас не используется.


> Прибавляем фильтрацию данных - и полный конец обеда.

А какая нафиг разница для редактирования, есть фильтрация или нет?


 
Jeer ©   (2012-12-27 23:57) [58]


> А какая нафиг разница для редактирования, есть фильтрация
> или нет?


Поскольку пользователь быстро забывает условия фильтрации и считает, что в момент редактирования ему доступна вся Вселенная в максимальной видимости - вот тут и возникают вопросы у IT-спешел.


 
Пит   (2012-12-28 00:01) [59]


> Гриды для редактирования используем лет 10, никаких проблем
> в этом нет.

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


> Зависит от того, что понимается под понятием "редактирование".

вот именно


> Где конец редактирования у одного поля БД - вполне понятно.

ты хотел сказать - у одного поля грида?
И где же?

Когда происходит комит в базу?
На каком этапе и как можно отменить редактирование? Каким образом можно подтвердить сохранение изменения?
Как дать команду на начало изменения данных?


> Вот вставка в гриде - это да, неинтуитивно

согласен


> А какая нафиг разница для редактирования, есть фильтрация
> или нет?

понятное дело, что если ты видишь запись в гриде - значит, она удовлетворяет условию фильтрации. Но вполне возможна ситуация, что изменив данные - оно перестанет удовлетворять условию фильтрации. И вот что тут делать - непонятно. Есть разные подходы к данному вопросу, но ни один из них не вызывает у меня восторга.

Конечно, данная проблема существует и в классической интерпретации аля "Журнал записей в виде грида + карточка записи в виде отдельной формы". Что делать с гридом после изменения записи в отдельной форме?

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

Или возникают достаточно сложные механизмы обработки, которые приходится реализовывать в применении ко многим сущностям.

Или начинается очередная супер разработка очередного мега-универсального журнала сущностей. Бывает даже, что с точки зрения программиста это выглядит приемлимо (я видел хорошую разработку с применением визуального наследования в delphi), но для конечного пользователя это один хрен приводит к стандартизации и по факту к ограниченности механизма использования. Увы и ах.

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


 
vuk ©   (2012-12-28 00:48) [60]

to Пит   (28.12.12 00:01) [59]

> ты хотел сказать - у одного поля грида?
> И где же?

Я немного неверно выразился. Имел в виде поля в DataSet - грид, он же не в вакууме, как правило, а к датасету подключен. А там по окончани редактирования OnChange срабатывает.


> Когда происходит комит в базу?

Вот у нас - ровно там и происходит. В OnChange.


> На каком этапе и как можно отменить редактирование? Каким образом можно подтвердить сохранение изменения?

Берем тот же cxGrid и начинаем редактировать. Для примера возьмем текстовое поле. Пока не нажали Enter находимся в режиме редактирования поля, если в это время нажать Esc, из редактирования выпадаем с восстановлением оригинального значения. Вот именно для этого не нужно делать ничего вообще.


> Как дать команду на начало изменения данных?

Что есть "команда на начало изменений"? DataSet переводится в состояние редактирования тем же гридом автоматически.


> Но вполне возможна ситуация, что изменив данные - оно перестанет
> удовлетворять условию фильтрации.

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


 
Германн ©   (2012-12-28 01:31) [61]


> vuk ©   (27.12.12 23:41) [57]
>
> to Пит   (27.12.12 23:01) [54]:
>
> > Убью любого, который начнет использовать грид для редактирования
>
> Руки коротки! :P Гриды для редактирования используем лет
> 10, никаких проблем в этом нет.
>

Я использую уже 16 лет с хвостиком. Первая программа, в которой используется редактирование в гриде впервые вышла в 1996. И продаётся и поддерживается (в т.ч. с выходом новых версий) до сих пор.
Но естественно редактирование в гриде в этом ПО используется не везде, а только там, где это удобно для пользователя и не опасно для БД.


 
Сергей М. ©   (2012-12-28 10:09) [62]


> Пит   (27.12.12 23:01) [54]


Это тебе просто посчастливилось не застать времена "расцвета" SuperCalc"а)


 
sniknik ©   (2012-12-28 11:07) [63]

> А поговоришь с пользователями - они волком воют.
дело привычки... у меня "выли" при переходе с досовского фокса/редактирования в гриде на 1С с редактированием в формах. время ввода/проверки накладных с нескольких секунд (взять "на основании", пробежаться/поменять в гриде по "количествам", сравнить получившуюся сумму. добавление было как формой так и в гриде из списка товаров поставщика (в 1с-ном модуле такого тогда так не сделали)/вводом кода/артикула в гриде) до 10 - 15 мин... (с вводом системы взяли дополнительно 2х операторов, и если раньше один казалось "ничего не делал" то после все 3 были "сильно заняты").

> Это тебе просто посчастливилось не застать времена "расцвета" SuperCalc"а)
до сих пор фокс (старую систему) с ностальгией вспоминаю. а почитаешь сейчас "как надо" и понимаешь, тогда все было "не правильно", но блин УДОБНО.


 
MsGuns ©   (2012-12-28 12:17) [64]

>Пит   (28.12.12 00:01) [59]
>ну знаешь, Алексей, иногда программистов послушаешь - действительно >никаких проблем и нету. А поговоришь с пользователями - они волком воют.

Это потому что так криво реализовано. Редактирование в сетке незаменимо если требуется изменение большого кол-ва однотипных данных в сжатый отрезок времени, в т.ч. и похожих записей. Модальные окна с подсказками, варнингами и подтверждениями в данном случае просто неуместны.
Конечно, тупым бросанием и "мушечной" настройком компонент такое не реализуется (если какой-нибудь Архонов будет утверждать обратное - плюньте ему в лицо), надо ручками и головой поработать, это да !

>sniknik ©   (28.12.12 11:07) [63]
>до сих пор фокс (старую систему) с ностальгией вспоминаю. а почитаешь >сейчас "как надо" и понимаешь, тогда все было "не правильно", но блин >УДОБНО.

Тогда не было многопользовательсконо доступа, транзакций и много чего еще :)


 
знайка   (2012-12-28 12:25) [65]

Откройте SQL Server Menagement Studio, и в ней добавить новую таблицу в базу. Все в гриде, и добавляется и редактируется.
И где там чего не понятно, и капец всему? Или там писали инопланетяне? :)


 
Ega23 ©   (2012-12-28 12:43) [66]

В Excel-е тоже вот сетка. И как-то редактируют в ней.


 
vuk ©   (2012-12-28 12:52) [67]

to MsGuns ©   (28.12.12 12:17) [64]:

> Тогда не было многопользовательсконо доступа, транзакций
> и много чего еще :)

Не, я понимаю, кнечно, что есть люди, которые на вопрос, "А почему не сделать редактирование прямо в гриде?" отвечают - "Кааааак?!!1111 Там же транзакцыйа!!!1111 =8[   ]"  Но вот лично я между этими вещами связи нифига не улавливаю. :)


 
Inovet ©   (2012-12-28 13:59) [68]

> [64] MsGuns ©   (28.12.12 12:17)
> Тогда не было многопользовательсконо доступа, транзакций и много чего еще :)

Многоползователей было, транзакций не было.


 
MsGuns ©   (2012-12-28 14:01) [69]

>Но вот лично я между этими вещами связи нифига не улавливаю.

Связь однако есть. Тот, кто писал "локалки", юзал блокировки ибо другого ничего не было. И думал что все конфликты разрулятся автоматически (впрочем, часто создавалось такое впечатление). При этом "гридное" редактирование было чуть ли не единственной технологией. А реализация его средами была построена на блокировках.
Но со временем кол-во пользователей и след-но конфликтов резко возросло и весь этот "блокировочный" механизм (в его той еще реализации) издал громкой звук. Ярчайший пример - BDE+Paradox.
В результате имеем что если хочешь работать в локалках надежно, то забудь про гридное редактирование либо используй, но контролируя каждый клик, шмяк и чих юзера.


 
sniknik ©   (2012-12-28 14:03) [70]

> Тогда не было многопользовательсконо доступа, транзакций и много чего еще :)
что характерно в первых 1С тоже... но написано было "по правилам".

> Но вот лично я между этими вещами связи нифига не улавливаю. :)
+ 1

ну, не было, ну был файл сервер, и что?
насколько помню там каждая накладная это был отдельный файл, редактировал каждую один оператор (он и был один :), но теоретически могло быть сколько угодно, и накладную можно было вводить частями (перед приемкой "склеивало").
в таком стиле, хоть счас на клиент сервер переноси, никаких коллизий не будет. но методов подобных почему то нет (не распространены), а вот правил (как сделать неудобно и оправдаться, ИМХО) навалом.


 
Сергей М. ©   (2012-12-28 14:06) [71]


> MsGuns ©   (28.12.12 14:01) [69]


А как там сейчас в 1С обстоят дела с транзакционными делами при использовании системы в файловом режиме ?


 
vuk ©   (2012-12-28 14:14) [72]

to MsGuns ©   (28.12.12 14:01) [69]:

>  При этом "гридное" редактирование было чуть ли не единственной
> технологией. А реализация его средами была построена на
> блокировках.

Фигзнает. В VCL любой механизм редактирования набора данных сводится к  DataSet.Edit -> ... -> DataSet.Post. При этом всё это нормально прехватывается и приводится к любому виду взаимодействия с БД, какой нужен.


 
MsGuns ©   (2012-12-28 14:19) [73]

>В VCL любой механизм редактирования набора данных сводится к  DataSet.Edit -> ... -> DataSet.Post.

Нет, далеко не ЛЮБОЙ.

>При этом всё это нормально прехватывается и приводится к любому виду взаимодействия с БД, какой нужен

Нет, не все. Я уже рассказывал про BDE и TTable например. Если лично у Вас не было проблем с гридной технологией, то это не значит что их вообще не было.


 
Ega23 ©   (2012-12-28 14:21) [74]


> Нет, далеко не ЛЮБОЙ.


Приведи пример.


 
MsGuns ©   (2012-12-28 14:22) [75]

Для примера, напишите простое приложение на работу с таблицей в акцесе используя "нормально перехватывающий" TADOTable. Затем запустите два экземпляра этого приложения. И вы получите дупу.
С чего бы ? Ведь связей гридного редактирования с "транзакциями" "не видно"


 
MsGuns ©   (2012-12-28 14:25) [76]

>Приведи пример.

Append/Insert/AppendRecord/Delete,Refresh etc


 
Inovet ©   (2012-12-28 14:28) [77]

> [69] MsGuns ©   (28.12.12 14:01)
> В результате имеем что если хочешь работать в локалках надежно,
> то забудь про гридное редактирование либо используй, но
> контролируя каждый клик, шмяк и чих юзера.

Да ладно. На FoxPro 2.6 в гриде

locate all for rlock() && найти и заблокировать первую незаблокированную запись
browse fields ;
 field1 параметры, ;
 и т.д. прописываем какие и как отобраджать поля ;
 when rlock() valid funlock()

********************************
function funlock

unlock
return .t.


 
Ega23 ©   (2012-12-28 14:29) [78]


> Append/Insert/AppendRecord/Delete,Refresh etc

По-сути - одно и то же.


 
DVM ©   (2012-12-28 14:38) [79]


> знайка   (28.12.12 12:25) [65]
> Откройте SQL Server Menagement Studio, и в ней добавить
> новую таблицу в базу. Все в гриде, и добавляется и редактируется.
>
> И где там чего не понятно, и капец всему? Или там писали
> инопланетяне? :)

пересадить всех бухгалтеров на нее


 
O'ShinW ©   (2012-12-28 14:40) [80]

Ганс вроде прав :)

хоть ADOTable базируется на TCustomADODataSet, откуда ноги у всех растут, но
вводится режим TableDirect, что делает - не понятно, но не поддерживает события

например
procedure TCustomADODataSet.EnableEvents;
   if (CommandType = cmdTableDirect)

then
     DatabaseError(SEventsNotSupported);



Страницы: 1 2 3 вся ветка

Форум: "Прочее";
Текущий архив: 2013.04.28;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.65 MB
Время: 0.005 c
15-1356650625
ННН
2012-12-28 03:23
2013.04.28
Где находится IE?


15-1356642898
ННН
2012-12-28 01:14
2013.04.28
Подскажите программу для перехвата DEBUG-сообщений.


15-1356681047
Dmitry1987
2012-12-28 11:50
2013.04.28
Verisign vs GlobalSign


15-1356686287
QAZ9
2012-12-28 13:18
2013.04.28
Подсветка синтаксиса


2-1349768093
thely
2012-10-09 11:34
2013.04.28
показ информ окна





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский