Проектирование серверного приложения
От: Amor Россия  
Дата: 14.01.03 11:47
Оценка:
Привет всем!!!

Задача:
Сделать серверное приложение, которое время от времени по каналу TCP/IP обменивается некой информацией с клиентами по инициативе самих клиентов. Кроме того программа должна иметь возможность выполнять дополнительные действия связанные с ее деятельностью, т.е. здесь должен быть GUI. Там же возможность работы с базой данных (добавить там, удалить, изменить).

Подскажите пожалуйста как мне организовать это приложение? Т.е. может здесь нужно сделать службу? Или приложение, которое будет висеть в трейе?

Т.к. вопрос объемный лучше будет наверно, если вы посоветуете мне какую-нибудь книгу или ссылку.

Спасибо заранее.
Re: Проектирование серверного приложения
От: Gollum Россия  
Дата: 14.01.03 12:03
Оценка:
Здравствуйте, Amor, Вы писали:

А обязательно TCP/IP? Может лучше вообще сделать Web-приложение? Пусть юзеры что надо аплоадят эксплорером, веб-интерфейс прикрутить просто, и с БД работать тоже несложно.
... << RSDN@Home 1.0 beta 4 >>
Eugene Agafonov on the .NET

Re: Проектирование серверного приложения
От: vasketsov Россия http://ntprog.by.ru
Дата: 14.01.03 12:13
Оценка:
Здравствуйте, Amor, Вы писали:

A>Кроме того программа должна иметь возможность выполнять дополнительные действия связанные с ее деятельностью, т.е. здесь должен быть GUI.

Зачем? Локально клиент тоже можт быть запущен. Вопрос только, какие клиенты будут.

A>Т.е. может здесь нужно сделать службу?

Лучше так, к тому же получишь фактически нахаляву возможность частичного удаленного управления.

A>Или приложение, которое будет висеть в трейе?

А вот это не надо. Вообще без GUI лучше обойтись.
Васкецов Сергей
http://registry.km.ru
Re[2]: Проектирование серверного приложения
От: Amor Россия  
Дата: 14.01.03 12:18
Оценка:
Здравствуйте, vasketsov, Вы писали:

V>Здравствуйте, Amor, Вы писали:


A>>Кроме того программа должна иметь возможность выполнять дополнительные действия связанные с ее деятельностью, т.е. здесь должен быть GUI.

V>Зачем? Локально клиент тоже можт быть запущен. Вопрос только, какие клиенты будут.
Здесь ресь не о клиенте идет. GUI для сервера.

A>>Т.е. может здесь нужно сделать службу?

V>Лучше так, к тому же получишь фактически нахаляву возможность частичного удаленного управления.

A>>Или приложение, которое будет висеть в трейе?

V>А вот это не надо. Вообще без GUI лучше обойтись.
GUI нужно, для выполнения пользователем других действий (там же — работа с БД)
Т.е. программа постоянно работает с клиентами, а когда пользователю моего приложения понадобиться сделать эти действия — он "запускает" GUI.
Re[2]: Проектирование серверного приложения
От: Amor Россия  
Дата: 14.01.03 12:20
Оценка:
Здравствуйте, Gollum, Вы писали:

G>Здравствуйте, Amor, Вы писали:


G>А обязательно TCP/IP? Может лучше вообще сделать Web-приложение? Пусть юзеры что надо аплоадят эксплорером, веб-интерфейс прикрутить просто, и с БД работать тоже несложно.


Ну здесь не пользователи (люди) пользуются услугами сервера. А клиентские программы сами, без участия человека.
Re[3]: Проектирование серверного приложения
От: vasketsov Россия http://ntprog.by.ru
Дата: 14.01.03 12:23
Оценка:
Здравствуйте, Amor, Вы писали:

A>Здесь ресь не о клиенте идет. GUI для сервера.

не является нужным.

A>GUI нужно, для выполнения пользователем других действий (там же — работа с БД)

A>Т.е. программа постоянно работает с клиентами, а когда пользователю моего приложения понадобиться сделать эти действия — он "запускает" GUI.
А почему он не может это действия сделать через клиента?
И вообще, что за действия на сервере требуют GUI? Ибо для подключения к базе GUI не надо.
Васкецов Сергей
http://registry.km.ru
Re[3]: Проектирование серверного приложения
От: Awaken Украина  
Дата: 14.01.03 12:25
Оценка:
A>Ну здесь не пользователи (люди) пользуются услугами сервера. А клиентские программы сами, без участия >человека.

вы слишком мало задали условий чтобы выдать какие-то рекомендации
Есть же множество проверенных промышленных решений для архитектуры клиент-сервер,
выбор которых зависит от множества факторов
(ОС, язык/среда разработки, необходимость стыковки с существующим ПО)
начните с детальной постановки задачи, возможно решение придет само собой
Re[3]: Проектирование серверного приложения
От: Gollum Россия  
Дата: 14.01.03 12:26
Оценка:
Здравствуйте, Amor, Вы писали:

A>Ну здесь не пользователи (люди) пользуются услугами сервера. А клиентские программы сами, без участия человека.


Еще проще Можно субмитить данные программно, в виде XML.
... << RSDN@Home 1.0 beta 4 >>
Eugene Agafonov on the .NET

Re: Проектирование серверного приложения
От: kreek  
Дата: 14.01.03 12:32
Оценка:
Здравствуйте, Amor, Вы писали:

A>Привет всем!!!


A>Задача:

A>Сделать серверное приложение, которое время от времени по каналу TCP/IP обменивается некой информацией с клиентами по инициативе самих клиентов. Кроме того программа должна иметь возможность выполнять дополнительные действия связанные с ее деятельностью, т.е. здесь должен быть GUI. Там же возможность работы с базой данных (добавить там, удалить, изменить).

A>Подскажите пожалуйста как мне организовать это приложение? Т.е. может здесь нужно сделать службу? Или приложение, которое будет висеть в трейе?


A>Т.к. вопрос объемный лучше будет наверно, если вы посоветуете мне какую-нибудь книгу или ссылку.


A>Спасибо заранее.


На C# элементарно написать сервисное приложение. Как механизм обмена данными выбрать Remoting. С СОМ+ лучше не связываться и веб-сервисы мне тоже не нравятся, а вот ремоутинг можно будет даже в инет вытащить и использовать как веб сервисы. Т.е. ремоутинг сможет работать в интранете обмениваяюсь данными в бинарном виде и в инете обмениваясь ХМЛ-ом без написания каких-либо доп. оберток.
... << RSDN@Home 1.0 beta 3 >>
Re[4]: Проектирование серверного приложения
От: Amor Россия  
Дата: 14.01.03 12:36
Оценка:
Здравствуйте, vasketsov, Вы писали:

V>Здравствуйте, Amor, Вы писали:


A>>Здесь ресь не о клиенте идет. GUI для сервера.

V>не является нужным.

A>>GUI нужно, для выполнения пользователем других действий (там же — работа с БД)

A>>Т.е. программа постоянно работает с клиентами, а когда пользователю моего приложения понадобиться сделать эти действия — он "запускает" GUI.
V>А почему он не может это действия сделать через клиента?
V>И вообще, что за действия на сервере требуют GUI? Ибо для подключения к базе GUI не надо.


Схему так можно описать: КЛИЕНТ-СЕРВЕР-ПОЛЬЗОВАТЕЛЬ. Клиент время от времени отправляет серверу информацию о своей деятельности. Сервер там ему что-то отвечает. Пользователь же должен выполнять некие действия. Можно конечно, это GUI вынести вообще в отдельное приложение. Не знаю грамотно ли так делать? Делают ли так?
Re[2]: Проектирование серверного приложения
От: Avdos  
Дата: 14.01.03 13:10
Оценка:
K>На C# элементарно написать сервисное приложение. Как механизм обмена данными выбрать Remoting. С СОМ+ лучше не связываться и веб-сервисы мне тоже не нравятся, а вот ремоутинг можно будет даже в инет вытащить и использовать как веб сервисы. Т.е. ремоутинг сможет работать в интранете обмениваяюсь данными в бинарном виде и в инете обмениваясь ХМЛ-ом без написания каких-либо доп. оберток.

*** А что это за зверь такой Remoting? Может посоветуйте что и где почитать о взаимодействии различных серверов между собой, особенно что нового появилось в этой области.
Сейчас я разрабатываю сервера приложений (например игровые сервера) на С++ и сокетах, все взаимодействие в форме XML, что достаточно трудоемко. Интересно как это делают другие... Было бы интересно поделиться опытом.
Re[5]: Проектирование серверного приложения
От: SCS  
Дата: 14.01.03 13:17
Оценка:
Здравствуйте, Amor, Вы писали:

A>Схему так можно описать: КЛИЕНТ-СЕРВЕР-ПОЛЬЗОВАТЕЛЬ. Клиент время от времени отправляет серверу информацию о своей деятельности. Сервер там ему что-то отвечает. Пользователь же должен выполнять некие действия. Можно конечно, это GUI вынести вообще в отдельное приложение. Не знаю грамотно ли так делать? Делают ли так?

возьми любое серверное приложение — это сервисы безGUIвые. Все управление (GUI или командная строка) через отдельное приложение

примеры:
IIS, MS SQL сервер, Exchange
Oracle 8i/9i

рассмотри вариант выключения/включения питания (когда нет оператора)
SCS
Re[6]: Проектирование серверного приложения
От: Amor Россия  
Дата: 14.01.03 13:26
Оценка:
Здравствуйте, SCS, Вы писали:

SCS>Здравствуйте, Amor, Вы писали:


A>>Схему так можно описать: КЛИЕНТ-СЕРВЕР-ПОЛЬЗОВАТЕЛЬ. Клиент время от времени отправляет серверу информацию о своей деятельности. Сервер там ему что-то отвечает. Пользователь же должен выполнять некие действия. Можно конечно, это GUI вынести вообще в отдельное приложение. Не знаю грамотно ли так делать? Делают ли так?

SCS>возьми любое серверное приложение — это сервисы безGUIвые. Все управление (GUI или командная строка) через отдельное приложение

SCS>примеры:

SCS>IIS, MS SQL сервер, Exchange
SCS>Oracle 8i/9i

SCS>рассмотри вариант выключения/включения питания (когда нет оператора)


Т.е. можно сделать так: написать службу, которая запускается при запуске системы, взаимодействует с клентами, обращается к БД и проч. И есть отдельное приложение, которое выполняет вот те самые "загадочные" действия и управляет службой через ControlService() возможно даже удаленно.
Re[7]: Проектирование серверного приложения
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.01.03 13:32
Оценка: 2 (1)
Здравствуйте, Amor, Вы писали:
A>Т.е. можно сделать так: написать службу, которая запускается при запуске системы, взаимодействует с клентами, обращается к БД и проч. И есть отдельное приложение, которое выполняет вот те самые "загадочные" действия и управляет службой через ControlService() возможно даже удаленно.
Не обязательно через ControlService(). Через это управляют только "тпру" да "поехали" — через Control Panel, MMC, FAR Plugin и еще туеву хучу всего. Просто твое приложение как-то коннектится к службе и общается с ней. Например, для MS SQL есть свои протоколы подключения для выполнения SQL команд. И все управление сервером при помощи них и происходит.
... << RSDN@Home 1.0 beta 3 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[8]: Проектирование серверного приложения
От: Amor Россия  
Дата: 14.01.03 13:40
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Amor, Вы писали:

A>>Т.е. можно сделать так: написать службу, которая запускается при запуске системы, взаимодействует с клентами, обращается к БД и проч. И есть отдельное приложение, которое выполняет вот те самые "загадочные" действия и управляет службой через ControlService() возможно даже удаленно.
S>Не обязательно через ControlService(). Через это управляют только "тпру" да "поехали" — через Control Panel, MMC, FAR Plugin и еще туеву хучу всего. Просто твое приложение как-то коннектится к службе и общается с ней. Например, для MS SQL есть свои протоколы подключения для выполнения SQL команд. И все управление сервером при помощи них и происходит.

Чего-чего-то я не понял.....

Что значит тпру-да-поехали?
Как надо?
Управление службой + выполнение определенных действий = вот что мне надо сделать
Re[9]: Проектирование серверного приложения
От: Sinclair Россия https://github.com/evilguest/
Дата: 14.01.03 13:52
Оценка:
Здравствуйте, Amor, Вы писали:

A>Чего-чего-то я не понял.....

A>
A>Что значит тпру-да-поехали?
Значит через ControlService службу можно остановить и запустить. Все.
A>Как надо?
A>Управление службой + выполнение определенных действий = вот что мне надо сделать
Вынудить службу на "выполнение определенных действий" придется по своему коммуникационному каналу. На выбор:
— Перезапись конфигурационного файла в условленном месте
— Named Pipes
— TCP/IP
— ... гуру дополнят.
... << RSDN@Home 1.0 beta 3 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[10]: Проектирование серверного приложения
От: Amor Россия  
Дата: 14.01.03 13:57
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, Amor, Вы писали:


A>>Чего-чего-то я не понял.....

A>>
A>>Что значит тпру-да-поехали?
S>Значит через ControlService службу можно остановить и запустить. Все.

Но можно ведь передавать в ControlService() пользовательские коды. А не только SERVICE_CONTROL_XXX.
Re[11]: Проектирование серверного приложения
От: SCS  
Дата: 14.01.03 14:04
Оценка: 2 (1)
Здравствуйте, Amor, Вы писали:

A>Но можно ведь передавать в ControlService() пользовательские коды. А не только SERVICE_CONTROL_XXX.

числа 128-255. даже сточку не передать. очень ограничено.
делай по Remoting (если .Net), NamedPipe, TCP/IP, COM+
SCS
Re[4]: Проектирование серверного приложения
От: Amor Россия  
Дата: 14.01.03 14:09
Оценка:
Здравствуйте, Awaken, Вы писали:


A>>Ну здесь не пользователи (люди) пользуются услугами сервера. А клиентские программы сами, без участия >человека.


A>вы слишком мало задали условий чтобы выдать какие-то рекомендации

A>Есть же множество проверенных промышленных решений для архитектуры клиент-сервер,
A>выбор которых зависит от множества факторов
A>(ОС, язык/среда разработки, необходимость стыковки с существующим ПО)
A>начните с детальной постановки задачи, возможно решение придет само собой

ОС — WindowsNT
язык/среда — Visual C++ 6.0
Re[5]: Проектирование серверного приложения
От: Awaken Украина  
Дата: 14.01.03 14:30
Оценка:
A>>(ОС, язык/среда разработки, необходимость стыковки с существующим ПО)
A>>начните с детальной постановки задачи, возможно решение придет само собой

A>ОС — WindowsNT

A>язык/среда — Visual C++ 6.0


как один из жизнеспособных вариантов — ISAPI, http, xml.
мы такое делали, сервер управлялся через сервисное приложение имеющее GUI и
запускающее/останавливающее IIS с помощью SCM API (описано в книге Рихтера и Кларка)
Re: Проектирование серверного приложения
От: Gomes Россия http://irazin.ru
Дата: 14.01.03 14:39
Оценка:
Лично я, сервер в подобном проекте реализовал как обычное приложение, с GUI. Прячется в трей, где и ожидает запрсов от клиентов Через этот самый GUI добавляются/удаляются/изменяются клиенты (ну и ещё кой-какие действия). Но. Этот сервак работает с сеткой, => необходимо залогиниться => службу делать смысла нет. Иначе лучше было бы службой (в основном из-за выключения/включения). Тогда клиентское (относительно к службе) приложение можно размещать где угодно, что удобно.
Re[2]: Проектирование серверного приложения
От: vasketsov Россия http://ntprog.by.ru
Дата: 14.01.03 14:54
Оценка:
Здравствуйте, Gomes, Вы писали:

G>Прячется в трей, где и ожидает запрсов от клиентов

Ага, необходим трей, следовательно, и логин.

G>Этот сервак работает с сеткой, => необходимо залогиниться => службу делать смысла нет.

Пошукай на форуме WinAPI, там есть решение, AFAIR даже на первой странице. И логиниться тоже не надо.
Васкецов Сергей
http://registry.km.ru
Re[3]: Проектирование серверного приложения
От: Gomes Россия http://irazin.ru
Дата: 14.01.03 15:23
Оценка:
Здравствуйте, vasketsov, Вы писали:

v>Пошукай на форуме WinAPI, там есть решение, AFAIR даже на первой странице. И логиниться тоже не надо.

Всё же, наверное, надо. Работает с НетВаревскими дисками. Да и мне это не критично.
Re[3]: Проектирование серверного приложения
От: kreek  
Дата: 14.01.03 16:25
Оценка:
Здравствуйте, Avdos, Вы писали:

A>*** А что это за зверь такой Remoting? Может посоветуйте что и где почитать о взаимодействии различных серверов между собой, особенно что нового появилось в этой области.

A>Сейчас я разрабатываю сервера приложений (например игровые сервера) на С++ и сокетах, все взаимодействие в форме XML, что достаточно трудоемко. Интересно как это делают другие... Было бы интересно поделиться опытом.

Remoting механизм коммуникации в ДотНет, читать в MSDN, может и здесь есть статья.
... << RSDN@Home 1.0 beta 3 >>
Re[2]: Проектирование серверного приложения
От: Amor Россия  
Дата: 15.01.03 06:05
Оценка:
Здравствуйте, Gomes, Вы писали:

G>Лично я, сервер в подобном проекте реализовал как обычное приложение, с GUI. Прячется в трей, где и ожидает запрсов от клиентов Через этот самый GUI добавляются/удаляются/изменяются клиенты (ну и ещё кой-какие действия). Но. Этот сервак работает с сеткой, => необходимо залогиниться => службу делать смысла нет. Иначе лучше было бы службой (в основном из-за выключения/включения). Тогда клиентское (относительно к службе) приложение можно размещать где угодно, что удобно.


Разясни пожалуйста вот от сюда:

... необходимо залогиниться => службу делать смысла нет. Иначе лучше было бы службой (в основном из-за выключения/включения). Тогда клиентское (относительно к службе) приложение можно размещать где угодно, что удобно.

Re[3]: Проектирование серверного приложения
От: Amor Россия  
Дата: 15.01.03 06:07
Оценка:
Здравствуйте, vasketsov, Вы писали:

V>Здравствуйте, Gomes, Вы писали:


G>>Прячется в трей, где и ожидает запрсов от клиентов

V>Ага, необходим трей, следовательно, и логин.

G>>Этот сервак работает с сеткой, => необходимо залогиниться => службу делать смысла нет.

V>Пошукай на форуме WinAPI, там есть решение, AFAIR даже на первой странице. И логиниться тоже не надо.

А че-эт тако та, AFAIR???
И что искать надо? Форум он большой...
Re[4]: Проектирование серверного приложения
От: vasketsov Россия http://ntprog.by.ru
Дата: 15.01.03 09:05
Оценка:
Здравствуйте, Amor, Вы писали:

A>А че-эт тако та, AFAIR???

As Far As I Remember

A>И что искать надо? Форум он большой...

Читай все, все полезно.
Вот это сотоварищи:
http://rsdn.ru/forum/Message.aspx?mid=168078
Автор: SchweinDeBurg
Дата: 09.01.03

http://rsdn.ru/forum/Message.aspx?mid=173027
Автор: _abraksas_
Дата: 15.01.03


Это все — как примеры идей, возможно требуемых для написания безгуевых служб.
Васкецов Сергей
http://registry.km.ru
Re[3]: Проектирование серверного приложения
От: Gomes Россия http://irazin.ru
Дата: 15.01.03 11:10
Оценка:
Здравствуйте, Amor, Вы писали:

A>Разясни пожалуйста вот от сюда:

A>[q]
A>... необходимо залогиниться => службу делать смысла нет. Иначе лучше было бы службой (в основном из-за выключения/включения). Тогда клиентское (относительно к службе) приложение можно размещать где угодно, что удобно.

В моём случае не было смысла усложнять службой. Поставил сервака в автозагрузку и ладно. А если надо чтобы в случае чего (выключение/включение) всё работало, тогда лучше службой. И приложение, которое будет управлять службой и БД, может находиться на другой машине к примеру. Ничего нового не сказал?
Спрашивай поконкретней.
Re[4]: Проектирование серверного приложения
От: Amor Россия  
Дата: 15.01.03 11:29
Оценка:
Здравствуйте, Gomes, Вы писали:

G>Здравствуйте, Amor, Вы писали:


A>>Разясни пожалуйста вот от сюда:

A>>

A>>..необходимо залогиниться => службу делать смысла нет
. Иначе лучше было бы службой (в основном из-за выключения/включения). Тогда клиентское (относительно к службе) приложение можно размещать где угодно, что удобно.

G>В моём случае не было смысла усложнять службой. Поставил сервака в автозагрузку и ладно. А если надо чтобы в случае чего (выключение/включение) всё работало, тогда лучше службой. И приложение, которое будет управлять службой и БД, может находиться на другой машине к примеру. Ничего нового не сказал?
G>Спрашивай поконкретней.

Если конкретней.
Вот что это значит?
[q]
необходимо залогиниться => службу делать смысла нет

И выключение/включение чего имеется ввиду?
Re[5]: Проектирование серверного приложения
От: Gomes Россия http://irazin.ru
Дата: 15.01.03 12:07
Оценка:
Здравствуйте, Amor, Вы писали:

A>Если конкретней.

A>Вот что это значит?
A>необходимо залогиниться => службу делать смысла нет

Ну я ж сказал: в автозагрузку кинул, сервак и запустился.


A>И выключение/включение чего имеется ввиду?


Машины ясен пень Вот электричество кончится — тачка выключится, когда включится залогиниться будет некому (всякое бывает), а служба запустится и будет обрабатывать клиентов.
Re[6]: Проектирование серверного приложения
От: Amor Россия  
Дата: 15.01.03 12:10
Оценка:
Здравствуйте, Gomes, Вы писали:

G>Здравствуйте, Amor, Вы писали:


A>>Если конкретней.

A>>Вот что это значит?
A>>необходимо залогиниться => службу делать смысла нет

G>Ну я ж сказал: в автозагрузку кинул, сервак и запустился.


G>

A>>И выключение/включение чего имеется ввиду?

G>Машины ясен пень Вот электричество кончится — тачка выключится, когда включится залогиниться будет некому (всякое бывает), а служба запустится и будет обрабатывать клиентов.


G>


Все-все, понял...
Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.