|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
Добрый день форумчане. Мне нужно сделать интеграцию с системой Реформа ЖКХ. Для работы с БД выбран MS SQL Server 2012 В качестве интерфейсной части выбран Win.Forms, пишем на C#. Эти исходные поменять скорее всего не получится. При использовании API из реформы приходят данные, объекты или массивы объектов, которые в свою очередь содержат как примитивы так и другие объекты или массивы и так может быть несколько уровней вложенности. При работе с интерфейсом нужно обрабатывать эти данные, чаще всего стандартные CRUD-операции. Чем можно и нужно работать в данном случае? Я надеюсь разделом форума не ошибся) Вопрос возник потому что я не знаю фреймворков и учил только основы Java SE и чуть чуть SQL :D Это отдельная история, задание для меня сейчас сложновато, но нужно делать) Главный вопрос: есть ли возможность уйти от 6-7 уровней вложенных циклов, каждый из которых содержит еще кучу ветвлений ? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2016, 15:49 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
Ну у них шикарная документация, всё предельно понятно https://www.reformagkh.ru/misc/reglament_api.doc Добавляешь ссылку на их сервис и согласно документации вызываешь методы https://msdn.microsoft.com/en-us/library/bb628649(v=vs.120).aspx ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2016, 15:57 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
Да с документацией всё ок, всю структуру БД я уже сделал, методы тоже вызываю, вопрос в том, как правильно обработать полученные данные, чтобы не писать огромные портянки кода? Мне хотя бы понять в какую сторону смотреть, NHibernate? это как в джаве? впрочем я и в джаве пока только сделал простенький HelloWorld с гибернейтом. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2016, 16:02 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
archeliteвопрос в том, как правильно обработать полученные данные, чтобы не писать огромные портянки кода? Обрабатывать - это записать в БД? Entity Framework. archeliteNHibernate? Да, любую ORM. Но лучше EF. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2016, 16:31 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
archeliteNHibernate? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2016, 16:34 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
какой есть хороший туториал по Entity Framework на ваш взгляд? msdn? особенно интересует возможность генерации классов по существующим в БД таблицам и связывание таблиц между собой ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2016, 17:41 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2016, 18:03 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
archelite, насчёт генерации классов, EF это умеет, существуют инструменты. но лучше рассмотреть обратный случай: генерации БД из классов со всеми связями, это его самая сильная сторона, так как поддерживает ручные и автоматические миграции. раз попробуешь, не захочешь отказаться никогда :) ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2016, 18:05 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
hVosttгенерации БД из классов со всеми связями ...миграции Бесполезная функция для корпоратива. Никто не даст учеткам апп / пула для обновлении схемы данных. Только полноценный VS Database Project со всей его фундаментальностью и мощью. Миграции - детская шелуха для дева и теста. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2016, 19:09 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
СмузиhVosttгенерации БД из классов со всеми связями ...миграции Бесполезная функция для корпоратива. Никто не даст учеткам апп / пула для обновлении схемы данных. Только полноценный VS Database Project со всей его фундаментальностью и мощью. Миграции - детская шелуха для дева и теста. Это речь старпёра, который держится за свой SQL из последних своих сил. Говорю по существу, уже много проектов, и крупных, секьюрных и ответственных, было выпущено на миграциях. В начале тоже было много сомнений, отдельные упоротые SQL-щики из последних сил бодались и яростно защищали свой любимый дизайн БД, боясь странного и неизведанного. Тут главное не засцать, и всё будет путём :) Миграции -- величайший вин. Насчёт каких-то там учёток с правами, знаешь, я разницы не вижу, грохнешь ли ты таблицу, или покоцаешь данные — однофигственно. Поэтому это всё детские страхи. От бекапов никуда не денешься, все миграции проверяются на ряде стендов, пока доходят до релиза. CI понимаешь. Зато в базу ручонками никто не лезет. Всё под полным контролем. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 07:15 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
hVostt, сразу видно, что дальше десятка таблиц в БД ты не ходил :) В корпоративе есть четкое разделение между dev, quality assurance, quality control, app admins, dba. Никто ни разработчику не даст права в прод. Никто не даст права учетной записи app / pool на изменение схемы данных. Есть четкое разделение ответственности, причем тут "упоротые SQL-щики"? Дев выкатывает change requests, прикладывает документ с обновления с нужными скриптами в пакете. Никто не пишет никакой SQL. В MS Database Project достаточно инструментов для ведения схемы, данных, генерации схемы, генерации тестовых данных, merge в обе стороны, sync, много всего. Миграции это детский сад по сравнению с MS Database Project :) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 09:31 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
СмузиhVostt, сразу видно, что дальше десятка таблиц в БД ты не ходил :) Ты кажется не понимаешь о чём говоришь. Количество таблиц? Ты смешон. Текущая разработка над которой мы работаем генерирует тысячи таблиц, любой ДБА там встанет раком и возопит «помилуйте». СмузиНикто не даст права учетной записи app / pool на изменение схемы данных. Есть четкое разделение ответственности, причем тут "упоротые SQL-щики"? Дев выкатывает change requests, прикладывает документ с обновления с нужными скриптами в пакете. С таким подходом вы просто бездарно тратите время и деньги компании на чушь, которую можно полностью автоматизировать. Кто виноват, что в разработку просочились неандертальцы? Ты мне скажи, в чём принципиальная разница между изменением схемы и данных? Я вижу разницу только в том, кто это делает. Приложение делает это по заданным оттестированным, проверенным и надёжным алгоритмам. СмузиНикто не пишет никакой SQL. В MS Database Project достаточно инструментов для ведения схемы, данных, генерации схемы, генерации тестовых данных, merge в обе стороны, sync, много всего. Миграции это детский сад по сравнению с MS Database Project :) Под SQL я имею в виду ручную манипуляцию схемой и данными. Как именно ты это будешь делать, писать SQL, или возить мышкой в дизайнере -- не имеет значения. При чём, никто не мешает писать тебе тот же SQL в миграции. Фишка в том, что количество затраченного времени сокращается колоссально, это проверено опытном путём за последние годы разработки. Никто больше не возится с проектами БД, тем более, что баз данных гораздо больше, чем одна. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 10:07 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
hVosttТекущая разработка над которой мы работаем генерирует тысячи таблиц, любой ДБА там встанет раком и возопит «помилуйте». Чем твоя генерация тысячи таблиц отличается от генерации тысячи таблиц в MS Database Project? hVosttС таким подходом вы просто бездарно тратите время и деньги компании на чушь, которую можно полностью автоматизировать. Кто виноват, что в разработку просочились неандертальцы? Есть уровни ответственности. Обновление данных / схемы на продуктиве - это не ответственность разработчика как по вопросам безопасности, так и по вопросам той самой ответственности. Пойди предложи накатить EF-миграцию в каком-нибудь Альфа банке, тебя кастрируют еще на подходе к данному уровню hVosttТы мне скажи, в чём принципиальная разница между изменением схемы и данных? 1. Никакой разницы с точки зрения ответственности (регламент по сопровождению приложений, в частности change request). 2. Огромная разница с точки зрения ответственности (работающее приложение). P.S. Хвост, это мой последний пост по теме. Ибо чистый оффтоп. Если ты понял суть, молодец. Если нет, продолжай решать свои школьные миграции, я не против. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 10:20 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
СмузиЧем твоя генерация тысячи таблиц отличается от генерации тысячи таблиц в MS Database Project? Тем что она напрямую связана с кодом. Коду нужна таблица, она будет создана. Коду нужно поле в таблице, оно будет создано. Коду нужна связь. Она будет создана. Не нужно привлекать дополнительные силы, чтобы проверять требуемое соответствие. Не нужно сначала создавать таблицу, потом писать код. Не нужно писать код, потом лезть в дизайнер и сверяясь с названиями создавать нужную структуру. Всё это автоматизировано. СмузиЕсть уровни ответственности. Обновление данных / схемы на продуктиве - это не ответственность разработчика как по вопросам безопасности, так и по вопросам той самой ответственности. Пойди предложи накатить EF-миграцию в каком-нибудь Альфа банке, тебя кастрируют еще на подходе к данному уровню Я ещё раз повторю. Чем отличается возможность изменять данные и возможность изменять схему с точки зрения безопасности? Говоря об Альфа-Банке, пользователя волнует состояние и безопасность счёта, данные и схема здесь в абсолютно равной позиции. По поводу накатывания миграци. Чем это отличается от накатыванием изменений в БД другим инструментом? Если ты делаешь это вручную, то яйца твои останутся в целости? Не смеши. Смузи1. Никакой разницы с точки зрения ответственности (регламент по сопровождению приложений, в частности change request). 2. Огромная разница с точки зрения ответственности (работающее приложение). Поясни конкретно в чём разница по пункту 2? Если приложение само контролирует схему, которая нужна ему для работы и гарантирует, что она будет содержать всё нужное, то здесь только плюсы. Минусы какие? СмузиP.S. Хвост, это мой последний пост по теме. Ибо чистый оффтоп. Если ты понял суть, молодец. Если нет, продолжай решать свои школьные миграции, я не против. Ты один в один повторяешь когда-то прошедшие у нас дискуссии. Суть не в том, чтобы переубедить. А выбрать наиболее эффективное решение, даже по религиозным соображениям кто-то против. Религия это тонкая материя, но хорошо отсекаемая в корпоративном ключе. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 10:41 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
спасибо за ссылку, пойду вникать) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2016, 12:54 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
Умные люди, помогите пожалуйста нубу) Как правильно организовать структуру БД, чтобы на неё можно было натравить EntityFramework? При вызове метода API мне приходит Object, который имеет древовидную структуру. Например: объект - GetCompanyProfileResponse содержит поля INT - inn, String - name_full, String - name_short, Object[] - company_profile_data, Object[] - files_info. Массивы объектов в свою очередь содержат примитивы и другие массивы объектов и так далее в глубину. Сейчас есть готовая структура таблиц и я сгенерировал структуру классов при помощи Entity Database First как показано здесь http://metanit.com/sharp/entityframework/2.4.php , но еще не делал связи(только расставил Primary Key) Как правильно сделать связь между таблицами, и возможно ли вообще её сделать так чтобы Entity при вызове метода API автоматически делал INSERT - UPDATE каскадом во все таблицы, при вышеуказанной структуре? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2016, 12:30 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
archelite, Разве в БД этих связей нет? Связи в EF организуются навигационными свойствами. Связь на другую таблицу, это свойство на объект класса, представляющего эту таблицу: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
ObjectOne ссылается на ObjectTwo, а в ObjectTwo есть коллекция всех объектов ObjectOne, которые на него ссылаются (определять эту коллекцию не обязательно, но даёт большую гибкость при написании запросов). При этом подразумевается, что в БД в таблице ObjectOne будет присутствовать foreign key с именем ObjectTwo_Id. В общем, в доках всё очень подробно написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2016, 19:54 |
|
Интеграция с системой Реформа ЖКХ
|
|||
---|---|---|---|
#18+
archeliteУмные люди, помогите пожалуйста нубу) Как правильно организовать структуру БД, чтобы на неё можно было натравить EntityFramework? При вызове метода API мне приходит Object, который имеет древовидную структуру. Например: объект - GetCompanyProfileResponse содержит поля INT - inn, String - name_full, String - name_short, Object[] - company_profile_data, Object[] - files_info. Массивы объектов в свою очередь содержат примитивы и другие массивы объектов и так далее в глубину. Сейчас есть готовая структура таблиц и я сгенерировал структуру классов при помощи Entity Database First как показано здесь http://metanit.com/sharp/entityframework/2.4.php , но еще не делал связи(только расставил Primary Key) Как правильно сделать связь между таблицами, и возможно ли вообще её сделать так чтобы Entity при вызове метода API автоматически делал INSERT - UPDATE каскадом во все таблицы, при вышеуказанной структуре? Что-то я не понял. Вы структуру БД завязываете на сторонний API? ИМХО что-то здесь не правильно. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.11.2016, 20:26 |
|
|
start [/forum/topic.php?fid=17&msg=39349641&tid=1349340]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
31ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 138ms |
0 / 0 |