Начало софтостроения

Вот тут то как раз и начинаются вопросы софтостроения. Скажем, оформляем ее в виде динамическо библиотеки и создаем на сиквеле сборку. Таким образом мы можем работать только с серверным портом, к которому подключаем наш сканер. Этот вариант годится только тогда, когда ты сиквел таскаешь с собой за клиентом. Кстати такой "улиточный" вариант очень удобен так как обеспечивает локально полный (согласно принципу "по образу и подобию человека") набор операционной и аналитической частей. Но он не всегда может быть реализован.

Второй вариант касается нексус клиента. Я тоже "ревизовал" код и обнаружил залежи невоспользуемого функционала. Скажем, если построить динамическую библиотеку с модулями

extern "C" int PASCAL EXPORT Exported_Class_1( int UDN )
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());

CString str;
str.Format("We are inside Dll class 1 UDN=%i",UDN);
MessageBox(::GetForegroundWindow(), str, "Dll message", MB_OK|MB_ICONINFORMATION);

// normal function body here

UDN=1;
return UDN;
}

то клиент может их вызывать как

// definition
// hInstF=LoadLibrary( ".\\dll\\dll_core.dll" );
// LPFNDLLFUNCB DllFuncB; // Function pointer in the calling module
// DllFuncB = (LPFNDLLFUNCB)GetProcAddress(hInstF, "Exported_Class_1");

// call the function
//dllUDN=333;
//bRet = DllFuncB( dllUDN );

Правда что делать потом и как это все привязать к некоторым экземплярам объекта некоторого класса я так и не понял. Безумие всегда можно объяснить забывчивостью. Но здесь это применимо, однако я не вижу смысла привлекать нексус клиента, как брокера в чтении порта и заполнении некоторой таблицы на сервере.

И третий путь - это я просто пишу exe модуль, работающий и в командной строке и через графический интерфейс, который читает порт и заполняет таблицу в базе данных. А запускаю я его из нексуса по требованию, скажем как пункт главного меню. Этот модуль я уже могу сделать многоплатформенным так как имею поддержку ado.net for mssql, mysql and postgress.

Покритикуйте, может еще какой путь есть?

Ответить

Содержание этого поля является приватным и не предназначено к показу.
  • Allowed HTML tags: <a> <em> <strong> <b> <i> <strike> <center> <del> <cite> <code> <pre> <ul> <ol> <li> <dl> <dt> <dd> <p> <br> <h1> <h2> <h3> <h4> <img> <hr> <sup> <sub> <blockquote>
  • Use <!--pagebreak--> to create page breaks.
  • You can enable syntax highlighting of source code with the following tags: <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".
  • Строки и параграфы переносятся автоматически.

Подробнее о форматировании

Captcha
Вопрос для предотвращения спама
Copy the characters (respecting upper/lower case) from the image.