前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 .NET Core 上使用 dotnet-svcutil.xmlserializer

在 .NET Core 上使用 dotnet-svcutil.xmlserializer

作者头像
用户4268038
发布2022-01-07 08:43:36
5830
发布2022-01-07 08:43:36
举报
文章被收录于专栏:stcnb

dotnet-svcutil.xmlserializer NuGet 包可以为 .NET Core 项目预生成序列化程序集。 它为客户端应用程序中由 WCF 服务协定使用的且可由 XmlSerializer 序列化的类型预生成 C# 序列化代码。 当序列化或反序列化这些类型的对象时,这会提高 XML 序列化的启动性能。

先决条件

.NET Core 2.1 SDK 或更高版本

你最喜欢的代码编辑器

可以使用命令 dotnet --info 检查已安装哪些版本的 .NET SDK 和运行时。

入门

在 .NET Core 控制台应用程序中使用 dotnet-svcutil.xmlserializer:

在 .NET Framework 中使用默认模板“WCF 服务应用程序”创建一个名为“MyWCFService”的 WCF 服务。 在服务方法上添加 [XmlSerializerFormat] 属性,如下所示:

代码语言:javascript
复制
 [ServiceContract]
 public interface IService1
 {
     [XmlSerializerFormat]
     [OperationContract(Action = "http://tempuri.org/IService1/GetData", ReplyAction = "http://tempuri.org/IService1/GetDataResponse")]
     string GetData(int value);
 }

创建 .NET Core 控制台应用程序作为面向 .NET Core 2.1 或更高版本的 WCF 客户端应用程序。 例如,使用以下命令创建名为“MyWCFClient”的应用:

代码语言:javascript
复制
dotnet new console --name MyWCFClient

要确保项目面向 .NET Core 2.1 或更高版本,请检查项目文件中的 TargetFramework XML 元素:

代码语言:javascript
复制
<TargetFramework>netcoreapp2.1</TargetFramework>

通过运行以下命令将包引用添加到 System.ServiceModel.Http:

代码语言:javascript
复制
dotnet add package System.ServiceModel.Http

添加 WCF 客户端代码:

代码语言:javascript
复制
using System.ServiceModel;
    class Program
    {
        static void Main(string[] args)
        {
            var myBinding = new BasicHttpBinding();
            var myEndpoint = new EndpointAddress("http://localhost:2561/Service1.svc"); //Fill your service url here
            var myChannelFactory = new ChannelFactory<IService1>(myBinding, myEndpoint);
            IService1 client = myChannelFactory.CreateChannel();
            string s = client.GetData(1);
            ((ICommunicationObject)client).Close();
        }
    }
[ServiceContract]
public interface IService1
{
    [XmlSerializerFormat]
    [OperationContract(Action = "http://tempuri.org/IService1/GetData", ReplyAction = "http://tempuri.org/IService1/GetDataResponse")]
    string GetData(int value);
}

通过运行以下命令将引用添加到 dotnet-svcutil.xmlserializer 包:

代码语言:javascript
复制
dotnet add package dotnet-svcutil.xmlserializer

运行该命令应向项目文件中添加一个类似于以下内容的条目:

代码语言:javascript
复制
<ItemGroup>
  <DotNetCliToolReference Include="dotnet-svcutil.xmlserializer" Version="1.0.0" />
</ItemGroup>

通过运行 dotnet build 生成应用程序。 如果一切顺利,则会在输出文件夹中生成名为“MyWCFClient.XmlSerializers.dll”的程序集。 如果该工具无法生成程序集,将在生成输出中看到警告。

例如,通过在浏览器中运行 http://localhost:2561/Service1.svc 来启动 WCF 服务。 然后启动客户端应用程序,它将在运行时自动加载和使用预生成的序列化程序。

本文系外文翻译,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系外文翻译前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档