|
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
|
||||||
Клиент в клиент-серверном приложении07.08.2014, 19:08. Показов 2930. Ответов 12
Метки нет (Все метки)
Добрый день, делаю тестовое задание для прохождения стажировки. Задействованы MySQL, Hibernate. Вот само задание
Кликните здесь для просмотра всего текста
Исследование AccountService'а
------------------------------------------------------------------------------------------------------ Цель: создать сервис и оценить время доступа к нему в зависимости от входных параметров ------------------------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------------------------ 1. Создать сервис со следующим интерфейсом: ------------------------------------------------------------------------------------------------------
Сервис должен кэшировать данные в памяти и сохранять данные в БД (Oracle, PostgreSQL, MySQL) или бросать Exception'ы если выполнить операцию не удалось. В качестве транспортного слоя можно выбрать любой из протоколов RMI, Hessian, HTTP ------------------------------------------------------------------------------------------------------ 2. Создать тестового клиента ------------------------------------------------------------------------------------------------------ Тестовый клиент должен уметь запускать несколько конкурентных потоков на определённом подмножестве идентификаторов - rCount - количество читателей вызывающих метод getAmount(id) - wCount - количество читателей вызывающих метод addAmount(id,value) - idList - список или доапазон ключей которые будут использоваться для тестирования Эти параметры можно задавать через командную строчку или конфигурационный файл. Одновременно можно запускать несколько тестовых клиентов на одном или разных компьютерах. ------------------------------------------------------------------------------------------------------ 3. Получить стаистику обрабатки запросов на сервере AccountService'ом ------------------------------------------------------------------------------------------------------ Для каждого из двух методов AccountService'а (getAmount, addAmount) нужно получить - кол-во запросов обрабатываемых в единицу времени на сервере (!!! не на клиенте) - общее кол-во запросов от всех клентов Статистику с сервиса можно получать по требованию любым способом или сбрасывать в лог с определённой периодичностью. Предусмотреть возможность сбросить статистику в ноль на работающем сервисе. Прошу пояснить полностью второй пункт(про подмножества идентификаторов), т.к. из написанного там вообще ничего не понятно. Также хочу спросить, лучше клиент делать в вебе или десктопный?
0
|
||||||
| 07.08.2014, 19:08 | |
|
Ответы с готовыми решениями:
12
Аутентификация в клиент-серверном приложении Шифрование данных в клиент-серверном приложении Организация авторизации в клиент-серверном приложении |
|
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
|
|
| 08.08.2014, 11:28 | |
|
Добрый день.
Множество идентификаторов - к примеру 100-1000000, думается должно быть неким задаваемым
0
|
|
|
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
|
|
| 08.08.2014, 13:22 [ТС] | |
|
edwin3d, что-то я совсем запутался. rCount, wCount, idList - это и есть эти идентификаторы или это просто параметры? И еще, судя по описанию этих параметров, кажется, что они имеют отношение к серверной части, а не клиентской.
0
|
|
|
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
|
|
| 08.08.2014, 13:29 | |
|
Вот смотрите, написано:
" - rCount - количество читателей вызывающих метод getAmount(id)" Неважно КАК мы будем дергать этот метод, через RMI или HTTP, суть в том, что мы его будем дергать. А "читатели" и будут его "дергать", а значит они и есть компоненты клиента
0
|
|
|
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
|
|
| 08.08.2014, 14:03 [ТС] | |
|
edwin3d, понятно, что читатели будут его дергать. Но каждый читатель в определенный момент времени будет дергать только один раз этот метод, а тут идет речь о количестве читателей ВЫЗЫВАЮЩИХ(т.е. в один и тот же момент) метод. Как я понимаю считается количество клиентов, вызывающих этот метод. По-моему может это делаться только на сервере.
0
|
|
|
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
|
|
| 08.08.2014, 14:19 | |
|
Кто Вам сказал про то, что дергать метод в тот или иной момент времени будет только один читатель ? Ведь их множество и соот. конкуренция - это совершенно здравая ситуация тут.
Т.е. встраивается схема клиент, у которого Н читателей. К примеру каждый читатель "живет" в отдельном потоке
0
|
|
|
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
|
|
| 08.08.2014, 18:54 [ТС] | |
|
edwin3d, понятное дело, что читателей несколько, т.к. несколько клиентов. Но из каждого клиента то дергаться будет только один метод. А у каждого клиента один читатель(т.е. пользователь).
0
|
|
|
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
|
|
| 09.08.2014, 16:17 | |
|
Вы не поняли. У вас будет многопоточный клиент.
Количество потоков = количеству читателей. Это все может быть в одном клиенте. Один клиент. У него много потоков. В каждом потоке по читателю. Вам нужно задать количество потоков, которое будет создавать ваш клиент. Естественно, одновременного (в общепризнанном понимании) чтения не будет. Но переключение между потоками будет проходить за доли секунды. Так что можно легко заспамить ваш сервер (если он слабый и не успевает обрабатывать такое количество запросов сразу). В этом и суть его тестирования.
1
|
|
|
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
|
|
| 09.08.2014, 23:15 [ТС] | |
|
Virkom, кажется начинаю понимать. Но: допустим в клиенте две кнопки(для чтения и записи), как тогда протестировать это, выполнение запросов будет происходить явно быстрее, чем я успею нажать кнопки.
0
|
|
|
59 / 59 / 20
Регистрация: 21.03.2013
Сообщений: 186
|
|
| 10.08.2014, 17:14 | |
Сообщение было отмечено ivan92 как решение
Решение
Алгоритм в общем виде:
1. Вы вводите количество создаваемых потоков (N). 2. Нажимаете кнопку "Чтение". 3. Программа создает первый поток и обращается к серверу. 4. Программа создает второй поток и обращается к серверу. 5. Программа создает третий поток и обращается к серверу. ..... n. Программа создает N-ный поток и обращается к серверу. n+1. Сервер не сдох? - Тест пройден успешно. Закрываем все потоки и завершаем работу клиента. При этом можно установить временную задержку. Между запросами. Например, программа-клиент создает один поток и устанавливает для него задержку в одну секунду. Т.е. этот поток будет каждую секунду "теребить" сервер. Программа-клиент создает второй поток и опять же ставит для него задержку в одну секунду. Теперь работают два потока и сообщений на сервер сыплется каждую секунду в два раза больше. И так далее. Нажимаете кнопку вы один раз. Остальное делает программа-клиент. Почитайте про процессы/потоки.
1
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 10.08.2014, 19:33 | |
|
Если сервер использует HTTP то тестовым клиентом может выступить apache jmeter. Думаю использование готового решения вместо траты времени на написание своего (если готовое решение отвечает требованием и достаточно гибкое) является лучшей альтернативой. К тому же в задании сказанно создать клиента а не написать
0
|
|
|
1 / 1 / 0
Регистрация: 30.01.2013
Сообщений: 188
|
|
| 11.08.2014, 12:54 [ТС] | |
|
Virkom, о потоках и потоках в java я более-менее осведомлен, спасибо за развернутый ответ)
Добавлено через 2 минуты KEKCoGEN, решил все таки остановиться на свинге. Ведь транспортному слой между свинговым клиентом и сервером соответствует протокол RMI?
0
|
|
|
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
|
|
| 11.08.2014, 16:09 | |
|
0
|
|
| 11.08.2014, 16:09 | |
|
Помогаю со студенческими работами здесь
13
Авторизация в клиент-серверном приложении (simplemembership?) Передача данных в клиент-серверном приложении Обработка ошибки в Клиент - Серверном приложении Передача файлов в клиент-серверном приложении Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|