powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Качественная разработка приложений
25 сообщений из 77, страница 1 из 4
Качественная разработка приложений
    #34868567
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю куда написать видимо сюда. Пишу приложения, и вдруг ловлю себя на мысли что я делаю это не так! Пишу обычные клиентские приложения под БД на C#.NET 2.0. Ощущение что я это делаю не так. Вроде все как обычно создается MDI-приложение. Главное меню, огромное количество дочерних окон.В базе пишется огромное количество хранимых процедур,для вставки,изменения,просмотра записей.В проекте для большей скорости не используются DataSet'ы. Настройки программы сохраняются, в файлах, имеющих "свой" формат (не XML).
Почти вручную заполняется DataGridView. Вручную же и ловятся выделенные в нем записи для изменения. Для обработки хранимых процедур пишется огоромное количество монотонного кода, разница в нем только кол-во параметров и название процедур.

Ощущение что я код пишу как то по старым привычкам, что есть уже новый подход, и приложения пишутся намного быстрее или я не прав ?

http://webusblog.blogspot.com/
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34868743
sopromat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webusДля обработки хранимых процедур пишется огоромное количество монотонного кода, разница в нем только кол-во параметров и название процедур.Имхо, это причина Ваших ощущений.
В красиво спроектированной системе кол-во повторяющегося кода стремится к нулю.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34870723
Фотография Программист-Любитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть хорошая книжка на эту тему "Архитектура корпоративных программных приложений" Мартин Фаулер.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34870734
Фотография webus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительЕсть хорошая книжка на эту тему "Архитектура корпоративных программных приложений" Мартин Фаулер.

как раз щас читаю :)
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34872024
jikez
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
покажи пример того что делаешь?
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34872272
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webusОщущение что я код пишу как то по старым привычкам, что есть уже новый подход, и приложения пишутся намного быстрее или я не прав ?
Правы. И радует, что хоть кого-то еще посещают такие мысли.

Новый подход есть примерно с 1955-го года - называется "выделение стандартных подпрограмм". К настоящему времени он весьма и весьма развит.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34872954
Так_забежал_просто
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerНовый подход есть примерно с 1955-го года - называется "выделение стандартных подпрограмм". К настоящему времени он весьма и весьма развит.
По моим ощущениям, его иногда не хватает... И приходится использовать кодогенерацию (в т.ч. "на лету") или макрогенерацию. Тоже, конечно, старо как мир. Но народ начал про это забывать, а сейчас это снова становится модно - на этом Rails выезжает. Количество кода может сократиться довольно существенно, но сам язык при этом опасный - при компиляции почти ничего не проверяется.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34873282
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>webus
> ... В проекте для большей скорости не используются DataSet'ы ...
После проверки ряда вариантов пришел к выводу, что имеет смысл использовать DataSet на клиенте. Только заполнять таблицу строками выборки так:
...
SqlConnect conn= new SqlConnect(...);
SqlCommand cmd= new SqlCommand("select ...")
SqlDtaReader rdr = null;
try {
conn.Open(); //-- откроем соединение
rdr=cmd.ExecuteReader();
while(rdr.Read()) {
//-- Из строки формируем объект
//-- Запись объекта в таблицу DataSet
Table[0].LoadDataRow(obj,true);
}
rdr.Close();
catch (SqlException se) { ... }
catch (Exception e) { ... }
finally {
if((rdr != null) && !rdr.IsCloseed) rdr.Close();
cmd.Dispose();
if(conn.State==ConnectionState.Open) conn.Close();
}
...
Нудно конечно.
Только надо помнить, что Dataset - почти база данных, но в оперативной памяти клиента. Поэтому - страничная подкачка.

> ... Почти вручную заполняется DataGridView ...
Имеет смысл связать его с таблицей DataSet (если он присутствует).

С уважением, Владимир.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34873431
Alexsalog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webusНе знаю куда написать видимо сюда. Пишу приложения, и вдруг ловлю себя на мысли что я делаю это не так! Пишу обычные клиентские приложения под БД на C#.NET 2.0. Ощущение что я это делаю не так. Вроде все как обычно создается MDI-приложение. Главное меню, огромное количество дочерних окон.В базе пишется огромное количество хранимых процедур,для вставки,изменения,просмотра записей.В проекте для большей скорости не используются DataSet'ы. Настройки программы сохраняются, в файлах, имеющих "свой" формат (не XML).
Почти вручную заполняется DataGridView. Вручную же и ловятся выделенные в нем записи для изменения. Для обработки хранимых процедур пишется огоромное количество монотонного кода, разница в нем только кол-во параметров и название процедур.

Ощущение что я код пишу как то по старым привычкам, что есть уже новый подход, и приложения пишутся намного быстрее или я не прав ?

http://webusblog.blogspot.com/

В NET есть генерики, а вот на уровне SQL серверов нет. И я бы сказал - не хватает.

Или приходится генерить налету sql код в клиентском приложении.

Или тупо и монотонно писать дикое количество созраненных процедур и функций с тупо и монотоноо повторяющимся кодом.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34875650
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>webus
> ... В проекте для большей скорости не используются DataSet'ы ...
После проверки ряда вариантов пришел к выводу, что имеет смысл использовать DataSet на клиенте. Только заполнять таблицу строками выборки так:
...
SqlConnect conn= new SqlConnect(...);
SqlCommand cmd= new SqlCommand("select ...")
SqlDtaReader rdr = null;
try {
conn.Open(); //-- откроем соединение
rdr=cmd.ExecuteReader();
while(rdr.Read()) {
//-- Из строки формируем объект
//-- Запись объекта в таблицу DataSet
Table[0].LoadDataRow(obj,true);
}
rdr.Close();
catch (SqlException se) { ... }
catch (Exception e) { ... }
finally {
if((rdr != null) && !rdr.IsCloseed) rdr.Close();
cmd.Dispose();
if(conn.State==ConnectionState.Open) conn.Close();
}
...
Нудно конечно.
Только надо помнить, что Dataset - почти база данных, но в оперативной памяти клиента. Поэтому - страничная подкачка.

> ... Почти вручную заполняется DataGridView ...
Имеет смысл связать его с таблицей DataSet (если он присутствует).

С уважением, Владимир.

То же самое делает Адаптер.Филл
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34876864
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexsalog

Или приходится генерить налету sql код в клиентском приложении.



трындец sql серверу.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34877023
Alexsalog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lepsik Alexsalog

Или приходится генерить налету sql код в клиентском приложении.



трындец sql серверу.

Почему? из за накладных расходов на компиляцию запроса на сервере?
В Оракле есть связанные переменные - да. Тут и Том Кайт советует и примеры дает - хотя в этой области я начинающий. В практической работе запрос все равно формируется как строка на клиентской стороне и отправляется посредством
Код: plaintext
CommandText = "...";

В MS SQL - если sql запрос посылается с клиентской стороны, то я вообще не знаю у него никаких возможностей "предкомпиляции".

А ради:
Код: plaintext
insert into sometable (f1,f2...) values(...) 
писать SP - ну не знаю....
Можно коенчно и на это идти - ради "оптимизации", но именно это и превращает разработку в тот монотонный и повторяющийся процесс о котором говорилось в начале.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34877118
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexsalog Lepsikтрындец sql серверу.
Почему?
Забейте. Меня бы в принципе не огорчило, если бы sql серверу настал трындец, но я как-то долго выяснял этот вопрос с pkarklin-ым и Merle (одни из главным mssql-щиков здесь и на rsdn соответственно) и один из итоговых ответов был - MSSQL вполне нормально живет с клиентскими запросами, действуя примерно так же, как Oracle в режиме cursor_sharing=force.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34877453
Alexey Kudinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Программист-ЛюбительЕсть хорошая книжка на эту тему "Архитектура корпоративных программных приложений" Мартин Фаулер. А еще он про рефакторинг написал.

Вместе эти книги образуют совершенно термоядерную смесь - гарантированно можно угробить любой проект, если немедленно бросаться реализовывать все что там написано.
webusОщущение что я код пишу как то по старым привычкам, что есть уже новый подход, и приложения пишутся намного быстрее или я не прав ? Намного быстрее они не пишутся, т.к. кодирование - это не самое главное.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34877494
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexsalogИли тупо и монотонно писать дикое количество созраненных процедур и функций с тупо и монотоноо повторяющимся кодом.
Есть прекрасные кодогенераторы(например,codesmith) c готовыми шаблонами для генерации процедур(впрочем, и любого кода).Затачиваешь их под себя, и весь гемморой сводиться к выбору имени таблицы.Никто не мешает подобным образом формировать весь необходимый винигрет:процедуры(запросы), классы для работы с БД(существуют шаблоны для многих ORM и DAL) и необходимые формы.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34877730
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Kudinov
Вместе эти книги образуют совершенно термоядерную смесь - гарантированно можно угробить любой проект, если немедленно бросаться реализовывать все что там написано.

да уж.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34878073
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем бросаться?Многое из того, что там написано уже реализовано:CAB,SCSF,EntLib,Spring и тд.
Может быть взять это и заточить под себя? Пример - cabana .Более легкий вариант - самопальный CAB
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34878234
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
webusНе знаю куда написать видимо сюда. Пишу приложения, и вдруг ловлю себя на мысли что я делаю это не так! Пишу обычные клиентские приложения под БД на C#.NET 2.0. Ощущение что я это делаю не так. Вроде все как обычно создается MDI-приложение. Главное меню, огромное количество дочерних окон.В базе пишется огромное количество хранимых процедур,для вставки,изменения,просмотра записей.В проекте для большей скорости не используются DataSet'ы. Настройки программы сохраняются, в файлах, имеющих "свой" формат (не XML).
Почти вручную заполняется DataGridView. Вручную же и ловятся выделенные в нем записи для изменения. Для обработки хранимых процедур пишется огоромное количество монотонного кода, разница в нем только кол-во параметров и название процедур.

Ощущение что я код пишу как то по старым привычкам, что есть уже новый подход, и приложения пишутся намного быстрее или я не прав ?

http://webusblog.blogspot.com/
Да нового подхода нет. Просто с ростом сложности и объёма проект перестаёт укладываться в голове и становится проще написать заново, чем искать уже написанное. Поэтому чтобы избавиться от монотонного кодирования - очень полезно проектировать до и документировать после. И ещё иметь хотя бы в голове представление о целях, которые преследует пользователь. Может, то что ему действительно нужно, можно реализовать по-другому, проще и быстрее, а то, что является лишним "бантиком" - просто выкинуть?
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34879462
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Сахават Юсифов
>То же самое делает Адаптер.Филл

Вы правы - da.Fill даст такой же результат.
Но:
1. Скорострельность.
2. Разработчик должен владеть несколькими методами работы с базой данных.
3. Длинный и нудный вариант дает возможность оперировать с каждой строкой выборки. Её можно сериализовать и отправить, к примеру в двоичный файл. Мы же помним, что DataSet располагается в оперативной памяти, а её объём межет быть не соизмерим с объёмом выборки. Посмотри не превзято на такой вариант - в прикладную систему по каким-то соображениям введен app-сервер (AS). Его реализацией может быть и такая - Web-service поверх host-а IIS (например). Клиент же - нормальное WinForm приложение.
AS располагается в локальной сети с сервером данных. Метод AS делает запрос к серверу данных и получает в ответ выборку, которую должен передать клиентскому приложению. Нужно ли AS использовать DataSet. Можно, но право не стоит. DataSet содержит избыточную информацию.
Я сериализую выборку по-строчно с записью в MemoryStream, результат сжимаю (zip) и шифрую. И вот этот результат передаю клиентскому приложению. И только здесь на клиенте, для графических компонентов отображения, записываю выборку в таблицу локального DataSet.

С уважением, Владимир.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34879478
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев>Сахават Юсифов
>То же самое делает Адаптер.Филл

Вы правы - da.Fill даст такой же результат.
Но:
1. Скорострельность.
2. Разработчик должен владеть несколькими методами работы с базой данных.
3. Длинный и нудный вариант дает возможность оперировать с каждой строкой выборки. Её можно сериализовать и отправить, к примеру в двоичный файл. Мы же помним, что DataSet располагается в оперативной памяти, а её объём межет быть не соизмерим с объёмом выборки. Посмотри не превзято на такой вариант - в прикладную систему по каким-то соображениям введен app-сервер (AS). Его реализацией может быть и такая - Web-service поверх host-а IIS (например). Клиент же - нормальное WinForm приложение.
AS располагается в локальной сети с сервером данных. Метод AS делает запрос к серверу данных и получает в ответ выборку, которую должен передать клиентскому приложению. Нужно ли AS использовать DataSet. Можно, но право не стоит. DataSet содержит избыточную информацию.
Я сериализую выборку по-строчно с записью в MemoryStream, результат сжимаю (zip) и шифрую. И вот этот результат передаю клиентскому приложению. И только здесь на клиенте, для графических компонентов отображения, записываю выборку в таблицу локального DataSet.

С уважением, Владимир.

Владимир, это не АС, а какой-то приемопередатчик (это делают обычно, что бы обойтись НТТП только). Нормальный :) АС должен что-то кешировать, агрегировать, преобразовать и т.д., т.е. облеченный СУБД специализированный типа. Вот ту то и датасет и дататейбл и т.д. очень даже нужны.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34879479
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WCF очень даже.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34879827
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Сахават Юсифов
>Владимир, это не АС, а какой-то приемопередатчик. ...

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

Сейчас также пытаюсь перебраться на WCF. Пока со скрипом.

С уважением, Владимир
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34879850
мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават ЮсифовНормальный :) АС должен что-то кешировать, агрегировать, преобразовать и т.д.
Ничего этого "Нормальный АС" делать не должен - он просто исполняет приложения - его клиент - простой терминал: экран + клава + мыша + эмулятор.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34881417
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мод Сахават ЮсифовНормальный :) АС должен что-то кешировать, агрегировать, преобразовать и т.д.
Ничего этого "Нормальный АС" делать не должен - он просто исполняет приложения - его клиент - простой терминал: экран + клава + мыша + эмулятор.
Ну да. Я имел ввиду начинку, а Вы хость для начинки.
...
Рейтинг: 0 / 0
Качественная разработка приложений
    #34881419
Сахават Юсифов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сахават Юсифов мод Сахават ЮсифовНормальный :) АС должен что-то кешировать, агрегировать, преобразовать и т.д.
Ничего этого "Нормальный АС" делать не должен - он просто исполняет приложения - его клиент - простой терминал: экран + клава + мыша + эмулятор.
Ну да. Я имел ввиду начинку, а Вы хость для начинки.
блин, как только появляется буква "т" в конце слова, так пальцы автомать ставят :) "ь". Что за фигня :(
...
Рейтинг: 0 / 0
25 сообщений из 77, страница 1 из 4
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Качественная разработка приложений
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]