Вам нужно определить «лучший». COM - несмотря на наилучшие пожелания дизайнеров - очень разнородная платформа. Характер клиента (он же язык?), Который вы ожидаете, будет взаимодействовать с объектом, должен сильно повлиять на ваш выбор.
Всего два быстрых примера:
Вызов из Classing ASP?
Ваши единственные инструменты ВАРИАНТЫ. Хорошо, вы используете ATL: ваши единственные инструменты - либо BSTR, либо SAFEARRAY от VARIANTS.
Быть вызванным из C ++?
Вы можете использовать собственный массив данных (читайте в [size_is]). Или даже массивы фиксированного размера, если это возможно. Это тонны легче с обеих сторон.
Есть и другие соображения:
Вы пишете клиенту? Тогда вы хотите сделать вещи проще с обеих сторон.
Вы пишете только объект? Тогда вы, вероятно, захотите сделать все на самом легком на клиенте, даже если на сервере сложнее (почему? особенно в консалтинговой или коммерческой среде - не ленитесь!) .
Кроме того, это одноразовый объект? Или это будет использоваться в ряде обстоятельств в будущем? В первом случае вы можете обнаружить, что это действительно не имеет значения. В последнем случае вы захотите тщательно обдумать это.
Если вы опубликуете более подробную информацию о ваших обстоятельствах, мы, вероятно, можем дать более конкретные указания.