WCF: вопрос об устаревшем API - PullRequest
0 голосов
/ 15 июля 2010

Мне нужно обернуть устаревший API сборки .net (набор классов и интерфейсов) службой WCF.Сервис рассматривается как прокси, который делегирует вызовы существующим классам практически без дополнительной работы.

Итак, я добавил [ServiceContract] interface, который предоставляет методы, которые работают с существующими структурами и классами.Но wcf-proxy-generator (svcutil) удалил некоторые поля (объявленные как доступные только для чтения) и недостаточно умён для псевдонимов (например: public bool Boolean1 { get { return Booleans[0] }} превратился в bool Boolean1 { get; set; }).

Я решил продублировать такие унаследованные классы, чтобы устранить путаницу.Теперь для некоторых из существующих классов есть безопасная по контракту версия, а в сервисе WCF есть дополнительный код, который переводит безопасные по контракту классы в унаследованные и наоборот.

Предлагаете ли вы продублировать все унаследованные классы, или можно конвертировать только для проблемных?Может быть, есть некоторые дополнительные параметры прокси-генератора, которые я пропустил.

Заранее спасибо!

1 Ответ

1 голос
/ 15 июля 2010

Прокси не нравятся ваши свойства, доступные только для чтения, потому что ему нужно сериализовать объект, и он не может сделать это без возможности вызвать установщик и вернуть сериализованное значение обратно в объект.

Было бы легче изменить ваши устаревшие классы, чтобы они были дружественными к WCF, но обычно это не вариант. Классы, которые вы создали для преобразования из унаследованного класса в WCF-безопасный класс, кажутся хорошими, но, очевидно, не идеальными, поскольку вы вводите другой уровень просто для использования этих классов с WCF.

...