<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум Guardant &mdash; Две версии API в одной DLL]]></title>
		<link>https://forum.guardant.ru/topic/653/</link>
		<atom:link href="https://forum.guardant.ru/feed/rss/topic/653" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Две версии API в одной DLL».]]></description>
		<lastBuildDate>Fri, 26 Aug 2016 08:35:21 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Две версии API в одной DLL]]></title>
			<link>https://forum.guardant.ru/post/3261/#p3261</link>
			<description><![CDATA[<div class="quotebox"><cite>aloch пишет:</cite><blockquote><p>Старые версии сервера будут еще очень долго использоваться, как мне кажется просто по принципу - работает, не трогай.</p></blockquote></div><p>Да, наверняка так и есть)<br />Еще раз спасибо за отклики, ваши предложения переданы в отдел разработки.</p>]]></description>
			<author><![CDATA[null@example.com (Антон Тихиенко)]]></author>
			<pubDate>Fri, 26 Aug 2016 08:35:21 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3261/#p3261</guid>
		</item>
		<item>
			<title><![CDATA[Re: Две версии API в одной DLL]]></title>
			<link>https://forum.guardant.ru/post/3260/#p3260</link>
			<description><![CDATA[<p>Спасибо за ответ. Будем жить вот так, с галочкой в настройках, не самое плохое решение :)</p><p>Про два сервера на одном хосте я сам потом понял, что делить ключи между ними нужно будет.</p><p>Что бы хотелось Вам предложить для облегчения &quot;нашей жизни&quot;</p><p>Сделать сборки объектных и заголовочных файлов 5 АПИ с переименованными функциями доступными для загрузки с сайта, а решение с использованием двух версий АПИ в одном процессе поддерживаемым официально. Старые версии сервера будут еще очень долго использоваться, как мне кажется просто по принципу - работает, не трогай.</p><p>Сейчас в случае несовместимости сервера и клиента (даже в рамках одной версии АПИ) приходит сообщение об ошибке &quot;Сервер не найден&quot; (при этом в 5 версии его видит монитор), что делает весьма сложной выявление причины такого поведения. Было бы хорошо ввести ошибку &quot;Сервер ключа несовместим с клиентом&quot;.</p><p>С уважением,</p><p>Алексей</p>]]></description>
			<author><![CDATA[null@example.com (aloch)]]></author>
			<pubDate>Fri, 26 Aug 2016 08:27:25 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3260/#p3260</guid>
		</item>
		<item>
			<title><![CDATA[Re: Две версии API в одной DLL]]></title>
			<link>https://forum.guardant.ru/post/3231/#p3231</link>
			<description><![CDATA[<p>Здравствуйте, aloch.</p><p>Благодарим за столь обстоятельный отзыв. А также за приведенный пример обхода ограничения совместимости версий приложения <em>Сервер сетевых ключей</em>, который выглядит вполне рабочим и не должен вызвать глобальных проблем при использовании.</p><p>Что же касается отсутствия обратной совместимости современных версий сервера сетевых ключей со &quot;старым&quot; API и автозащитой (далее просто - обратная совместимость), то эта мера в большей степени вынужденная и определенно не очень безболезненная для всех. Дело в частности в том, что поддерживать и дорабатывать движок сервера 5.хх версий в определенный момент стало нецелесообразным, поскольку стабильность его работы обещала быть уже неподобающей, на что влияло и появление новых версий ОС Windows (начиная с версии 8). Еще, например, вырисовывалась потенциальная необходимость в поддержке IPv6 и все более нарастающая необходимость в портировании сервера под Linux.</p><p>В купе вышеописанные требования и ряд иных причин послужили стимулом для разработки полностью нового движка для сервера сетевых ключей и в мае 2012 года сервер на новом движке был выпущен вместе с релизом Guardant SDK 6.1. Сервер для ОС семейства Linux появился в составе SDK 7.1. На сегодняшний день современная версия сервера сетевых ключей является куда более надежной и актуальной заменой 5.хх версий, но, к сожалению, реализация обратной совмести могла серьезно ухудшить качество его работы и осложнить дальнейшее развитие и доработки.</p><p>Одновременная работа серверов разных поколений в среде одной ОС тоже спорное решение, например, если им надо будет делить сетевой ресурс одного ключа.</p>]]></description>
			<author><![CDATA[null@example.com (Антон Тихиенко)]]></author>
			<pubDate>Tue, 23 Aug 2016 11:44:49 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3231/#p3231</guid>
		</item>
		<item>
			<title><![CDATA[Две версии API в одной DLL]]></title>
			<link>https://forum.guardant.ru/post/3229/#p3229</link>
			<description><![CDATA[<p>Добрый день!<br />Наше приложение защищается через API, автозащита не используется (например, потому, что приложение должно работать и без ключа, получив лицензию от Web-сервера или вообще работать в режиме без защиты). <br />Сотрудничаем с Guardant давно, начинали еще с Fidusов. Новые ключи (Sign, Code, Time) не используем т.к. их функциональность нам не нужна, покупаем, как старые клиенты, Stealth II и его сетевой вариант. Поэтому сидели на API 5 версии и соответственно использовали сервер 5-версии.<br />Все было хорошо, пока один из клиентов не обратился к нам с просьбой реализовать поддержку 7 сервера – у них все виртуализировано, железка для проброса USB одна, она подключена к виртуалке, где живут все их серверы ключей. Там уже стоит сервер 7, т.к. есть приложение, требующее именно эту версию сервера. Поставить 5 сервер вместе с 7 на один компьютер невозможно (вот интересно, почему?), 7 сервер не виден из приложения, защищенного 5 версией API, покупать вторую железку для проброса и заводить еще одну виртуалку клиент, естественно не хочет. В общем вот такая совместимость версий.<br />Пересобрать приложение с новой версией API не проблема, но в этом случае старые клиенты, использующие 5 версию сервера после обновления (а приложение довольно часто обновляется) просто не смогут подключиться к серверам, завалят нас вопросами и не будут счастливы от перспективы писать запросы в IT-отделы об обновлении сервера, и получить возможность работать дней через 10, пока там вся бюрократия сработает.<br />В общем появилось желание собрать программу с ОБОИМИ версиями API. Все обращения к API происходят из DLL, написанной на C++. DLL линкуется с GrdFWMC.obj, использовать DLL-версию API не хочется (мне кажется, слишком легко ее подменить). Слинковать приложение с GrdFWMC.obj 5 версии одновременно с GrdFWMC.obj 7 версии не получается. Заводить отдельную новую DLL для 5 версии API и линковать старую DLL с 7 версией не хочется, т.к. лень напрягаться над тем, как передать из этой новой DLL информацию о найденном ключе каким-то скрытым образом (иначе ее также легко подменят).<br />В итоге я в простом текстовом редакторе (FAR) поменял имена функций Guardant API в GrdFWMC.obj 5 версии, а сам файл переименовал в GrdFWMC_v5_renamed.obj. Переименовал вот так:<br />016 00036DD6 SECT1&nbsp; notype ()&nbsp; &nbsp; External&nbsp; &nbsp; &nbsp;| _Gr5SetWorkMode@12<br />051 0003F756 SECT1&nbsp; notype ()&nbsp; &nbsp; External&nbsp; &nbsp; &nbsp;| _ns5FindNext@4<br />073 000402B6 SECT1&nbsp; notype ()&nbsp; &nbsp; External&nbsp; &nbsp; &nbsp;| _nn5Check@4<br />Т.е. заменил префикс _Grd на _Gr5, _nsk на _ns5 и _nnk на _nn5.<br />После этого DLL стала успешно линковаться c GrdFWMC.obj 7 версии и GrdFWMC_v5_renamed.obj.<br />После этого я внес соответствующие исправления в GrdAPI_v5_renamed.h и при тестировании убедился, что DLL успешно обращается (в зависимости от задаваемой в настройках опции) к 5 или к 7 версии API и находит соответственно сервера 5 и 7 версии.<br />Конечно, перед обращением к 5 версии вызывается Shutdown для 7 версии и наоборот. Только GrdDllMain() и Gr5DllMain остаются вызванными одновременно все время жизни приложения.<br />В общем, все работает, но конечно есть вопрос поводу возможных проблем с таким одновременным использованием двух версий API в одной DLL. Хотелось бы услышать ответ от разработчиков защиты, но не в духе «мы это не поддерживаем».<br />Ну и в конце хочется сказать по поводу совместимости. Это очень важный момент для любого ПО – в том числе и для Вашего. За все время мы купили у Вас 1700 ключей, и вот делать нам и нашим клиентам больше нечего, как разруливать несовместимости версий чужого ПО.<br />Очень бы хотелось в качестве обеспечения совместимости получить возможность использовать обе версии сервера 5 и 7 на одном компьютере (что там сложного?) или работу 7 сервера в режиме совместимости с 5 версией ПО.<br />С уважением,<br />Алексей</p>]]></description>
			<author><![CDATA[null@example.com (aloch)]]></author>
			<pubDate>Mon, 22 Aug 2016 11:10:33 +0000</pubDate>
			<guid>https://forum.guardant.ru/post/3229/#p3229</guid>
		</item>
	</channel>
</rss>
