Какие проблемы следует иметь при создании экземпляра .NET-компонента в приложении VB6? - PullRequest
1 голос
/ 16 июня 2010

Я только что прочитал статью 2002 года по MSDN под названием Вызов компонента .NET из COM-компонента , чтобы получить общее представление о вызове объектов .NET из кода VB6. Тем не менее, я все еще задаюсь вопросом, что еще может беспокоить меня при ссылках на объекты .NET из VB6 и есть ли что-то более новое, чем то, что было доступно, когда эта статья была написана 8 лет назад.

В нашей конкретной реализации нам нужно добавить компонент как к VB6, так и к классическому приложению ASP (VB Script), которое будет применять правила скидок к товарам в корзине. Я планировал написать решение в .NET, а затем вызвать компонент из нашего приложения VB6.

Однако мы обеспокоены тем, что у нас могут быть узкие места в производительности, связанные с переводом набора записей ADO в более простые типы, созданием экземпляра .NET-компонента для выполнения работы и последующим переводом обратно в набор записей ADO, как только мы закончим. Я надеюсь, что прирост производительности и обслуживания кода с помощью .NET перевесит любые затраты на перевод в и из наборов записей ADO, но я не уверен в этом; я также не знаю о других проблемах, которые могут сделать сборку .NET медленнее, чем просто использование сборки COM. Любые предложения и идеи будут высоко оценены.

1 Ответ

1 голос
/ 16 июня 2010

Основные проблемы, с которыми я столкнулся в этой области, связаны с техническим обслуживанием;Создание COM-вызываемой библиотеки DLL не сложно, но сделать ее остаться вызываемой при обновлении (то есть повторном развертывании изменений) может быть настоящей болью.Или, может быть, я только что привык к развертыванию робокопии, чего в этом случае будет недостаточно - и это не помогло, если бы у меня был COM +, с которым также пришлось бороться.Вы действительно хотите сохранить базовый API.Я был бы счастлив бросать строки за границу (возможно, xml, но не единственный выбор), но я бы избегал наборов записей и т. Д. Это просто требует боли.Конечно, у вас может не быть выбора.

В прошлый раз, когда мне пришлось это сделать, я на самом деле сыт по горло, пытаясь бороться с различными слоями, и вместо этого я использовал http для интерфейса;и VB6, и C # более чем способны перебрасывать сообщения http или закреплять базовый http-сервер (либо ASP, либо ASP.NET).Может быть, немного больше накладных расходов, но разделение того стоило.А это значит, что я могу поменять местами либо клиента, либо сервер.

...