У меня следующая проблема.
Первым шагом является реализация программы, которая следует определенному протоколу при запуске.
Следовательно, будут необходимы функции, такие как onInit, onConfigRequest и т. Д.
(Они запускаются, например, входящим сообщением через порт TCP)
Моя цель - создать класс, например абстрактный, который имеет абстрактные функции как onInit () и т. Д.
Программист должен просто наследовать от этого базового класса и просто переопределить эти абстрактные функции базового класса.
Остальное по протоколу, например должны быть просто обработаны в фоновом режиме (с использованием кода базового класса) и не должны появляться в коде программистов.
Какова правильная стратегия проектирования для таких задач? и как мне разобраться, что статический метод main не наследуется? Каковы ключевые теги для этой проблемы? (У меня проблема с поиском решения, поскольку у меня нет четких формулировок по этой проблеме)
Цель состоит в том, чтобы создать какую-то библиотеку / класс, который, включенный в код, приводит к выполнению исполняемых файлов в соответствии с протоколом.
РЕДАКТИРОВАТЬ (новое объяснение):
Хорошо, позвольте мне попытаться объяснить более подробно:
В этом случае программы должны быть клиентами в архитектуре клиент-сервер.
У нас есть соединение клиент-сервер по TCP / IP. Каждая программа должна следовать определенному протоколу при запуске программы:
Как только моя программа запускается и подключается к серверу, она получает сообщение инициализации (TcpClient), когда это происходит, она должна вызвать функцию onInit ().
(Должно ли это быть реализовано системой событий?) После onInit () сообщение подтверждения должно быть отправлено на сервер. После этого есть несколько других шагов, например, сообщение конфигурации от сервера, которое вызывает onConfig и так далее. Давайте сосредоточимся на функции onInit.
Идея состоит в том, что onInit (и onConfig и т. Д.) Должны быть единственными функциями, которые должен редактировать программист, в то время как общий обмен сообщениями протокола для него скрыт.
Поэтому я подумал, что использование абстрактного класса с абстрактными методами onInit (), onConfig () должно быть правильным. Статический класс Main я хотел бы скрыть, так как внутри него, например, будет какая-то часть, которая подключается к порту tcp, который реагирует на сообщение инициализации и вызывает функцию onInit.
2 проблемы здесь:
1. статический основной класс не может быть унаследован, не так ли?
2. Я не могу вызывать абстрактные функции из основного класса в абстрактном мастер-классе.
Позвольте мне привести псевдо-пример для моих идей:
public abstract class MasterClass
{
static void Main(string[] args){
1. open TCP connection
2. waiting for Init Message from server
3. onInit();
4. Send Acknowledgement, that Init Routine has ended successfully
5. waiting for Config message from server
6.....
}
public abstract void onInit();
public abstract void onConfig();
}
Я надеюсь, вы поняли идею сейчас!
Программист должен впоследствии наследовать от этого мастер-класса и просто должен редактировать функции onInit и т. Д.
Возможен ли этот путь? Как?
Что еще вы порекомендуете для решения этой проблемы?
EDIT:
Идея стратегии, представленная ниже, является хорошей! Прочтите мой комментарий по этому поводу.