|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.05.2019, 17:21 | #1 |
Регистрация: 29.05.2014
Сообщений: 5
|
Проектирование программы (Решения)
Добрый день. Являюсь начинающим программистом. Сейчас пишу проект, но столкнулся с трудностью, что не знаю как правильно его с проектировать, т.к. не достаточно знаний в целом о программировании.
Кратко о проекте: Под сервером подразумевается проект в решении. Сервер №2 постоянно отправляет запросы на оборудования, получает ответы и хранит у себя в данных. (более 400 запросов в 5сек) Сервер №1 установлен как служба, слушает клиентов, получает от них запросы, смотрит в данные сервера №2 и отправляет ответы согласно этим данным. (планируется более 50 клиентов) Вопрос, сервер №2 делать как еще одну службу или как обычный класс или как библиотеку? Если учесть что оба сервера работают в режиме многопоточности. |
02.05.2019, 17:36 | #2 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Однозначно делить на 2 программы, так как это вопрос надёжности. Т.е. делать отдельным сервисом.
Вот если бы у вас загрузка была больше 1000 запросов, то тут в пару задуматься о оптимизации следует использовать как обычный класс(статическая библиотека).
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
02.05.2019, 17:37 | #3 | ||
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Цитата:
Других вариантов в целом нет. Цитата:
ЗЫ не делайте картинки с кучей лишнего белого фона по краям (обрезайте), тогда бы может и качество сжатия форумом было бы лучше (или вообще был бы оригинал).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
||
02.05.2019, 17:47 | #4 | |
Регистрация: 29.05.2014
Сообщений: 5
|
Цитата:
Т.е. на сервере №2 так же необходимо будет поднять прослушивание клиентов и сервер №1 будет выступать как клиент и отправлять запросы на сервер №2 ? |
|
02.05.2019, 17:49 | #5 | |
Регистрация: 29.05.2014
Сообщений: 5
|
Цитата:
А тут решил спросить как лучше, предварительно прочитав правила форума и не нашел пункта, что за спрос бьют |
|
04.05.2019, 14:14 | #6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
во-первых, винда не даст гарантию в 400 запросов в 5 секунд)
во-вторых, изучайте полные условия и нормально анализируйте задачу. можно ведь складывать данные в БД и убрать связь между двумя серверами. Падает ваш корявый сервер № 2, остаётся жить какая-нибудь относительно надёжная БД, из которой можно продолжить забирать старые данные. Может это по задаче пригодится, а может нафиг не нужно. Так же что должно произойти при перезапуске службы? Перезапустили железный сервер, служба 2 внезапно умерла или корректно была остановлена и успела данные как-то на диск скинуть. Нужно думать с хранением информации в этом случае или постоянно писать в БД и не париться. А может опять же данные нужны только в режиме реального времени и плевать на их потерю. В итоге делаем как умеем и стараемся, чтобы не было фейлов типа: админ перезагрузил сервер, но не залогинился. В итоге железка работает, а клиенты не могут подключиться, т.к. "серверы" запускаются только при логине пользователя и работают под его учёткой. По поводу общения серверов между собой ищем "C# IPC", а может и общения не будет между ними, а будут запросы к БД, если такое решение выберете. Какие конкретные технологии брать и как проектировать: тут сугубо вопрос опыта и личных предпочтений, на это никто не ответит. Либо же тут устраивать полный допрос с выяснением объёмов данных и всего ТЗ. По поводу надёжности - если сервер №1 без сервера №2 нафиг пользователям не нужен, то нет и никакой надёжности. Если пригодится, то это обязательно нужно брать во внимание. Даже если не нужно, то смотрим как часто мы будем обновлять наши сервера и насколько плохо пользователей без них оставлять. может нужно масштабируемость нужно добавлять, когда у нас два сервера №1, например. Ну, или у нас функционал сервера №2 не меняется и обновлять его не планируется особо, а вот в сервер №1 каждый день что-то новенькое впихивается. Естественно тогда лучше их отделить и пусть себе сервер №2 спокойно работает, а пользователи иногда будут немного обламываться, пока сервер №1 обновляется. В техническом плане в любом случае получится фигня и с опытом и без опыта. Начинайте анализ задачи и требований заново и тогда не будет такого странного исходного вопроса. Пока он звучит примерно как: я тут решил в лом забить крепёж. Так вот мне лучше забить гвоздь или шуруп. Причём забивать буду зимой. По факту там может лом можно на деревянный брусок заменить. |
07.05.2019, 09:44 | #7 |
Дружите с Linq ;)
Форумчанин
Регистрация: 15.10.2008
Сообщений: 823
|
По-моему, эта система хорошо ложиться на акторную модель. Посмотри в сторону Akka.Net . Что это даст? Первое, не надо думать где они у тебя будут размещаться (в одном сервисе, двух и тд). Второе, как распределять нагрузку (на одной машине, двух, кластере и тд). Третье, решит проблемы с многопоточностью. Четвертое, отказоустойчивость, обработка ошибок. И многое другое, о чем в начале разработки не думаешь.
Не давай организму поблажки, каждый день тренируй его в шашки..
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Составление программы для решения уравнения | serg1032 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 20.12.2013 07:22 |
Код программы решения квадратного уравнения | Mary1108 | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 03.12.2013 00:09 |
Составить программы решения задач | Катя369919407 | Паскаль, Turbo Pascal, PascalABC.NET | 13 | 20.01.2012 01:05 |
Разработка программы на Delphi."Автоматизированное проектирование привода с вариатором и редуктором | Spifex | Фриланс | 0 | 17.05.2011 12:49 |
Нужна помощь!Проектирование программы оболочки! | Ириночка | Помощь студентам | 1 | 13.03.2007 21:32 |