3 Approach to achieve Async call in WCF
来源:互联网 发布:wind数据库账号注册 编辑:程序博客网 时间:2024/06/14 14:58
Approach One: using proxy client)
http://msdn.microsoft.com/en-us/library/ms730059.aspx
event-driven asynchronous calling model
Service Side
[ServiceContract] public interface IService { [OperationContract] double Add(double a, double b); }
public class Service : IService { public double Add(double a, double b) { return a + b; } }
C:\windows\system32>svcutil http://localhost:8000/mex /a /tcv:Version35
Client Side
static void Main(string[] args) { Console.WriteLine("Press <ENTER> to terminate client once the output is displayed."); Console.WriteLine(); // Create a client ServiceClient client = new ServiceClient(); // AddAsync double value1 = 100.00D; double value2 = 15.99D; client.AddCompleted += new EventHandler<AddCompletedEventArgs>(AddCallback); client.AddAsync(value1, value2); Console.WriteLine("Add({0},{1})", value1, value2); Console.ReadLine(); } // Asynchronous callbacks for displaying results. static void AddCallback(object sender, AddCompletedEventArgs e) { Console.WriteLine("Add Result: {0}", e.Result); }
Approach Two: Using Channel Factory
http://msdn.microsoft.com/en-us/library/bb885132.aspx
Service Side
[ServiceContract] public interface IService { [OperationContract] double Add(double a, double b); }
public class Service : IService { public double Add(double a, double b) { return a + b; } }
C:\windows\system32>svcutil http://localhost:8000/mex /a
Client Side
static void Main(string[] args) { ChannelFactory<IServiceChannel> factory = new ChannelFactory<IServiceChannel>("BasicHttpBinding_IService"); IServiceChannel channelClient = factory.CreateChannel(); // BeginAdd double value1 = 100.00D; double value2 = 15.99D; IAsyncResult arAdd = channelClient.BeginAdd(value1, value2, AddCallback, channelClient); Console.WriteLine("Add({0},{1})", value1, value2); Console.ReadLine(); } static void AddCallback(IAsyncResult ar) { double result = ((IServiceChannel)ar.AsyncState).EndAdd(ar); Console.WriteLine("Add Result: {0}", result); } }
Approach Three: Add Service Reference
Client Code:
static void Main(string[] args) { ChannelFactory<IService> factory = new ChannelFactory<IService>("BasicHttpBinding_IService"); IService channelClient = factory.CreateChannel(); // BeginAdd double value1 = 100.00D; double value2 = 15.99D; IAsyncResult arAdd = channelClient.BeginAdd(value1, value2, AddCallback, channelClient); Console.WriteLine("Add({0},{1})", value1, value2); Console.ReadLine(); } static void AddCallback(IAsyncResult ar) { double result = ((IService)ar.AsyncState).EndAdd(ar); Console.WriteLine("Add Result: {0}", result); }
OR
static void Main(string[] args) { Console.WriteLine("Press <ENTER> to terminate client once the output is displayed."); Console.WriteLine(); // Create a client ServiceClient client = new ServiceClient(); // AddAsync double value1 = 100.00D; double value2 = 15.99D; client.AddCompleted += new EventHandler<AddCompletedEventArgs>(AddCallback); client.AddAsync(value1, value2); Console.WriteLine("Add({0},{1})", value1, value2); Console.ReadLine(); } // Asynchronous callbacks for displaying results. static void AddCallback(object sender, AddCompletedEventArgs e) { Console.WriteLine("Add Result: {0}", e.Result); }
- 3 Approach to achieve Async call in WCF
- 2 approach achieve Duplex call at Client Side
- How to achieve Long click in Uiautomator
- How to call SQL SP in WCF ria services.
- 8 Ways to Achieve Success in 2008[转贴]
- How to achieve success in a particular field
- How To Achieve Ultimate Blog Success In One Easy Step
- How to achieve network disk by samba in linux?
- not found in achieve
- 3 approach to create mex endpoint
- How to Call WCF Services Synchronously and Asynchronously
- How to Call WCF Services Synchronously and Asynchronously
- Set a goal, try to achieve it!
- Oralce: Sequence & Trigger to Achieve Auto-Increment
- Using 'COMMAND' to achieve page break
- How to Call C# DLL in Delphi7
- How to Call Back In Com ?
- How to call API in Java
- CSDN博客下载器v2.0发布(导出PDF)
- 多态
- IC设计书籍信息收集
- 急急急!求解答!
- UML基础知识
- 3 Approach to achieve Async call in WCF
- 用c++实现欧拉回路的寻找(杭电ACM)
- 【100题】第三十七 字符串连接问题
- 螺旋数列
- 基于ubuntu10之利用脚本帮你完成监控任务
- 分享一个Firefox11.0和Firefox12.0照常使用Google工具栏的方法
- 算法导论学习笔记(10)——动态规划之最优二叉查找树
- 利用tftp上传和下载资料到目标板
- Java中堆内存和栈内存详解