Счастье есть! ...А ещё запивать и закусывать...
Не знаю, обычно это у админов весело, а у нас как-то не очень. Так что и рассказывать нечего.
Но, тем не менее, сделаю зарубку, ну да мож кому интересно будет.

Занимаюсь я корпоративной информационной системой. Это такая система, которая охватывает почти все разделы деятельности компании. Люди работают в своих подсистемах, а начальство их контролирует, получает отчёты и проч. В то же время, разные отделы могут получить требуемую им информацию от других отделов.

Фирма... Хм. Скорее даже холдинг, потому что подразделений у нас фигова туча, а так же и фигова туча "дочек" по всяким отдельным направлениям и разбросанная по городам. Занимаемся транспортной логистикой и обработкой грузов. Это через нас едут на экспорт те товары, что потребляют как в США, так и Европе, Индии, Китае и чёрт-те знает ещё где.

Ну а сами мы занимаемся именно самой системой. Дорабатываем старые части, пишем новые. Автоматизируются и увязываются всё новые и новые подразделения, оптимизируется их деятельность. Делаем системы взаимодействия с автоматизированными системами клиентов и свои отдельные сервисы. В общем - ведём всю автоматизаторскую деятельность компании.

Так вот - базовая часть проекта была начата лет эдак 15 назад на Visual Basic. А новые части уже пишутся на C#. Но мы же не можем сказать "так, вот с завтрашнего дня мы отказались от всего старого, вот вам всё новое", ибо переписать разом больше 200мб только исходного кода нет никаких возможностей - ни временных, ни финансовых. А уж запуск всего этого "одновременно" точно остановит все бизнесс процессы. Но поскольку VB таки уже "умирает", то был сделан "ход конём".
Вот про него то и хочу немного написать. Удивительно, но не так много программистов знает что это и как это - написать библиотеку на Net, но использовать её в Com. А их, прослоек-посредников" теперь у нас будет 2. Буквально на днях завершу вторую часть.

Первая часть была написана мною давно. Она представляет из себя "универсальный" NETовский контрол, который делает вид что он COMовский, и натягивается на всю пользовательскую VBшную форму.
А вот внутри себя он уже умеет "нарисовать" любой NET контрол из сторонней NET сборки, который ему скажут. И получается так - мы пишем ЛЮБУЮ систему на С# в виде DLL, а затем просто указываем контролу-прокладке "Пс, парень, покажи мне вот этот контрол из вот этой вот сборки!" И воуля. Человек продолжает как обычно работать в VBшной части КИС, а форма что перед ним - уже написана на C#. Прикольно? =)

Но это всё хорошо, если мы "поднимаем" подсистему. Она замкнута на себе и никакие посторонние всплывающие формы не поднимает. Но если потребуется поднять диалоговую форму из старой части, то такая прокладка тоже никак не годится. А как быть с гигантскими базовыми, центральнообразующими системами? Переписать за раз даже подсистему заказов - это архисложно. Во-первых неизбежно возникнет масса проблем. Во-вторых это несколько месяцев работы. В-третьих, что самое важное, пользователи привыкли к старому. А тут хоть и немного, но по-другому! "Мы не будем с этим работать, верните старое!" говорят они. А значит, надо систему подменять "понемногу". Тут диалоговую форму заменили, сям заменили. А там глядишь - осталось то совсем ничего!

А потому, вот буквально скоро, завершу вторую часть. И она поинтереснее будет. Почему? ) Потому что "подниматься" из старой части будет уже диалоговая форма. NETовская форма. А такая форма должна иметь события. И надо мало того, что передать данные из VB в NETовскую форму, так и получить NETовские события и отдать их VB!
А что б было интереснее - "посредник" ничего не будет знать о тех формах, которые ему поручат открывать! =) Т.е. VBшная часть должна будет "сказать" при запуске "Эй ты, подай мне вон с той NETовской сборки воон ту форму! Вот те для неё параметры. А получить я хочу вот такие вот события!" И опа - перед нами появилась форма. Вот такая вот задачка =)

Но всё получилось. Тестовый стендик работает. =) Вот.

@темы: Шо есть работа моя, Графоманство-с