Advertisement

C# .NET中动态调用Webservice的三种方法

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本文详细介绍了在C#.NET环境下动态调用Web服务的三种不同实现方式,旨在为开发人员提供灵活高效的解决方案。 本段落将探讨在C# .NET环境下动态调用WebService的三种方式。 当需要在程序运行期间动态地使用未知的服务时,可以利用.NET Framework中的System.Web.Services.Description命名空间来实现这一目标。以下是具体步骤: 第一步:下载WSDL数据。 为了能够动态调用WebService,首先从指定URL获取WSDL文档是必要的操作之一。在此过程中,我们可以运用ServiceDescription类来完成这项任务。 第二步:创建和格式化WSDL文档文件。 在成功通过ServiceDescription类获得WSDL数据之后,下一步需要使用ServiceDescriptionImporter类将这些信息转化为可以使用的客户端代理代码形式。 第三步:生成客户端代理程序集。 利用CodeDom技术,我们可以根据之前导入的描述信息动态地构建出相应的客户端代理类库。这一步骤中需要用到System.CodeDom命名空间下的CodeCompileUnit对象来定义新的类和名称空间等结构。 第四步:通过反射调用WebService方法。 最后,借助于.NET框架内的反序列化机制(如MethodInfo),我们可以直接在代码里动态地访问并执行远程Web服务提供的操作接口。 在整个过程中需要引用以下四个命名空间: - System.Web.Services.Description - System.CodeDom - Microsoft.CSharp - System.CodeDom.Compiler 同时还需要使用到如下几个重要类: - ServiceDescription:用于处理WS描述信息。 - ServiceDescriptionImporter:负责从WSDL文档生成客户端代理代码。 - CodeCompileUnit:定义动态创建的代码结构(如命名空间、类等)。 - CodedomProvider:提供代码编译所需的服务,例如获取和使用不同的编译器实例。 - ICodeCompiler:用于将基于System.CodeDom表示形式的源码转换成可执行文件或库。 - CompilerResults:包含从不同语言支持的编译器返回的结果信息。 下面是一个简化的示例: ```csharp using System; using System.Web.Services.Description; using System.CodeDom; using Microsoft.CSharp; using System.CodeDom.Compiler; class Program { static void Main(string[] args) { // 下载WSDL数据并创建代理类库 ServiceDescription serviceDesc = ServiceDescription.Read(http://localhost:60436/Learn.WEB/WebService.asmx?WSDL); CodeCompileUnit compileUnit = new CodeCompileUnit(); using (ServiceDescriptionImporter importer = new ServiceDescriptionImporter()) { importer.AddServiceDescription(serviceDesc); importer.Import(compileUnit); // 通过CodeDom编译代理类库 CSharpCodeProvider provider = new CSharpCodeProvider(); CompilerResults results = provider.CompileAssemblyFromDom(new System.CodeDom.Compiler.TempFileCollection(), compileUnit); // 使用反射调用WebService方法 MethodInfo methodInfo = results.CompiledAssembly.GetType(Namespace.WebService).GetMethod(MethodName); object result = methodInfo.Invoke(null, new object[] { }); Console.WriteLine(result); } } } ``` 以上代码展示了如何下载WSDL文档,将其转换为客户端代理类库,并最终通过反射机制来调用远程Web服务的方法。

全部评论 (0)

还没有任何评论哟~
客服
客服
  • C# .NETWebservice
    优质
    本文详细介绍了在C#.NET环境下动态调用Web服务的三种不同实现方式,旨在为开发人员提供灵活高效的解决方案。 本段落将探讨在C# .NET环境下动态调用WebService的三种方式。 当需要在程序运行期间动态地使用未知的服务时,可以利用.NET Framework中的System.Web.Services.Description命名空间来实现这一目标。以下是具体步骤: 第一步:下载WSDL数据。 为了能够动态调用WebService,首先从指定URL获取WSDL文档是必要的操作之一。在此过程中,我们可以运用ServiceDescription类来完成这项任务。 第二步:创建和格式化WSDL文档文件。 在成功通过ServiceDescription类获得WSDL数据之后,下一步需要使用ServiceDescriptionImporter类将这些信息转化为可以使用的客户端代理代码形式。 第三步:生成客户端代理程序集。 利用CodeDom技术,我们可以根据之前导入的描述信息动态地构建出相应的客户端代理类库。这一步骤中需要用到System.CodeDom命名空间下的CodeCompileUnit对象来定义新的类和名称空间等结构。 第四步:通过反射调用WebService方法。 最后,借助于.NET框架内的反序列化机制(如MethodInfo),我们可以直接在代码里动态地访问并执行远程Web服务提供的操作接口。 在整个过程中需要引用以下四个命名空间: - System.Web.Services.Description - System.CodeDom - Microsoft.CSharp - System.CodeDom.Compiler 同时还需要使用到如下几个重要类: - ServiceDescription:用于处理WS描述信息。 - ServiceDescriptionImporter:负责从WSDL文档生成客户端代理代码。 - CodeCompileUnit:定义动态创建的代码结构(如命名空间、类等)。 - CodedomProvider:提供代码编译所需的服务,例如获取和使用不同的编译器实例。 - ICodeCompiler:用于将基于System.CodeDom表示形式的源码转换成可执行文件或库。 - CompilerResults:包含从不同语言支持的编译器返回的结果信息。 下面是一个简化的示例: ```csharp using System; using System.Web.Services.Description; using System.CodeDom; using Microsoft.CSharp; using System.CodeDom.Compiler; class Program { static void Main(string[] args) { // 下载WSDL数据并创建代理类库 ServiceDescription serviceDesc = ServiceDescription.Read(http://localhost:60436/Learn.WEB/WebService.asmx?WSDL); CodeCompileUnit compileUnit = new CodeCompileUnit(); using (ServiceDescriptionImporter importer = new ServiceDescriptionImporter()) { importer.AddServiceDescription(serviceDesc); importer.Import(compileUnit); // 通过CodeDom编译代理类库 CSharpCodeProvider provider = new CSharpCodeProvider(); CompilerResults results = provider.CompileAssemblyFromDom(new System.CodeDom.Compiler.TempFileCollection(), compileUnit); // 使用反射调用WebService方法 MethodInfo methodInfo = results.CompiledAssembly.GetType(Namespace.WebService).GetMethod(MethodName); object result = methodInfo.Invoke(null, new object[] { }); Console.WriteLine(result); } } } ``` 以上代码展示了如何下载WSDL文档,将其转换为客户端代理类库,并最终通过反射机制来调用远程Web服务的方法。
  • C#.NETWeb服务
    优质
    本文介绍了在C#.NET环境下动态调用Web服务的三种不同方法,帮助开发者灵活选择最适合其项目需求的技术方案。 通常情况下,我们通过“添加 Web 引用...”的方式创建客户端代理类来调用WebService。但在某些场景下,我们需要在程序运行期间动态地调用一个未知的服务。本段落主要介绍了三种动态调用Webservice的方法。
  • C# WebService
    优质
    本篇文章将介绍如何在C#中实现动态调用WebService的技术细节和具体步骤,帮助开发者灵活高效地集成外部服务。 本示例主要展示了如何动态调用WebService服务,并且逻辑清晰。
  • C#开发Webservice及其
    优质
    本文将详细介绍如何使用C#编程语言创建和发布Web服务(Webservice),并深入探讨三种常见的Webservice客户端调用方式。 对于刚开始学习C#的人来说是有帮助的。
  • C# WebService数据返回式及其(四
    优质
    本文深入探讨了使用C#开发Web Service时数据返回的不同方式,并介绍了如何实现其动态调用,共涵盖四种实用的方法。适合中级以上开发者学习参考。 C# WebService 返回数据的四种方法包括使用 DataSet、序列化的DataSet、Microsoft组件处理序列化DataSet 以及 Microsoft 组件处理压缩后的序列化DataSet。此外,还可以通过动态调用来访问WebService。
  • C# WebService返回数据式及
    优质
    本文介绍了使用C#开发WebService时返回数据的四种常见方法,并探讨了如何实现动态调用这些服务。 C# WebService返回数据有四种方法:使用DataSet、序列化的DataSet、Microsoft组件处理的序列化DataSet以及Microsoft组件处理的压缩后的序列化DataSet。此外还可以通过动态调用来访问WebService。
  • C#SOAPWebService
    优质
    本文介绍了在C#编程语言中通过SOAP协议调用Web Service的具体方法和步骤,帮助开发者理解和实现远程服务交互。 最近我开发了一个SOA服务,起初以为别人拿到我的服务地址后可以直接添加引用使用了事。然而一位技术前辈告诉我这样做不行,并要求我提供一个SOAP调用的示例代码。这让我感到有些困惑,因为我之前没有接触过这方面的工作。于是我去寻找并找到了一个相关Demo进行学习研究。
  • C#
    优质
    本文将介绍在C#编程语言中如何实现动态调用类的方法,包括使用反射和动态类型等技术手段。通过实例讲解,帮助读者掌握灵活运用方法的能力。 本段落介绍了一种动态调用类方法的方法,类似于VB中的CallByName功能,并附带了C#和VB的代码示例。在某个项目中需要频繁地调用具有相同参数和返回值的一系列函数,因此想到了这种方法,可以通过循环来避免重复书写方法名。
  • 使C#通过HttpPostWebService
    优质
    本教程详细介绍了如何利用C#编程语言,采用HttpPost方式访问和调用远程Web Service中的具体方法。适合希望深入了解C#网络编程技术的开发者阅读与实践。 在C#中发送HttpPost请求来调用WebService中的MyAction方法的代码示例可以参考如下实现方式:需要的朋友可以根据实际情况进行调整使用。
  • C#带有SoapHeader验证WebService
    优质
    本文介绍了如何在C#编程环境中实现带有SoapHeader验证功能的WebService静态方法调用,详细讲解了其实现步骤和注意事项。 关于此代码的使用及相关配置,请参阅相关文档。开发环境为:Windows 8.1、Visual Studio 2013、IIS 8。注意,在测试代码时,需要重新部署 WebService 并修改客户端测试程序的服务引用。