Я инженер-программист, я работаю в разработке на c #.
Программное обеспечение, над которым я работаю, имеет макет сервера и клиента.Сервер - это больше уровень базы данных, только он имеет прямой «доступ» к базе данных.Клиент просто отправляет запросы и получает данные в виде строк в соответствии с запросами, а не наборов данных или таблиц данных.Уровень базы данных взаимодействует с базой данных через файл dll.
пример:
Клиент запрашивает выполнение операции 144.Сервер получает номер операции и отправляет его в основную процедуру dll:
Client:
string command = "144";
buffer = asci.GetBytes(command);
socket.send(buffer);
Server:
socket.receive(buffer);
str = asci.GetString(buffer);
op = Int32.Parse(str);
Dll.MainRoutine(op);
Dll main routine:
switch (op)
{
case 0: blah blah blah ; break;
case ..........................
case 144: i++ ; break ;
default : ;
}
Допустим, что программное обеспечение работает на реальном сервере.Теперь я хочу внести изменения только в клиентские и DLL-файлы (добавить функциональность).И все же я не хочу снова скомпилировать сервер.Если я добавлю новую команду на стороне клиента с именем 200 и добавлю регистр в основную процедуру dll: case 200, будет ли он работать?Или мне нужно также перекомпилировать сервер?
Client:
string command = "200";
buffer = asci.GetBytes(command);
socket.send(buffer);
Server:
socket.receive(buffer);
str = asci.GetString(buffer);
op = Int32.Parse(str);
Dll.MainRoutine(op);
Dll main routine:
switch (op)
{
case 0: blah blah blah ; break;
case ..........................
case 144: i++ ; break ;
case 200: i+=10 ; break ;
default : ;
}
Что я пытаюсь сказать, так это то, что я хочу иметь возможность добавлять функциональность только через обновления dll и клиента.Сервер всегда должен быть запущен.Это можно сделать с помощью DLL или есть другой способ?
Спасибо ...