[英]difference in consume WCF service - Console vs Silverlight
谁能告诉我为什么有wcf合同:
[ServiceContract]
public interface IService1
{
[OperationContract]
string TestGetName();
}
和实施
public string TestGetName()
{
return "Kasia";
}
当我尝试在控制台应用程序中使用它时,我可以这样做:
Service1Client client = new Service1Client();
Console.WriteLine((client.TestGetName()));
但是在Silverlight中,我必须使用这种方式:
Service1Client clientTest = new Service1Client();
clientTest.TestGetNameCompleted += new EventHandler<TestGetNameCompletedEventArgs>(clientTest_TestGetNameCompleted);
clientTest.TestGetNameAsync();
void clientTest_TestGetNameCompleted(object sender, TestGetNameCompletedEventArgs e)
{
this.dataGridChild.DataContext = e.Result;
}
为什么在SL中我没有看到第一个简短的解决方案,而只有事件处理程序显示了? 或者更好...为什么在控制台应用程序中我可以选择同步操作生成,而在SL中我必须使用生成异步操作...:/
同步调用将停止Silverlight UI线程,并可能停止执行环境,即浏览器。 为了防止这种情况,只允许异步调用。
当然,起初这是不寻常的,但是从长远来看,将视图和服务层分离实际上是有帮助的。
Silverlight不支持同步调用(这是您在控制台应用程序中正在执行的操作)。
更新: http : //forums.silverlight.net/forums/p/34531/104526.aspx “主要要点是,由于所有浏览器均不支持同步行为,因此似乎删除了同步行为。”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.