Как я могу сгенерировать файл WSDL с удаленного сервера? - PullRequest
0 голосов
/ 27 октября 2011

Я новичок в разработке веб-служб и клиент-серверных приложений, и у меня возникают проблемы с пониманием того, как файл WSDL генерируется из веб-службы c #. Мне нужен файл WSDL, чтобы сгенерировать прокси-класс и связать его с соответствующим клиентом.

class my_server
{
    private static HttpChannel channel;
    private static int port = 3000;
    private static string serverUri = "myservice";

    static void Main(string[] args)
    {

        Console.WriteLine("Sample server");
        StartSoapServer(port);
        Console.ReadLine();

        StopSoapServer();
    }
    private static bool Start(int p)
    {
        try
        {
            port = p;
            channel = new HttpChannel(port);
            ChannelServices.RegisterChannel(channel, false);
             RemotingConfiguration.CustomErrorsMode = CustomErrorsModes.Off;
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(server), serverUri, WellKnownObjectMode.Singleton);
            IServerChannelSink sinkChain = channel.ChannelSinkChain;

            Console.WriteLine("server created");
        }
        catch (Exception e)
        {

            return false;
        }
        return true;
    }

    private static void Stop()
    {
        string[] urls = channel.GetUrlsForUri(serverUri);
        if (urls.Length > 0)
        {
            string objectUrl = urls[0];
            string objectUri;
            string channelUri = channel.Parse(objectUrl, out objectUri);
            ChannelServices.UnregisterChannel(channel);
            Console.WriteLine("Server stopped");
        }
    }

    public class server : MarshalByRefObject
    {
        public server()
        { 
        }

        public override object InitializeLifetimeService()
        {
            return null;
        }
        public bool initialise()
        {
            Console.WriteLine("initialise()");
            return true;
        }
        public bool ping()
        {
            Console.WriteLine("ping");
            return true;
        }   
    }
}

Судя по всему, сервер создан и остается включенным до его остановки ... однако при тестировании с помощью Storm (http://storm.codeplex.com/): при добавлении http://localhost:3000/myserviceuri происходит сбой ... как еще можно проверить, что служба работает, без реализации клиента? как я могу сгенерировать файл WSDL с этого сервера? Я пытался использовать http://wsdlgenerator.codeplex.com/, но, видимо, это только для служб WCF ...

Ответы [ 3 ]

1 голос
/ 27 октября 2011

Вы можете генерировать wsdl с помощью wsdl.exe для сервисов .svc или .asmx в .net, насколько мне известно.Для удаленного взаимодействия это то, что microsoft говорит "Объект Remoting может предоставить файл WSDL (см. WSDL 1.1), который описывает объект и его методы. Любой клиент, который можетчтение и генерация запросов SOAP, соответствующих файлу WSDL, может вызывать этот объект и связываться с ним с помощью SOAP. Объекты сервера удаленного взаимодействия .NET могут использовать инструмент SOAPSUDS.EXE, который поставляется вместе с .NET SDK, для генерации файлов WSDL, которые могут служить в качествеметаданные. Это полезно, когда организация хочет предоставить общедоступную услугу, к которой любой клиент может получить доступ и использовать. "

1 голос
/ 27 октября 2011

Вы используете .NET Remoting, которая давно устарела в пользу WCF.Все новые веб-сервисы и клиентские разработки должны использовать WCF.

0 голосов
/ 27 октября 2011

Вы запускаете удаленный сервер, а не веб-сервис.Это, вероятно, ваша точка зрения.Результат вашего проекта должен быть .asmx, как указал Алекс Мендес.Вы выполняли эту процедуру ?

...