Путаница с общедоступной / внутренней доступностью в оболочке веб-службы? - PullRequest
1 голос
/ 30 июля 2009

Я написал простой веб-сервис, который преобразует слово doc в pdf. Как часть метода Convert, он принимает пользовательский объект настроек, который содержит информацию о пути к документу и т. Д., А также DataTable из данных.

Сейчас я создаю «вспомогательный» класс для использования веб-службы, чтобы устранить трудности для других разработчиков и, если честно, контролировать потребителей веб-службы. Я не хочу, чтобы кто-нибудь заглядывал в веб-сервис (даже разработчик) и использовал его невольно.

Давайте назовем мой веб-сервис WordToPdfWS и мой вспомогательный класс WordToPdfHelper (тьфу); WordToPDFHelper имеет веб-ссылку на WordToPdfWS и может без проблем вызывать метод Convert (настройки) (он даже работает!).

Когда я создаю потребительское / тестовое приложение и устанавливаю ссылку на WordToPdfHelper, я обнаруживаю, что (как и ожидалось) я могу создать объект WordToPdfHelper и использовать его по назначению. НО , у моего потребителя я также могу создать свой веб-сервис (WordToPdfWS) и напрямую вызывать его у моего потребителя!

Это определенно не то, что я хочу (например, любой Том, Дик и Харриет Девелопер, способные достичь этого), есть ли способ предотвратить это?

С уважением,

Майк К.

Ответы [ 2 ]

0 голосов
/ 11 августа 2009

Интересная проблема. Идеальный сценарий - это сценарий, когда вы ограничиваете доступ к заглушке прокси-сервера WS в lib, но также можете использовать автоматически сгенерированный код. Код auto-gen, как правило, выдает свой вывод как открытый, и обновление этого файла кода нежелательно.

Я полагаю, что вы можете найти решение, используя методы для обеспечения доступа к коду . Вы можете ограничить доступ к коду, используя структуру Framework для вызовов кросс-сборки.

Реализация защиты доступа к коду, будь то на уровне класса или метода, может быть выполнена с использованием частичного класса , который отражает автоматически сгенерированный класс-заглушку (по пространству имен и имени).

Ваш класс-заглушка уже является частичным классом (при условии, что он был создан с помощью Visual Studio). Создание отдельного файла частичного класса и использование защиты доступа к коду теоретически может обеспечить ограничение обертки, которое вы ищете, плюс оставаться в шаге от блокировки внутренней заглушки веб-службы, избегая пути будущих обновлений.

Я не пробовал этого, поэтому ваш пробег может отличаться.

0 голосов
/ 30 июля 2009

Я предполагаю, что ваш экземпляр веб-сервиса на вашем помощнике объявлен как Public. Вы бы хотели, чтобы это было либо личное, либо внутреннее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...