我有一个实现给定接口(interface)的业务层,它有一个没有实现的 WCF 服务,只是将接口(interface)用作契约(Contract)。它路由到 BL 具体类:
BL层
public interface IClass1
{
List<int> GetData();
}
public class Class1 : IClass1
{
public List<int> GetData()
{
//...
}
}
WCF服务
<%@ ServiceHost Language="C#" Debug="true" Service="BusinessLayer.Class1" %>
<%@ Assembly Name="BusinessLayer" %>
在我的客户端,我有一个 MVVM Prism 模块,其中包含一个实现 IClass1 的服务类。这个想法是,我可以构建包含服务模块(通过服务与数据库通信)或直接包含 BL 项目的解决方案(在这种情况下,它将直接与数据库通信)。
这似乎工作得很好,但我想在我的应用程序中启用异步等待。通常我会使用
<method>Async
调用 WCF 服务方法。调用,并让它传回任务。但是我在执行此操作时遇到错误,基本上是告诉我我的服务模块实现需要返回 Task<List<int>>
使用等待时。因为 BL、服务层和服务模块之间只有一个接口(interface),这意味着修改接口(interface)本身以返回任务,但我更希望 WCF 服务能够返回
List<int>
(同步调用时)或 Task<List<int>>
当通过 Async 方法调用时。有没有办法在没有 WCF 服务的单独接口(interface)的情况下实现这一点?
最佳答案
WCF 服务器的“异步性”完全独立于其客户端代理。
所以,我认为改变界面是正确的做法。
IClass1.GetDataAsync
将返回 Task<List<int>>
. Task<List<int>>
, 并且可能是 async
. Task<List<int>> GetDataAsync()
以及 List<int> GetData()
在代理上。 关于c# - 通过 WCF 直接使用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079276/