Копирование того, что делает WcfTestClient.exe - PullRequest
1 голос
/ 17 мая 2011

Мне нужно написать приложение, которое принимает в качестве входных данных только адрес веб-службы (на данный момент это может быть просто простой http-адрес с конфигурацией веб-службы по умолчанию, созданной во всех типичных вводных примерах WCF для Visual Studio). Затем мне нужно определить контракт на обслуживание и все методы контракта (а также типы параметров).

Теперь я не нахожу в сети примеров того, как это сделать. Однако WcfTestClient.exe из VS2008 делает именно это. Вы вводите адрес, кажется, что он подключается к нему в течение нескольких секунд (поэтому я предполагаю, что он не просто анализирует файл wsdl, так как это не займет даже 1 секунду), а затем показывает все контракты и Методы по контракту для вас в аккуратном списке. Кроме того, WSDL не показывает точные типы параметров для методов контракта.

Как я могу сделать это программно сам? Если это тестовое приложение просто вызывает wsdl.exe и генерирует прокси-классы в фоновом режиме, а затем использует отражение, я, вероятно, не смогу пойти по этому пути, так как я не могу вызвать командную строку .exes в моей программе. Если это так, то мой вопрос: как я могу делать то, что делает wsdl.exe ... только адрес веб-службы и получать всю информацию, необходимую для этих прокси-классов. И, конечно, где-нибудь используйте Reflection, и это мой первый приз.

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

Спасибо!

1 Ответ

1 голос
/ 17 мая 2011

Взгляните на этот пост на http://blogs.msdn.com/b/vipulmodi/archive/2006/11/16/dynamic-programming-with-wcf.aspx. Он имеет то, что вам нужно, но код выполняет некоторую компиляцию и загружает новую сборку на лету (что, я думаю, и делает WcfTestClient, кстати), так что есливы не можете запустить .exe из вашей программы из-за проблем с безопасностью, тогда это может быть проблемой и для вас.

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