Re[31]: Работа - с чего начать: С++ или С#?
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.04.09 16:18
Оценка:
Здравствуйте, criosray, Вы писали:

ГВ>>Ну дык, pococapsule и по объёму чуть не в 10 раз меньше, чем Castle Windsor. Что тут бочку-то катить?

C>Кого волнует объем?

В общем — никого, согласен. Просто pocoapsule — это мелочёвка, в общем-то. Годится в качестве заготовки, пожалуй, ну так она для того и приведена была здесь.

ГВ>>Тем не менее, в качестве ответа на вопрос об IoC — вполне себе ответ.

C>Нет, это не ответ. Что толку от такого IoC, если у него кроме самого базового DI и нету больше ничего?
C>Вот Вы лично пользуетесь PocoCapsule? Наверняка нет, а мы IoC используем на каждом шагу потому, что сильно облегчает жизнь и естественным образом улучшает архитектуру систем.

Да я вообще самописными контейнерами такого рода пользуюсь. И не жужжу особо. Просто называю их не IoC-контейнерами, а настраиваемыми агрегатами, например.

C>>>Где возможность задать Lifecycle?

C>>>Где возможность задать Lifestyle?
ГВ>>Это уже фичи, которые в тот или иной контейнер могут быть внесены или нет.
C>Ну покажите мне хоть один контейнер на С++, где были бы эти "фичи". Это, кстати, не просто фичи, а самая основа работы контейнера. Что мне толку от контейнера, если я не могу задать lifestyle компоненты?

Сдаётся мне, что тут дело в несколько иной общей культуре разработки на C++ — здесь не так модны большие тяжёлые компоненты типа "унифицирующих контейнеров" a-la Java. А написать самостоятельно что-то в таком духе — дело не сложное (как раз мой пример о том и свидетельствует). Можно и lifestyle/lifecycle прикрутить — опять таки, дело не хитрое.

C>>>Где автоматическая регистрация компонент по шаблону?

ГВ>>Можно сделать и так, но понадобится глобальный регистратор всех компонентов, используемых в такой операции.
C>Ну сделайте. Очень хочу посмотреть. Условия все те же: конфигурирование через конфиг файл. То есть указывается сборки и шаблон, по которому ее сканировать и дальше все делается автоматически контейнером.

Нет такого явления в C++, как "сборки" — это раз. Есть DLL, но нет такого явления, как "сканирование содержимого DLL". Чтобы получить нечто подобное поиску нужного класса нужно а) определить способ и формат описания класса (реестр), б) занести описания всех классов в такой реестр и в) напустить на указанный реестр операцию поиска. В рантайме-то у C++-ных классов никаких имён нет. Техника очевидная для любого C++-ника. В принципе, если формат выбран с человекочитаемыми именами, то их можно перенсти и в конфиг-файл. Тоже, в общем, не бином Ньютона.

Мне сейчас, честно говоря, просто возиться с этим не хочется. Для форумного спора как-то слишком много усилий на квадратный дюйм.

C>>>Где расширяемость аналогичная Сastle Facilities?

ГВ>>Да тоже, вроде бы, ничего сверхъестественного.
C>Ну нету ведь?

Где? У меня?

C>>>Где интерцепторы???

ГВ>>Вот с этим сложнее, но и то, из-за кодогенерации.
C>Конечно посложнее. И судя по тому, что готовых рабочих решений нету — невыполнимая задача для С++. Так?

Проще сказать — да, невыполнимая. Прокси придётся писать вручную. Максимум, чем можно воспользоваться — довольно хитрыми играми с препроцессором.



ГВ>>Ты всё же определись, чего ты хочешь от собеседников: чтобы сделали копию Castle Windsor или MS Unity, продемонстрировали возможный подход или ещё чего-то?
C>Да, я хочу чтоб мне показали аналог Виндсор, но для С++. Еще я хочу увидеть аналог RhinoMocks.

Зачем? Это послужит тебе аргументом за то, что C++ — "достаточно мощный"? Или интересует принципиальная возможность реализации таких вещей?

ГВ>>Я надеюсь — ты не просто ищешь повод фыркнуть погромче, верно? Можно написать IoC-контейнер и конфигурируемый, и гибкий, и с обилием других качеств, но это, в общем, довольно объёмная работа. Тот же Castle Windsor, если судить по объёму исходников, ну никак не один и не два человеко-месяца.

C>Для справки, на дотнет реализаций этих контейнеров уже больше десятка (а то и двух десятков). Почему на вашем столь любом замечательном мощном С++ до сих пор нету ничего подобного? Можете ответить на этот вопрос?

Значит, просто никому не нужно. А вообще говоря, не знаю, почему оно так.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.