WCF Serives 的调用。通常我们是通过在项目中添加Services references 来调用的。
现在我来介绍另一种调用方式。英文资料很多。但是中文资料目前没看到过。
第一步:准备工作
新建一个silverlight Application。并且在silverlight 项目中添加一个wcf service 叫做 Service1 包括两个文件
IService1.cs和Service1.svc
并在其中添加一个方法HelloAction
interface
1 [ServiceContract]2 public interface IService13 {4 [OperationContract]5 void DoWork();6 7 [OperationContract]8 string HelloAction();9 }
Implement
1 public class Service1 : IService1 2 { 3 public void DoWork() 4 { 5 } 6 7 8 public string HelloAction() 9 {10 return "HelloWord";11 }12 }
第二步:在Silverlight 项目中添加接口文件
View Code
1 [ServiceContract]2 public interface IService13 {4 [OperationContract(AsyncPattern = true)]5 IAsyncResult BeginHelloAction(AsyncCallback callback, Object state);6 string EndHelloAction(IAsyncResult result);7 }
第三步: 调用
调用
EndpointAddress endpointAddress = new EndpointAddress(uri); IService1 s = new ChannelFactory(new BasicHttpBinding(), endpointAddress).CreateChannel(); s.BeginHelloAction(callback => { string result = s.EndHelloAction(callback); //Deployment.Current.Dispatcher.BeginInvoke(() => //{ // textBox1.Text = result; //}); }, null);