Russian Qt Forum

Qt => Общие вопросы => Тема начата: andrewshkovskii от Сентябрь 16, 2010, 23:11



Название: Совет по архитектуре сервера приложений.
Отправлено: andrewshkovskii от Сентябрь 16, 2010, 23:11
Доброго времени суток, друзья!
Начну с предыстории  : выпала учесть мне диплом писать, да по IT специальности. Долго с другом выбирали темы, ходили к "будущим" руководителям..И вот появилась одна годная идея - попробовать автоматизировать некоторые процессы работы сотрудников кафедры.
Конечно , до этого предпринимались дипломные разработки с целью автоматизации, но до конца они никогда не доводились, потому что каждый раз все начиналось с 0 :
исследование пр.области, новая схема, новая СУБД, новый софт..
Но я решил пойти иным путем - хоть и с 0, но сделать уже раз и навсегда. Отсюда возникла идея написать сервер приложений, некую прослойку между клиентским софтом и БД, который бы поддерживал всяческие CRUD'ы и выполнял различные запросы, которые бы хранились  в неком "Хранилище запросов" (для легкого доступа к редактированию, и добавлению).
Но проблема состоит в том, что если написать такой сервер , то любые приложения, которые будут писаться под него в дальнейшем могли бы легко работать с ним, будь это Java-приложение, C#, delphi или веб-морда.
Отсюда возникла следующая идея - что это будет некий HTTP сервер, т.е принимать запросы/данные по HTTP протоколу, выдавая их обратно тем же путем, в виде какого-нибудь JSON'a .

Пользователей такого сервера будет не много  - не более 10 человек, а вот приложений, может быть достаточное количество.

Собственно главный вопрос : в правильном ли направлении я думаю, сгодиться ли такая архитектура для решения поставленной задачи, или же это слишком для такой, в принципе, не сложной задачи?
Ах да, сервер будет писаться на C++/Qt.
Заранее спасибо за конструктивную критику.


Название: Re: Совет по архитектуре сервера приложений.
Отправлено: Denjs от Сентябрь 17, 2010, 00:54
Теоретически, есть такая штука как SOA (http://ru.wikipedia.org/wiki/%D0%A1%D0%B5%D1%80%D0%B2%D0%B8%D1%81-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%B0%D1%8F_%D0%B0%D1%80%D1%85%D0%B8%D1%82%D0%B5%D0%BA%D1%82%D1%83%D1%80%D0%B0). весьма ныне популярная и хорошо продаваемая.
Есть воплне себе стандраты на это дело, определяющие инерфейс взаимодействия между клиентским ПО и сервером приложений или серверами предоставляющими различные сервисы.

Если на пальцах - то SOA - это расширение идей компонентно-ориентирвоанной архитектуры (http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5) и модульнсти (http://ru.wikipedia.org/wiki/%D0%9C%D0%BE%D0%B4%D1%83%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%28%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%29) на сеть. Т.е ты пользуешься компонентами и модулями, которые лежат "где-то там" - доступны через сеть. Ты отправляешь им запросы и получаешь ответы через сетевое взаимодействие.

Для клиентского приложения даже будет не важно кто и где работает - важно что бы этот сервис был зарегистрирован и доступен, и отвечал по стандартным протоколам. думать я вам предлагаю в направлении веб-сервисов (http://ru.wikipedia.org/wiki/Webservice))

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

Думаю вполне вы сможете использовть какой-либо из опенсорсных/бесплатных серверов приложений для того что бы сделать на нем ряд базовых сервисов. Уверен на них есть стандартные решения для реализации тех-же веб-сервисов (http://ru.wikipedia.org/wiki/Webservice). И далее вы сможете интегрировать/публиковать туда приложения/сервисы на чем угодно. т.е. часть сервисов будет работать на Java, часть на PHP (тот-же LAMP) часть вообще будет бинарными системами, и работать они будут на разных хостах.

 а вот на QT вы думаю вполне неплохо напишите клиентскую платформу, которая будет интегрировать услуги различных веб-сервисов в одно рабочее пространство на экране пользователя. тут вам поможет и QtScript и многое другое.


PS: ну и конечно, я могу предложить вам QDroid как кроссплатформенную интеграционную платформу на которой вы сможете интегрировать различные бинарные компоненты для QT в единую систему) Вам конечно придется много писать своих компонент, продумывать гуи, который будет вообще способен делать что-то типа настраиваемых "виджетов" в рабочем пространстве (рабочий стол). Верно, не обойдется и без доработок самого QDroid))))
PPS: дада) я предлагаю вам подумать о том, что бы сделать на QT подобие Eclipse ))))
PPPS: но это все имхо и поток мыслей вызванный вашим постом ))))))))


Название: Re: Совет по архитектуре сервера приложений.
Отправлено: UVV от Сентябрь 17, 2010, 13:29
Возьми Ice.


Название: Re: Совет по архитектуре сервера приложений.
Отправлено: andrewshkovskii от Сентябрь 17, 2010, 13:40
http://www.zeroc.com/ice.html
Вот это что-ли?


Название: Re: Совет по архитектуре сервера приложений.
Отправлено: UVV от Сентябрь 17, 2010, 15:37
Ага