|
|
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
Приветствую всех! Это комплексный вопрос по организации структуры, выбора платформы для реализации комплекса программ, не столько про непосредственно БД. Я проектирую трехзвенную систему Клиент - Сервер приложений - Сервер БД). С выбором структуры мне помогли в параллельной теме. Сервер БД - на нем будет развернута БД под управлением MS SQL Server 2012. БД уже спроектирована. Физически - отдельный выделенный сервер. Клиент - десктопное приложение Windows, написанное на платформе .NET (Windows Forms или WPF). Функция клиента - просмотр информации из БД (на сервере БД). Количество используемых клиентов заранее неизвестно, предположительно >1000, одновременная работа до 100. Сервер приложений (физически также на отдельном выделенном сервере) должен выполнять несколько функций: 1. Получение и перенаправление запросов и ответов от клиентов к Серверу БД и обратно(на схеме). При большом количестве одновременных запросов от клиентов, выполнять их по очереди. 2. Авторизировать/регистрировать пользователей, работающих с сервером БД. Логины и хэши паролей будут храниться в таблице в БД (на сервере БД). Регистрационные данные будут приходить от клиентов. 3. Защитить систему от избыточных массовых запросов со стороны клиентов. (Клиент будет написан на .NET, следовательно может быть легко декомпилирован и модифицирован.) Если бы клиент обращался непосредственно к БД, можно легко устроить что-то типа DDoS. Это было одной из главных причин по которой я выбрал трехзвенную структуру. Здесь надо реализовать защиту от возможных атак. Я немного застрял, не могу понять что именно должен представлять из себя этот "сервер приложений"(если я правильно классифицировал эту часть структуры) в моем случае: .NET <-> "сервер приложений" <-> БД SQL Server. Как я понял для web-приложений есть масса приложений типа "web-сервер" выполняющих эти функции. Также сервер-приложений(так и называется) есть составе Windows Server 2012. Из описания на technet.microsoft.com: technet.microsoft.comСервер приложений предоставляет интегрированную среду для развертывания и запуска пользовательских серверных бизнес-приложений, созданных с использованием Microsoft .NET Framework 3.0. Роль сервера приложений поддерживает приложения, использующие COM+, очередь сообщений, веб-службы и распределенные транзакции. Собственно вопрос: что делать именно в моем случае, какую платфору/язык, готовое решение выбрать? Куда смотреть. (Я владею только .NET-языками, SQL). Буду очень благодарен любой помощи и комментариям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2014, 21:32 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2014, 21:36 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
автор3. Защитить систему от избыточных массовых запросов со стороны клиентов. (Клиент будет написан на .NET, следовательно может быть легко декомпилирован и модифицирован.) Если бы клиент обращался непосредственно к БД, можно легко устроить что-то типа DDoS. Это было одной из главных причин по которой я выбрал трехзвенную структуру. Здесь надо реализовать защиту от возможных атак.Что же вы под номером три этот пункт добавили. Я бы переместил его на ПЕРВОЕ место, как самую важную часть вашего приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2014, 22:45 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
По сабжу - вы хотите получить общественно приемлимое обоснование усложнения структуры, чтобы поучится за счет заказчика? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2014, 22:47 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
ValeOFYПриветствую всех! Это комплексный вопрос по организации структуры, выбора платформы для реализации комплекса программ, не столько про непосредственно БД. Я проектирую трехзвенную систему Клиент - Сервер приложений - Сервер БД). С выбором структуры мне помогли в параллельной теме. И зачем плодить новую тему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2014, 23:05 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
SERG1257Что же вы под номером три этот пункт добавили. Я бы переместил его на ПЕРВОЕ место, как самую важную часть вашего приложения. Согласен, это очень важно, но и другие пункты нужно реализовать здесь, раз уж я выбрал трехзвенную систему. SERG1257По сабжу - вы хотите получить общественно приемлимое обоснование усложнения структуры, чтобы поучится за счет заказчика? Нет, я хочу не усложнения, а чтобы было правильно. Я впервые проектирую столь комплексную, сложную для меня вещь. Я выбрал трехзвенную систему, исходя из ответов, которые мне дали в параллельной теме об общей структуре подобных приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2014, 23:10 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
sdetValeOFYПриветствую всех! Это комплексный вопрос по организации структуры, выбора платформы для реализации комплекса программ, не столько про непосредственно БД. Я проектирую трехзвенную систему Клиент - Сервер приложений - Сервер БД). С выбором структуры мне помогли в параллельной теме. И зачем плодить новую тему? Я решил что это уже более узкий вопрос и друга тема. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2014, 23:12 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
в винде сервер приложений это не одно приложение как например J2EE сервера. Это куча несвязаных между собой изначально компронентов - одни честь операционки (как например менеджер транзакций) другите отдельные - сервисы (как например очереди сообщений) IIS само собой отдельно, WCF - часть .NET и т.д. можно реализрвать на основе IIS а можно сделать отдельный WCF сервер с доступом через веб-срвисом. Зависит от задачи, от того какой клиент, как олжен обмениватся данными и т.д. рассуждать абстрактно нет смысла. Также впечатление что у вас не конкретная прикладная задача а задача построить какой нибудь сервер приложений чтобы можно было сказать что построен сервер приложений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2014, 15:49 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
caballeroТакже впечатление что у вас не конкретная прикладная задача а задача построить какой нибудь сервер приложений чтобы можно было сказать что построен сервер приложений. Да нет, задача вполне конкретная, но некомпетентность не позволяет мне правильно ее сформулировать, слишком мало знаний. Думаю Ваш ответ - именно то, что нужно. Теперь у меня есть направление, куда копать, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2014, 21:12 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
Посмотрите Model-View-Controller. В приложении должна быть реализована некоторая логика, постоянное хранение данных и взаимодействие с пользователем. В web приложении взаимодействие с пользователем идет через браузер, хранение данных обычно в базе данных, а вот логика в зависимости от сложности и прочих предпочтений может быть реализована в сервере приложений (чаще всего), в базе данных (хранимые процедуры), а может и прямо в браузере. В вашем десктопном случае я не вижу смысла в серевере приложений. Последовательная очередь выполнения - крайне странная идея, убивающая паралелльную работу в базе данных. DDoS на базе легко предотвращается штатными средствами. Например, в логин триггере проверять количество одновременно открытых сессий для пользователя, и для 2,3,10... сессии давать отлуп. Рассматривайте 'сервер приложений' просто как отдельный модуль вашей программы, совершенно необязательно на отдельном сервере, а как DAL - data access layer. Очень рекомендую нанять на несколько месяцев консультанта с опытом разработки архитектуры приложений. Сидя рядом с ним вы за три месяца научитесь больше, чем в одиночку за два года, избежите многих дорогостоящих ошибок, а в случае неудачи проекта свалите вину на него :^) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 20:48 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
Sergei.AgalakovDDoS на базе легко предотвращается штатными средствами. Например, в логин триггере проверять количество одновременно открытых сессий для пользователя, и для 2,3,10... сессии давать отлуп. Угу, защищаться от отказа в обслуживании отказывая в обслуживании - это пять! Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 20:54 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
авторПосмотрите Model-View-Controller. а это тут каким боком авторВ вашем десктопном случае я не вижу смысла в серевере приложений. Последовательная очередь выполнения - крайне странная идея, убивающая паралелльную работу в базе данных что за чушь - сервера приложений как раз и обеспечивают паралельную работу клиентов авторРассматривайте 'сервер приложений' просто как отдельный модуль вашей программы, совершенно необязательно на отдельном сервере, а как DAL - data access layer. ТС написал конкретно - нужна трехзвенка Возможно предполагается тонкий клиент или типа того. Нужно советовать не то что умеете а то что нужно по теме. авторОчень рекомендую нанять на несколько месяцев консультанта с опытом разработки архитектуры приложений. надеюсь не на себя намекаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.01.2014, 22:28 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
caballeroSergei.AgalakovПосмотрите Model-View-Controller. а это тут каким боком Для понимания, за что обычно отвечает сервер приложений. caballeroсервера приложений как раз и обеспечивают паралельную работу клиентов ValeOFY При большом количестве одновременных запросов от клиентов, выполнять их по очереди. Автор считает иначе. caballeroТС написал конкретно - нужна трехзвенка Трехзвенка не подразумевает всегда иметь сервер приложений на выделенном сервере в сети. Oracle Apex - трехзвенка, например. caballeroнадеюсь не на себя намекаете? Правильно надеятесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 02:41 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovSergei.AgalakovDDoS на базе легко предотвращается штатными средствами. Например, в логин триггере проверять количество одновременно открытых сессий для пользователя, и для 2,3,10... сессии давать отлуп. Угу, защищаться от отказа в обслуживании отказывая в обслуживании - это пять! Вы не видите разницы между отказом в обслуживании потому что лег сервер и потому что клиенту отказано в открытии второй активной сессии? Требования только одной активной сессии на пользователя мне встречались. Вообще непонятно, что автор имеет в виду под DDoS на сервере из-за декомпиляции клиента. Может, хотят избежать соединения с базой данных помимо клиентского приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 03:02 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
Sergei.Agalakov , благодарю за Ваш ответ, очень емкий. Sergei.Agalakovа вот логика в зависимости от сложности и прочих предпочтений может быть реализована в сервере приложений (чаще всего), в базе данных (хранимые процедуры), а может и прямо в браузере. Я думаю, в моем случае, логичнее всего выбрать сервер приложений в том или ином виде. Sergei.AgalakovПоследовательная очередь выполнения - крайне странная идея, убивающая паралелльную работу в базе данных. DDoS на базе легко предотвращается штатными средствами... ...Вообще непонятно, что автор имеет в виду под DDoS на сервере из-за декомпиляции клиента. Может, хотят избежать соединения с базой данных помимо клиентского приложения? Я имею ввиду, что декомпилировав клиент, злоумышленник узнает форму запроса от клиента - серверу, соответственно может инициировать постоянные многочисленные запросы с разных машин, чем перегрузить сервер. В моем понимании это - DDoS.(?) По поводу очереди выполнения - это я про моменты пиковой нагрузки, в случае, если есть такая необходимость. caballero , думаю, ответ Сергея вполне в формате данной темы. Моя цель сейчас - получить больше возможных направлений для изучения по этой теме. caballeroможно реализрвать на основе IIS а можно сделать отдельный WCF сервер с доступом через веб-срвисом. Зависит от задачи, от того какой клиент, как олжен обмениватся данными и т.д. рассуждать абстрактно нет смысла. Я почитал немного по теме, думаю, что WCF-сервер позволит реализовать все задачи. Смотрю в эту сторону. Всем еще раз спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 14:33 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
ValeOFYSergei.AgalakovПоследовательная очередь выполнения - крайне странная идея, убивающая паралелльную работу в базе данных. DDoS на базе легко предотвращается штатными средствами... ...Вообще непонятно, что автор имеет в виду под DDoS на сервере из-за декомпиляции клиента. Может, хотят избежать соединения с базой данных помимо клиентского приложения? Я имею ввиду, что декомпилировав клиент, злоумышленник узнает форму запроса от клиента - серверу, соответственно может инициировать постоянные многочисленные запросы с разных машин, чем перегрузить сервер. В моем понимании это - DDoS.(?) По поводу очереди выполнения - это я про моменты пиковой нагрузки, в случае, если есть такая необходимость. База данных сама лучше знает как организовать выполнение запросов при пиковой нагрузке, то же относится и к управлению ресурсами сервера. В MS SQL это можно сделать с Resourse Governor , Oracle и DB2 имеют похожие средства. Для того, чтобы посылать произвольные запросы к базе, надо как минимум иметь к ней доступ. Не храните пароль соединения в приложении, организуйте правильный, защищенный доступ к данным в базе, и пользователь не узнает ничего более того, что ему положено, даже если соединится с базой помимо вашего приложения. Не надо пытаться бороться с несуществующими проблемами. Если они и возникнут, ДБА сможет справиться с ними. Если вы делаете сервер приложений, чтобы вынести туда логику приложения, то эта идея здравая и правильная. Как минимум надо постараться разделить логику от презентации данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2014, 20:23 |
|
||
|
Как реализовать сервер приложений для работы клиентов с БД?
|
|||
|---|---|---|---|
|
#18+
разработка своего сервера приложений в разы увеличивает риски и затраты на проект, по моему не стоит за это браться, если у вас нет серьезных оснований. ваш "DDOS" - это фантазии. если у вас корпоратив - разработайте нормальную двухзвенку. В современных СУБД есть все средства авторизации и разграничения доступа. если у вас интернет-приложение - то вам стоит посмотреть в сторону web-технологий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2014, 14:54 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38517106&tid=1541020]: |
0ms |
get settings: |
7ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
2ms |
| others: | 234ms |
| total: | 503ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...