自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

.Net之SoapCore簡單使用

開發(fā) 后端
最近在工作中,需要同時放出來WebAPI接口和支持Soap協(xié)議的WebService接口,在dotNetFramework時候玩過WebService,這可是好久沒再碰過了,沒想到現(xiàn)在居然遇到了。只好迎難而上。

[[423278]]

最近在工作中,需要同時放出來WebAPI接口和支持Soap協(xié)議的WebService接口,在dotNetFramework時候玩過WebService,這可是好久沒再碰過了,沒想到現(xiàn)在居然遇到了。只好迎難而上。

介紹

本來是在ASP.NetCore中使用了組件SoapCore來使用Soap協(xié)議。

支持以下框架:

  • .NET 5.0(使用 ASP.NET Core 5.0)
  • .NET Core 3.1(使用 ASP.NET Core 3.1)
  • .NET Core 2.1(使用 ASP.NET Core 2.1)
  • .NET Standard 2.0(使用 ASP.NET Core 2.1)

官網(wǎng):https://github.com/DigDes/SoapCore

操作

準備工作

為了省事,我還在之前的文章demo上面操作,地址是:https://gitee.com/AZRNG/my-example ,分支是:inmemory_soap ,當前項目已經(jīng)包含一些WebAPI接口,我要實現(xiàn)使用Soap協(xié)議也放出這些接口,共用UserService類。

開始編寫接口

環(huán)境:dotnet5.0 + SoapCore 1.1.0.10

安裝組件

  1. <PackageReference Include="SoapCore" Version="1.1.0.10" /> 

ConfigureServices中注入SoapCore

  1. services.AddSoapCore(); 

新建User WebService

  1. /// <summary> 
  2. /// User WebService 
  3. /// </summary> 
  4. [ServiceContract] 
  5. public class UserContractImpl 
  6.     private readonly IUserService _userService; 
  7.     private readonly IMapper _mapper; 
  8.  
  9.     public UserContractImpl(IUserService userService, 
  10.         IMapper mapper) 
  11.     { 
  12.         _userService = userService; 
  13.         _mapper = mapper; 
  14.     } 
  15.  
  16.     /// <summary> 
  17.     /// 查詢用戶列表 
  18.     /// </summary> 
  19.     /// <returns></returns
  20.     [OperationContract] 
  21.     public async Task<List<User>> GetListAsync() 
  22.     { 
  23.         return await _userService.GetListAsync(); 
  24.     } 
  25.  
  26.     /// <summary> 
  27.     /// 查詢詳情 
  28.     /// </summary> 
  29.     /// <param name="id"></param> 
  30.     /// <returns></returns
  31.     [OperationContract] 
  32.     public async Task<User> GetDetailsAsync(string id) 
  33.     { 
  34.         return await _userService.GetDetailsAsync(id); 
  35.     } 
  36.  
  37.     /// <summary> 
  38.     /// 添加 
  39.     /// </summary> 
  40.     /// <param name="dto"></param> 
  41.     /// <returns></returns
  42.     [OperationContract] 
  43.     public async Task<string> AddAsync(AddUserVm dto) 
  44.     { 
  45.         return await _userService.AddAsync(dto); 
  46.     } 
  47.  
  48.     /// <summary> 
  49.     /// 刪除 
  50.     /// </summary> 
  51.     /// <param name="id"></param> 
  52.     [OperationContract] 
  53.     public async Task<int> DeleteAsync(string id) 
  54.     { 
  55.         return  await _userService.DeleteAsync(id); 
  56.     } 

ConfigureServices中注入

  1. services.AddTransient(); 

Configure中配置終結(jié)點路由

  1. app.UseEndpoints(endpoints => 
  2.     endpoints.MapControllers(); 
  3.  
  4.     var binging = new BasicHttpBinding(); 
  5.     binging.ReaderQuotas.MaxStringContentLength = int.MaxValue; 
  6.     endpoints.UseSoapEndpoint<UserContractImpl>("/UserContractImpl.asmx", binging, SoapSerializer.DataContractSerializer); 
  7. }); 

訪問地址:http://localhost:5000/UserContractImpl.asmx

WebApi程序客戶端

新建dotnet5.0項目

選中項目右鍵=>添加=>服務(wù)引用=>WCF Web Service

輸入url,點擊go出來服務(wù)

下一步

最后一直下一步直到完成

這個時候vs已經(jīng)幫我們生成了調(diào)用的方法,后期地址有變動可以直接去修改這個代碼。

ConfigureServices中注冊

  1. services.AddSingleton<UserContractImpl>(new UserContractImplClient(UserContractImplClient.EndpointConfiguration.BasicHttpBinding)); 

控制器注入

  1. private readonly UseService.UserContractImpl _userContractImpl; 
  2.  
  3. public HomeController( UseService.UserContractImpl userContractImpl) 
  4.     _userContractImpl = userContractImpl; 

使用里面的接口

  1. var result = await _userContractImpl.AddAsync(new UseService.AddUserVm 
  2.     Account = "123"
  3.     PassWord = "456"
  4.     Sex = UseService.SexEnum.Man 
  5. }); 
  6. var list = await _userContractImpl.GetListAsync(); 

通過先調(diào)用添加接口然后調(diào)用查詢接口可以查詢到我們剛才添加到的數(shù)據(jù)。

控制臺程序

向上面一樣將Soap服務(wù)引用到項目中

事例一:直接構(gòu)建UserContractImplClient

  1. var client = new UserContractImplClient(UserContractImplClient.EndpointConfiguration.BasicHttpBinding); 
  2. var str = await client.AddAsync(new AddUserVm 
  3.     Account = "23456"
  4.     PassWord = "456"
  5.     Sex = SexEnum.Noknow 
  6. }); 
  7. var list = client.GetListAsync(); 

事例二:

  1. // 創(chuàng)建 HTTP 綁定對象 
  2. var binding = new BasicHttpBinding(); 
  3. // 根據(jù) WebService 的 URL 構(gòu)建終端點對象 
  4. var endpoint = new EndpointAddress(@"http://localhost:5000/UserContractImpl.asmx"); 
  5. // 創(chuàng)建調(diào)用接口的工廠,注意這里泛型只能傳入接口 
  6. var factory = new ChannelFactory<UserContractImplChannel>(binding, endpoint); 
  7. // 從工廠獲取具體的調(diào)用實例 
  8. var callClient = factory.CreateChannel(); 
  9. // 調(diào)用具體的方法,這里是 GetListAsync 方法。 
  10. var result = await callClient.GetListAsync(); 

參考文檔

 

https://github.com/DigDes/SoapCore

 

責任編輯:武曉燕 來源: 鵬祥
相關(guān)推薦

2021-06-08 09:28:12

.Net通知服務(wù)

2009-07-28 13:20:38

ASP.NET筆試題

2009-10-12 13:11:48

VB.NET使用線程

2021-06-07 08:07:39

.NETSDK操作

2010-06-01 18:03:05

Rsync 使用

2017-03-29 15:20:25

AndroidRootTools框架

2010-06-01 17:44:14

Rsync 使用

2009-10-30 15:51:30

VB.NET使用缺省屬

2021-05-14 07:20:07

.NetSwagger使用

2011-02-17 09:13:57

ASP.NET

2009-08-24 18:14:35

ASP.NET調(diào)試Log4net

2009-11-13 10:31:07

ADO.NET Dat

2009-08-06 15:21:45

ASP.NET控件開發(fā)RenderConte

2009-12-21 14:55:49

ADO.NET類庫

2009-07-29 13:12:36

StringBuildASP.NET技巧

2010-06-01 18:11:25

Rsync 使用

2009-09-11 11:30:53

Net60C#.NET

2014-06-30 15:10:32

2009-10-16 13:26:53

VB.NET Exce

2023-03-08 07:25:08

HadoopEFAKKSQL
點贊
收藏

51CTO技術(shù)棧公眾號