Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.05.2019, 17:21   #1
note_name
 
Регистрация: 29.05.2014
Сообщений: 5
По умолчанию Проектирование программы (Решения)

Добрый день. Являюсь начинающим программистом. Сейчас пишу проект, но столкнулся с трудностью, что не знаю как правильно его с проектировать, т.к. не достаточно знаний в целом о программировании.
Кратко о проекте:
Под сервером подразумевается проект в решении.
Сервер №2 постоянно отправляет запросы на оборудования, получает ответы и хранит у себя в данных. (более 400 запросов в 5сек)
Сервер №1 установлен как служба, слушает клиентов, получает от них запросы, смотрит в данные сервера №2 и отправляет ответы согласно этим данным. (планируется более 50 клиентов)
Вопрос, сервер №2 делать как еще одну службу или как обычный класс или как библиотеку?
Если учесть что оба сервера работают в режиме многопоточности.
Изображения
Тип файла: jpg server-client.jpg (40.0 Кб, 150 просмотров)
Тип файла: jpg server-oborud.jpg (30.4 Кб, 148 просмотров)
note_name вне форума Ответить с цитированием
Старый 02.05.2019, 17:36   #2
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Цитата:
Сообщение от note_name Посмотреть сообщение
Если учесть что оба сервера работают в режиме многопоточности.
Однозначно делить на 2 программы, так как это вопрос надёжности. Т.е. делать отдельным сервисом.
Вот если бы у вас загрузка была больше 1000 запросов, то тут в пару задуматься о оптимизации следует использовать как обычный класс(статическая библиотека).
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 02.05.2019, 17:37   #3
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
Сообщение от note_name Посмотреть сообщение
не знаю как правильно его с проектировать, т.к. не достаточно знаний в целом о программировании
Сделать как получится, понять что не так (изучить теорию, решения по этим вопросам), переписать лучше и т.д.
Других вариантов в целом нет.

Цитата:
Сообщение от note_name Посмотреть сообщение
сервер №2 делать как еще одну службу или как обычный класс или как библиотеку?
как проще.

ЗЫ не делайте картинки с кучей лишнего белого фона по краям (обрезайте), тогда бы может и качество сжатия форумом было бы лучше (или вообще был бы оригинал).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 02.05.2019, 17:47   #4
note_name
 
Регистрация: 29.05.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Однозначно делить на 2 программы, так как это вопрос надёжности. Т.е. делать отдельным сервисом.
Вот если бы у вас загрузка была больше 1000 запросов, то тут в пару задуматься о оптимизации следует использовать как обычный класс(статическая библиотека).
Тогда сервер №1 и сервер №2 между собой общаться будут как клиент-сервер?
Т.е. на сервере №2 так же необходимо будет поднять прослушивание клиентов и сервер №1 будет выступать как клиент и отправлять запросы на сервер №2 ?
note_name вне форума Ответить с цитированием
Старый 02.05.2019, 17:49   #5
note_name
 
Регистрация: 29.05.2014
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Сделать как получится, понять что не так (изучить теорию, решения по этим вопросам), переписать лучше и т.д.
Других вариантов в целом нет.


как проще.

ЗЫ не делайте картинки с кучей лишнего белого фона по краям (обрезайте), тогда бы может и качество сжатия форумом было бы лучше (или вообще был бы оригинал).
Примерно так и делаю сейчас. Делаю кучу/кашу...когда добиваюсь работоспособности, то начинаю делать рефакторинг.
А тут решил спросить как лучше, предварительно прочитав правила форума и не нашел пункта, что за спрос бьют
note_name вне форума Ответить с цитированием
Старый 04.05.2019, 14:14   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

во-первых, винда не даст гарантию в 400 запросов в 5 секунд)
во-вторых, изучайте полные условия и нормально анализируйте задачу.
можно ведь складывать данные в БД и убрать связь между двумя серверами.
Падает ваш корявый сервер № 2, остаётся жить какая-нибудь относительно надёжная БД, из которой можно продолжить забирать старые данные. Может это по задаче пригодится, а может нафиг не нужно. Так же что должно произойти при перезапуске службы? Перезапустили железный сервер, служба 2 внезапно умерла или корректно была остановлена и успела данные как-то на диск скинуть. Нужно думать с хранением информации в этом случае или постоянно писать в БД и не париться. А может опять же данные нужны только в режиме реального времени и плевать на их потерю.
В итоге делаем как умеем и стараемся, чтобы не было фейлов типа: админ перезагрузил сервер, но не залогинился. В итоге железка работает, а клиенты не могут подключиться, т.к. "серверы" запускаются только при логине пользователя и работают под его учёткой.
По поводу общения серверов между собой ищем "C# IPC", а может и общения не будет между ними, а будут запросы к БД, если такое решение выберете.
Какие конкретные технологии брать и как проектировать: тут сугубо вопрос опыта и личных предпочтений, на это никто не ответит. Либо же тут устраивать полный допрос с выяснением объёмов данных и всего ТЗ.
По поводу надёжности - если сервер №1 без сервера №2 нафиг пользователям не нужен, то нет и никакой надёжности. Если пригодится, то это обязательно нужно брать во внимание. Даже если не нужно, то смотрим как часто мы будем обновлять наши сервера и насколько плохо пользователей без них оставлять. может нужно масштабируемость нужно добавлять, когда у нас два сервера №1, например. Ну, или у нас функционал сервера №2 не меняется и обновлять его не планируется особо, а вот в сервер №1 каждый день что-то новенькое впихивается. Естественно тогда лучше их отделить и пусть себе сервер №2 спокойно работает, а пользователи иногда будут немного обламываться, пока сервер №1 обновляется.
В техническом плане в любом случае получится фигня и с опытом и без опыта. Начинайте анализ задачи и требований заново и тогда не будет такого странного исходного вопроса.
Пока он звучит примерно как: я тут решил в лом забить крепёж. Так вот мне лучше забить гвоздь или шуруп. Причём забивать буду зимой. По факту там может лом можно на деревянный брусок заменить.
pu4koff вне форума Ответить с цитированием
Старый 07.05.2019, 09:44   #7
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

По-моему, эта система хорошо ложиться на акторную модель. Посмотри в сторону Akka.Net . Что это даст? Первое, не надо думать где они у тебя будут размещаться (в одном сервисе, двух и тд). Второе, как распределять нагрузку (на одной машине, двух, кластере и тд). Третье, решит проблемы с многопоточностью. Четвертое, отказоустойчивость, обработка ошибок. И многое другое, о чем в начале разработки не думаешь.
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Составление программы для решения уравнения 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