2016-05-23 52 views
2

我正在调用.NET Core RC2应用程序中的.NET 4.6服务。.NET Core RC2 - 使用外部WCF

我已经在微软提供的WCF测试客户端中测试过服务,它工作正常,我想现在在我的.NET核心应用程序中使用它,但我不确定如何做到这一点。

我已经尝试使用svcutil生成服务引用文件,但我猜这不是真的为新的.NET框架设计,因为它使用IExtensibleDataObject,它不存在于Core和名称空间System.Runtime现在似乎已经分成Xml,Primitives和Json的串行化。

有没有人有一个例子,我可以简单地使用外部(不在我的项目中)WCF。

非常感谢

+0

你可以分享服务配置吗? – Enes

+0

我还没有找到任何示例,但wcf客户端库应在nuget中可用。也许你可以使用实现https://github.com/dotnet/wcf中的一些测试用例。 – Thomas

回答

4

微软发布"WCF Connected Service for .NET Core RC2 and ASP.NET Core RC2"。它应该完成这项工作。

我用它来生成客户端代码为我服务:

[System.Diagnostics.DebuggerStepThroughAttribute()] 
[System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "0.2.0.0")] 
[System.Runtime.Serialization.DataContractAttribute(Name="Person", Namespace="http://schemas.datacontract.org/2004/07/Mock")] 
public partial class Person : object 
  • 它采用[System.Runtime.Serialization.DataMemberAttribute()]DataContract性质

    1. DataContract类使用这些属性它使用这些属性来定义服务合同:

      [System.CodeDom.Compiler.GeneratedCodeAttribute("dotnet-svcutil", "0.2.0.0")] 
      [System.ServiceModel.ServiceContractAttribute(ConfigurationName="Mock.IMockService")] 
      public interface IMockService 
      
    2. 这是合同接口内部的样品opertaion定义:

      [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IMockService/LookupPerson", ReplyAction="http://tempuri.org/IkMockService/LookupPersonResponse")] 
      System.Threading.Tasks.Task<Mock.LookupPersonResponse> LookupPersonAsync(Mock.LookupPersonRequest request); 
      
    3. 要标记请求和响应对象,它使用:请求/响应的

      [System.ServiceModel.MessageContractAttribute(WrapperName="LookupPerson", WrapperNamespace="http://tempuri.org/", IsWrapped=true)] 
      public partial class LookupPersonRequest 
      
    4. 和财产注明:

      [System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://tempuri.org/", Order=0)] 
      public CepikMock.PersonSearchCriteria criteria; 
      
    5. 最后,它产生基本IClientChannel接口

    6. 而一个ClientBase实现

      public partial class MockServiceClient : System.ServiceModel.ClientBase<Mock.IMockService>, Mock.IMockService 
      
    7. 客户端类里面,每个服务方法公开这样的:

      public System.Threading.Tasks.Task<Mock.LookupPersonResponse> LookupPersonAsync(Mock.LookupPersonRequest request) 
      { 
          return base.Channel.LookupPersonAsync(request); 
      }