【发布时间】:2016-10-27 13:32:16
【问题描述】:
这是一个非常菜鸟的问题。我想知道 WCF 的单向合约是否比返回结果的对应合约更快。例如是
[OperationContract(IsOneWay=true)]
[WebGet(UriTemplate = "/SendData/{data}", BodyStyle = WebMessageBodyStyle.WrappedResponse,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
void SendData(string data)
快于
[OperationContract(IsOneWay=false)]
[WebGet(UriTemplate="/SendData/{data}", BodyStyle = WebMessageBodyStyle.WrappedResponse,
RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
bool SendData(string data)
方法 SendData 是这样的,有很多数据库代码和锁定
bool SendData(string data)
{
check if data is valid
if(data is valid)
{
lock(a database table)
{
search duplicate data
if(duplicate data found)
{
does not do anything (no-op)
}
else
{
save a data to the table
}
return true;
}
}
else
{
return false;
}
}
正如你所看到的 bool SendData(string data) 方法,有很多数据库和锁定代码。问题的要点是我是否应该将 Operation Contract 更改为一种方式,以便在不更改的情况下使用相同的代码获得更快的结果任何东西。或者我的 SendData 方法应该像下面这样更快地返回方法
void SendData(string data)
{
Task.Factory.StartNew(() =>
{
Do Task
}
);
}
【问题讨论】:
-
我使用 Android Volley 作为 JSON 客户端。