我們正在將服務器應用程式升級到 .NET Core 6。它通過 .ASMX 頁面向多個現有客戶端提供 SOAP Web 服務。.NET Core 不再支持服務器端 WCF。gRPC,或者至少是 CoreWCF,是推薦的替代方案。不幸的是,我們無法控制數百個已部署的客戶端應用程式。替代方案必須與它們完全兼容,包括硬編碼的 URL 和訊息格式。
據我了解,gRPC 是 WCF 的替代品,但尚不清楚它是否能夠支持 SOAP over HTTP。另一種替代方案 CoreWCF 確實支持它,但對于權宜之計來說,它可能是一項重大的技術投資。將學習曲線利用到更當前的狀態會很好。目前尚不清楚這兩種解決方案是否能夠為 ASMX 檔案提供服務。
gRPC 是否支持 SOAP?如果是這樣,它是直截了當的,還是需要大量的開發作業?最后,CoreWCF 或 gRPC 是否支持提供 ASMX 檔案?如果沒有,是否可以簡單地無縫回應 ASMX URL?
uj5u.com熱心網友回復:
我找到了 SoapCore,一個完美滿足我們需求的解決方案。
https://github.com/DigDes/SoapCore
我錯誤地認為 ASMX 是 WCF 功能,但它只是 ASP.NET 為基本服務器端 HTTP/SOAP 提供的一種工具。由于我們的應用程式基于 ASP.NET,因此可以通過 MVC URL 路由訪問 ASMX URL:
public void ConfigureServices(IServiceCollection services)
{
services.AddSoapCore();
services.TryAddSingleton<ServiceContractImpl>();
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseRouting();
// Route "ServicePath.asmx" to our service endpoint
app.UseEndpoints(endpoints => {
endpoints.UseSoapEndpoint<ServiceContractImpl>("/ServicePath.asmx", new SoapEncoderOptions(), SoapSerializer.DataContractSerializer);
});
}
雖然它是一個權宜之計的解決方案,但它特別是一個 SOAP 訊息傳遞庫,而不是一個通用協議框架。設定它并將其投入生產需要簡單明了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/515464.html
上一篇:遠程服務器回傳例外:(413)RequestEntityTooLarge
下一篇:使用XmlSerializer的SoapCoreWCFC#程式不會使用帶有CancellationToken的異步方法創建WSDL
