У нас есть AS400, с которым нам нужно общаться с помощью наших приложений .NET. В настоящее время мы разрабатываем веб-приложения, работающие на Windows 2003/2008, и должны запустить установку клиента AS400, чтобы загрузить поставщика .NET на каждый из наших серверов, на которых выполняются веб-приложения, использующие этого поставщика.
Поставщик также загружается на наших клиентах для разработки через установку клиента AS400.
В настоящее время мы столкнулись с проблемой, когда при обновлении наших клиентских ПК до Windows 7 мы были вынуждены обновить программное обеспечение для клиентского доступа AS400. Это, конечно, потребовало от нас изменения DLL, используемой в наших проектах .NET, что потребует от нас загрузки новой версии поставщика .NET на серверы, если нам когда-либо потребуется внести изменения в наши приложения.
Проблема в том, что если у нас много веб-приложений, использующих все эти .NET-провайдера, и мы неожиданно загружаем новую версию, она будет ломать все веб-приложения, пока мы не сможем заменить DLL в каждом проекте и повторно развернуть их на сервере. .
Я боролся с некоторыми возможными решениями и хотел бы знать, какое из них лучше? Или, если есть какие-нибудь лучшие идеи, чтобы обойти эту проблему?
Связанный сервер. У нас есть настройка связанного сервера через SQL 2005 с AS400, и он работает, но работает медленно и не работает с Entity Framework. Это кажется достаточно быстрым для запросов SELECT, но вставка выполняется очень медленно, и запросы требуют использования более сложного SQL с использованием OPENQUERY. Я попытался настроить представление для прохода к таблице DB2, но запросы либо выполняются медленнее, чем OPENQUERY, либо они иногда не работают.
Веб-сервис - я думал о том, чтобы обернуть все коммуникации DB2 через единый веб-сервис, когда при появлении обновлений нам придется беспокоиться только об одной точке отказа. Я беспокоюсь о скорости и обратной совместимости здесь.
Оболочка DLL - я также подумал о том, чтобы обернуть функциональность DB2 в мою собственную библиотеку классов и затем загрузить ее в GAC. Опять же, единственная точка отказа. Но я никогда не связывался с GAC, поэтому я не уверен, какие новые проблемы появятся, и у меня все еще будет проблема с обратной совместимостью.
Новый сервер VM. Другой вариант - настроить новый сервер приложений VM с новым поставщиком .NET, а затем переместить приложения по одному, после чего старый сервер можно будет удалить.
Замена DLL - я не пробовал этого, но я полагаю, что мог бы перекомпилировать каждое приложение на моем клиенте разработчика с новым поставщиком .NET, а затем заменить DLL, содержащую код доступа DB2 для каждого из приложений на сервере. (Я уже использую класс-оболочку для провайдера DB2, и он находится в его собственной DLL). Единственная возможная проблема заключается в том, что другие наши разработчики еще не используют новую версию клиента AS400, и у них есть приложение, развернутое на сервере. Нам нужно обновить их клиент AS400 как минимум.
Спасибо!