ServiceDescriptionImporter Класс

Определение

Предоставляет возможность создания клиентских прокси-классов для веб-служб XML.

public ref class ServiceDescriptionImporter
public class ServiceDescriptionImporter
type ServiceDescriptionImporter = class
Public Class ServiceDescriptionImporter
Наследование
ServiceDescriptionImporter

Примеры

В следующем примере показано использование ServiceDescriptionImporter класса для создания кода прокси-клиента, который вызывает веб-службу XML, описанную WSDL-файлом.

#using <System.Xml.dll>
#using <System.Web.Services.dll>
#using <System.dll>

using namespace System;
using namespace System::Web::Services::Description;
using namespace System::CodeDom;
using namespace System::CodeDom::Compiler;

int main()
{
   // Get a WSDL file describing a service.
   ServiceDescription^ description = ServiceDescription::Read( "service.wsdl" );

   // Initialize a service description importer.
   ServiceDescriptionImporter^ importer = gcnew ServiceDescriptionImporter;
   importer->ProtocolName = "Soap12"; // Use SOAP 1.2.
   importer->AddServiceDescription( description, nullptr, nullptr );

   // Report on the service descriptions.
   Console::WriteLine( "Importing {0} service descriptions with {1} associated schemas.", importer->ServiceDescriptions->Count, importer->Schemas->Count );

   // Generate a proxy client.
   importer->Style = ServiceDescriptionImportStyle::Client;

   // Generate properties to represent primitive values.
   importer->CodeGenerationOptions = System::Xml::Serialization::CodeGenerationOptions::GenerateProperties;

   // Initialize a Code-DOM tree into which we will import the service.
   CodeNamespace^ nmspace = gcnew CodeNamespace;
   CodeCompileUnit^ unit = gcnew CodeCompileUnit;
   unit->Namespaces->Add( nmspace );
   
   // Import the service into the Code-DOM tree. This creates proxy code
   // that uses the service.
   ServiceDescriptionImportWarnings warning = importer->Import(nmspace,unit);
   if ( warning == (ServiceDescriptionImportWarnings)0 )
   {
      // Generate and print the proxy code in C#.
      CodeDomProvider^ provider = CodeDomProvider::CreateProvider( "CSharp" );
      ICodeGenerator^ generator = provider->CreateGenerator();
      generator->GenerateCodeFromCompileUnit( unit, Console::Out, gcnew CodeGeneratorOptions );
   }
   else
   {
      // Print an error message.
      Console::WriteLine( warning );
   }
}
using System;
using System.Web.Services.Description;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Security.Permissions;

public class Import {

    public static void Main() 
    {
        Run();
    }

    [PermissionSetAttribute(SecurityAction.Demand, Name = "Full Trust")]
    public static void Run()
    {
    // Get a WSDL file describing a service.
    ServiceDescription description = ServiceDescription.Read("service.wsdl");

    // Initialize a service description importer.
    ServiceDescriptionImporter importer = new ServiceDescriptionImporter();
    importer.ProtocolName = "Soap12";  // Use SOAP 1.2.
    importer.AddServiceDescription(description,null,null);

    // Report on the service descriptions.
    Console.WriteLine("Importing {0} service descriptions with {1} associated schemas.",
                      importer.ServiceDescriptions.Count, importer.Schemas.Count);

    // Generate a proxy client.
    importer.Style = ServiceDescriptionImportStyle.Client;

    // Generate properties to represent primitive values.
    importer.CodeGenerationOptions = System.Xml.Serialization.CodeGenerationOptions.GenerateProperties;

    // Initialize a Code-DOM tree into which we will import the service.
    CodeNamespace nmspace = new CodeNamespace();
    CodeCompileUnit unit = new CodeCompileUnit();
    unit.Namespaces.Add(nmspace);

    // Import the service into the Code-DOM tree. This creates proxy code
    // that uses the service.
    ServiceDescriptionImportWarnings warning = importer.Import(nmspace,unit);

    if (warning == 0)
    {
        // Generate and print the proxy code in C#.
        CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
        provider.GenerateCodeFromCompileUnit(unit, Console.Out, new CodeGeneratorOptions() );
    }
    else
    {
        // Print an error message.
        Console.WriteLine(warning); 
    }
}
}

Комментарии

Интерфейс веб-службы XML обычно описывается файлом WSDL. Например, чтобы получить описание WSDL веб-службы с помощью ASP.NET, предоставляемых по адресуhttp://localhost/service.asmx, просто перейдите к http://localhost/service.asmx?WSDL.

Этот ServiceDescriptionImporter класс позволяет легко импортировать сведения, содержащиеся в описании WSDL, в System.CodeDom.CodeCompileUnit объект. Изменив значение Style параметра, можно указать ServiceDescriptionImporter экземпляру создать клиентский прокси-класс, который предоставляет функциональные возможности веб-службы путем прозрачного вызова или создания абстрактного класса, инкапсулирующего функциональные возможности веб-службы без его реализации.

Затем код в результирующем CodeCompileUnit объекте можно вызвать напрямую или экспортировать на выбранном вами языке.

Конструкторы

ServiceDescriptionImporter()

Инициализирует новый экземпляр класса ServiceDescriptionImporter.

Свойства

CodeGenerationOptions

Получает или задает различные параметры для создания кода.

CodeGenerator

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

ProtocolName

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

Schemas

Получает объект XmlSchemas, используемый свойством ServiceDescriptions.

ServiceDescriptions

Полйчает коллекцию экземпляров ServiceDescription для импорта.

Style

Получает или задает значение, которое определяет стиль кода (клиентский или серверный), создаваемого при импорте значений ServiceDescriptions.

Методы

AddServiceDescription(ServiceDescription, String, String)

Добавляет указанный объект ServiceDescription в коллекцию импортируемых значений свойства ServiceDescriptions.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GenerateWebReferences(WebReferenceCollection, CodeDomProvider, CodeCompileUnit, WebReferenceOptions)

Компилирует коллекцию веб-ссылок для создания прокси клиента или серверной заглушки.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
Import(CodeNamespace, CodeCompileUnit)

Импортирует заданные значения свойства ServiceDescriptions, которое создает код в соответствии со значением свойства Style.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к