Гость
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Подскажите с технологиями. / 25 сообщений из 39, страница 1 из 2
20.07.2016, 13:29
    #39277059
guest_12112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
Есть информационная система.
На данный момент она двухзвенная: WinForms Client + MS SQL Server.
Работает только во внутренней сети. Количество пользователей обычно 5-30, windows authentication.

Заказчик хочет переделать ее в трехзвенную. То есть нужно написать сервер приложений и механизм общения сервера с клиентами.

В будущем возможно потребуется поддержка работы через web. Хотелось бы заложить реализацию такой возможности в архитектуру, но только если это не скажется существенно на увеличении объема работы сейчас.

Подскажите какие технологии на сегодня для этого актуальны?
А так же если смысл переходить на WPF c WinForms?

Спасибо.
...
Рейтинг: 0 / 0
20.07.2016, 13:55
    #39277091
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
guest_12112Заказчик хочет переделать ее в трехзвенную.
Выкати ему шестизначный счёт и его хотелка резко скукожится.
...
Рейтинг: 0 / 0
20.07.2016, 15:28
    #39277156
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
>guest_12112
... Подскажите ...
1. Приглядись к сервисам WCF (3-й слой).
2. Попробуй сам написать приложение на WPF - начнёшь спотыкаться, то сюда и сюда .

С уважением,
Владимир
...
Рейтинг: 0 / 0
20.07.2016, 22:15
    #39277383
sereginseregin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
guest_12112Есть информационная система.
На данный момент она двухзвенная: WinForms Client + MS SQL Server.
Работает только во внутренней сети. Количество пользователей обычно 5-30, windows authentication.

Заказчик хочет переделать ее в трехзвенную. То есть нужно написать сервер приложений и механизм общения сервера с клиентами.

В будущем возможно потребуется поддержка работы через web. Хотелось бы заложить реализацию такой возможности в архитектуру, но только если это не скажется существенно на увеличении объема работы сейчас.

Подскажите какие технологии на сегодня для этого актуальны?
А так же если смысл переходить на WPF c WinForms?

Спасибо.

Зачем городить посредника, если всю логику проще и быстрее выполнять на СУБД через хранимые процедуры.

В той же 1с сервер приложений полезен только из-за бедности языка запросов и отсутствия хранимых процедур на уровне СУБД. Недавно экспериментировал с 1с, оказалось, что вызов процедуры с простым выражением "А=1+1" на сервере приложения в 3 раза медленнее запроса "ВЫБРАТЬ 1+1 КАК А" в файловой СУБД на этой же платформе
...
Рейтинг: 0 / 0
20.07.2016, 23:54
    #39277407
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
>sereginseregin
> ... всю логику проще и быстрее выполнять на СУБД через хранимые процедуры

Не могу с Вами согласиться. Многое зависит от задачи.

Вот фрагмент листинга работы со списками объектов, имеющих географические координаты:
Полученная по запросу из базы данных выборка представлена на компьютере рабочего места (сервера приложений) в форме списка (List<>) или ObservableCollection<>.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
. . .      
      //-- Получим информацию с сервера данных
      f_ВД(гп.oradb);  //-- lst_ВД <-- выборка

      //-- Формируем дополнительный список мест объектов, сгруппированных по "близости" географических координат
      lst_Места = new List<row_Место>();

      for (int i = 0; i < lst_ВД.Count; i++) {
        row_ВД xobj = lst_ВД[i];
        //        int rint = lst_Места.FindIndex((row_Место row) => (row.lat == xobj.lat) && (row.lng == xobj.lng));
        int ilat = (int)(xobj.lat * 10 + 0.5);
        int ilng = (int)(xobj.lng * 10 + 0.5);
        int rint = lst_Места.FindIndex((row_Место row) => ((int)(row.lat * 10 + 0.5) == ilat) && ((int)(row.lng * 10 + 0.5) == ilng));

        //-- В списке lst_Места уже есть объект с такими же географическими координатами ? 
        if (rint == -1) {  //-- Нет. Дополняем список
          row_Место row = new row_Место();
          row.blm = false;
          row.blk = false;
          row.lat = xobj.lat;
          row.lng = xobj.lng;
          lst_Места.Add(row);
        }
        else { //-- Да. Место для многих объектов
          lst_Места[rint].blm = true;
        }
      }
. . .


Как Вы это реализуете хранимой процедурой?

С уважением,
Владимир.
...
Рейтинг: 0 / 0
21.07.2016, 09:13
    #39277506
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
Dimitry Sibiryakovguest_12112Заказчик хочет переделать ее в трехзвенную.
Выкати ему шестизначный счёт и его хотелка резко скукожится.
В какой валюте?
...
Рейтинг: 0 / 0
21.07.2016, 11:01
    #39277614
guest_12112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
sereginsereginguest_12112Есть информационная система.
На данный момент она двухзвенная: WinForms Client + MS SQL Server.
Работает только во внутренней сети. Количество пользователей обычно 5-30, windows authentication.

Заказчик хочет переделать ее в трехзвенную. То есть нужно написать сервер приложений и механизм общения сервера с клиентами.

В будущем возможно потребуется поддержка работы через web. Хотелось бы заложить реализацию такой возможности в архитектуру, но только если это не скажется существенно на увеличении объема работы сейчас.

Подскажите какие технологии на сегодня для этого актуальны?
А так же если смысл переходить на WPF c WinForms?

Спасибо.

Зачем городить посредника, если всю логику проще и быстрее выполнять на СУБД через хранимые процедуры.

В той же 1с сервер приложений полезен только из-за бедности языка запросов и отсутствия хранимых процедур на уровне СУБД. Недавно экспериментировал с 1с, оказалось, что вызов процедуры с простым выражением "А=1+1" на сервере приложения в 3 раза медленнее запроса "ВЫБРАТЬ 1+1 КАК А" в файловой СУБД на этой же платформе

Сейчас все так и работает, через хранимые процедуры.
3 уровень нужен по нескольким причинам.
1. заказчик получил такую рекомендацию от аудитора безопасности. Аудитор утверждает что двухзвенная архитектура не достаточно безопасна в сравнении с трехзвенной.
2. параллельная работа нескольких пользователей с одним объектом.
3. доступ через веб(возможно в будущем)
...
Рейтинг: 0 / 0
21.07.2016, 12:34
    #39277721
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
guest_12112,

п 3 - может быть реализован и без перекройки
...
Рейтинг: 0 / 0
21.07.2016, 12:38
    #39277726
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
>guest_12112
>... Аудитор утверждает что ...
Если возможно, то что конкретно.

С уважением,
Владимир.
...
Рейтинг: 0 / 0
21.07.2016, 13:51
    #39277834
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
guest_121123 уровень нужен по нескольким причинам.
1. Аудитор бредит. Добавь один нолик к сумме.
2. Трёхзвенка никак этому не помогает.
3. Совершенно не нуждается в третьем звене: уэб-приложения работают непосредственно с базой не хуже, чем через кривую прокладку.
...
Рейтинг: 0 / 0
21.07.2016, 14:37
    #39277898
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
Dimitry Sibiryakov1. Аудитор бредит. Добавь один нолик к сумме.
+1
))
...
Рейтинг: 0 / 0
21.07.2016, 14:39
    #39277901
guest_12112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
Dimitry Sibiryakovguest_121123 уровень нужен по нескольким причинам.
1. Аудитор бредит. Добавь один нолик к сумме.
2. Трёхзвенка никак этому не помогает.
3. Совершенно не нуждается в третьем звене: уэб-приложения работают непосредственно с базой не хуже, чем через кривую прокладку.

Можно подробней про 2 и 3?
Спасибо.
...
Рейтинг: 0 / 0
21.07.2016, 14:40
    #39277905
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
guest_12112Можно подробней про 2
- чем больше прослоек от скретных данных к клиенту, тем больше потенциальных ошибок и ниже безопасность.
...
Рейтинг: 0 / 0
21.07.2016, 14:42
    #39277907
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
guest_12112и 3
Веб проект это новый отдельный проект дажу у MS с его сильвером.
...
Рейтинг: 0 / 0
21.07.2016, 14:44
    #39277910
guest_12112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
Аудитор вполне здравомыслящий.
проверка двухзвенной системы = Х денег.
проверка трехзвенной системы еще = Х+У денег.
))
...
Рейтинг: 0 / 0
21.07.2016, 15:00
    #39277933
guest_12112
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
Petro123guest_12112Можно подробней про 2
- чем больше прослоек от скретных данных к клиенту, тем больше потенциальных ошибок и ниже безопасность.

п2 был про параллельную работу нескольких пользователей с одним объектом.
Как без сервера приложений всех пользователей просматривающих какой то объект уведомить о том что объект вдруг кем то изменен?
...
Рейтинг: 0 / 0
21.07.2016, 15:23
    #39277977
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
guest_12112п2 был про параллельную работу нескольких пользователей с одним объектом.
Как без сервера приложений всех пользователей просматривающих какой то объект уведомить о том что объект вдруг кем то изменен?
т.е. как? Такой простой вопрос?
- куча вариантов:
1) Нужно назвать не объект - а Бизнес объект (сущность). Т.к. например "Адрес" может быть сущностью, а может быть просто строкой.
2) Напр. Бизнес объект адрес можно заблокировать (методы блокировки).
Уведомления в 3-х звенке абсолютно те же что и в двух звенке.
--------
Вы уверены что хотите чтобы сервер САМ уведомлял? (нагрузка в разы). А не по требованию клиента?
...
Рейтинг: 0 / 0
21.07.2016, 22:54
    #39278257
sereginseregin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
ВМоисеев>sereginseregin

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
. . .      
      //-- Получим информацию с сервера данных
      f_ВД(гп.oradb);  //-- lst_ВД <-- выборка

      //-- Формируем дополнительный список мест объектов, сгруппированных по "близости" географических координат
      lst_Места = new List<row_Место>();

      for (int i = 0; i < lst_ВД.Count; i++) {
        row_ВД xobj = lst_ВД[i];
        //        int rint = lst_Места.FindIndex((row_Место row) => (row.lat == xobj.lat) && (row.lng == xobj.lng));
        int ilat = (int)(xobj.lat * 10 + 0.5);
        int ilng = (int)(xobj.lng * 10 + 0.5);
        int rint = lst_Места.FindIndex((row_Место row) => ((int)(row.lat * 10 + 0.5) == ilat) && ((int)(row.lng * 10 + 0.5) == ilng));

        //-- В списке lst_Места уже есть объект с такими же географическими координатами ? 
        if (rint == -1) {  //-- Нет. Дополняем список
          row_Место row = new row_Место();
          row.blm = false;
          row.blk = false;
          row.lat = xobj.lat;
          row.lng = xobj.lng;
          lst_Места.Add(row);
        }
        else { //-- Да. Место для многих объектов
          lst_Места[rint].blm = true;
        }
      }
. . .


Как Вы это реализуете хранимой процедурой?


Если я правильно понял листинг:
Из одного списка получаем другой, группируя по округленным координатам (int)(lat * 10 + 0.5) и (int)(lng * 10 + 0.5), указывая флаг blm в true, если записей с похожими координатами > 1


Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT 
  count(*)>1 AS blm,
  false AS blk,
  max(lat) AS lat,
  max(lng) AS lng
FROM lst_ВД 
GROUP BY CAST(lat * 10 + 0.5 AS int), CAST(lng * 10 + 0.5 AS int)
...
Рейтинг: 0 / 0
22.07.2016, 00:10
    #39278271
ВМоисеев
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
>sereginseregin
>Если я правильно понял ...

Вы правильно поняли.
Спасибо за ответ, Вы мне помогли.

С уважением,
Владимир
...
Рейтинг: 0 / 0
22.07.2016, 07:06
    #39278317
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
Petro123guest_12112Можно подробней про 2
- чем больше прослоек от скретных данных к клиенту, тем больше потенциальных ошибок и ниже безопасность.

Э-э-э с точностью до наоборот.
Количество ошибок не зависит от количества слоев в приложении.
А вот безопасность - зависит.

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

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

Плюс SQL-injection.

Это не говоря уже о том, что РМД это ограниченная модель и она не всегда точно отражает предметную область.
...
Рейтинг: 0 / 0
22.07.2016, 09:28
    #39278362
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
guest_12112Как без сервера приложений всех пользователей просматривающих какой то объект уведомить о том что объект вдруг кем то изменен?Сервер приложений нужен для конкретных целей. Да, вот если нужно уведомлять пользователей об изменении объектов, то он нужен (точнее, без него это реализовать сложнее, и это + в пользу сервера приложений).

Хотя, конечно, в реальности такое требование встречается редко. Вот тут мы обходимся без уведомления о изменении ветки, которую смотрим, и слава богу.
Соответственно, обычно пользователи работают параллельно с одним объектом и вполне успешно обходятся без уведомлений.
...
Рейтинг: 0 / 0
22.07.2016, 09:48
    #39278380
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
mad_nazgulА когда все данные в БД и к нему напрямую обращаются из приложения с которым работают пользователи, то получение секретных данных это вопрос выковыривания логина и пароля к БД. :-)

Плюс SQL-injection.Если так писать трёхуровневые приложения (то есть у всех один логин с админскими полномочиями, и запросы склеиваются из строк), то безопасности будет ещё меньше, чем в двухуровневом :-)
...
Рейтинг: 0 / 0
22.07.2016, 12:27
    #39278539
LSV
LSV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
Да, вот если нужно уведомлять пользователей об изменении объектов, то он нужен точнее, без него это реализовать сложнееДа неужели!! Какая проблема раз в хх_сек перезапросить какую-нить крошечную табличку со списком измененных объектов ? :)
...
Рейтинг: 0 / 0
22.07.2016, 12:37
    #39278564
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
всё таки прав
Dimitry Sibiryakov
во втором посте))
...
Рейтинг: 0 / 0
23.07.2016, 16:17
    #39279153
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подскажите с технологиями.
ВМоисеевКак Вы это реализуете хранимой процедурой?
Проще и эффективнее.

Код: plsql
1.
select distinct latitude, longitude from places


И никакого O(n^2), который Вы ухитрились организовать на O(n) задаче.
...
Рейтинг: 0 / 0
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Подскажите с технологиями. / 25 сообщений из 39, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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