WCF 双工的学习
发布日期:2021-06-24 18:14:06 浏览次数:2 分类:技术文章

本文共 4226 字,大约阅读时间需要 14 分钟。

初学WCF。。。。

服务端:

服务契约:
[ServiceContract(Namespace ="http://serverModel.Samples",SessionMode =SessionMode.Required,         CallbackContract = typeof(ICalcualtorDuplexCallBack))]     public interface IService2     {        [OperationContract(IsOneWay = true)]         void Clear();         [OperationContract(IsOneWay = true)]         void Add(double input);          [OperationContract(IsOneWay = true)]        void Subtraction(double input);          [OperationContract(IsOneWay = true)]         void Multiplication(double input);          [OperationContract(IsOneWay =true)]         void Addition(double input);      }      ///      /// 回调     ///      public interface ICalcualtorDuplexCallBack     {         [OperationContract(IsOneWay = true)]         void Equals(double result);          [OperationContract(IsOneWay = true)]         void Equation(string eqn);     }
 

服务部分:

1   public class Service2 : IService2 2      { 3          private double _result; 4          private string _equation; 5          private ICalcualtorDuplexCallBack _callback = null; 6          public Service2() 7          { 8              _result = 0.0D; 9              _equation = _result.ToString(CultureInfo.InvariantCulture);10              //获得Callback回调的公告11              _callback = OperationContext.Current.GetCallbackChannel
();12 }13 ///
14 /// 清除15 /// 16 public void Clear()17 {18 _callback.Equation(_equation+"="+_result.ToString(CultureInfo.InvariantCulture));19 _result = 0.0D;20 _equation = _result.ToString(CultureInfo.InvariantCulture);21 }22 ///
23 /// 增加24 /// 25 ///
参数26 public void Add(double input)27 {28 _result += input;29 _equation += "+" + input.ToString(CultureInfo.InvariantCulture);30 _callback.Equals(_result);31 }32 ///
33 /// 减34 /// 35 ///
参数36 public void Subtraction(double input)37 {38 _result -= input;39 _equation += "-" + input.ToString(CultureInfo.InvariantCulture);40 _callback.Equals(_result);41 }42 ///
43 /// 乘44 /// 45 ///
参数46 public void Multiplication(double input)47 {48 _result *= input;49 _equation += "*" + input.ToString(CultureInfo.InvariantCulture);50 _callback.Equals(_result);51 52 }53 ///
54 /// 除55 /// 56 ///
参数57 public void Addition(double input)58 {59 _result /= input;60 _equation += "*" + input.ToString(CultureInfo.InvariantCulture);61 _callback.Equals(_result); 62 }63 64 65 }

 配置文件:app.config

在双工的时候 不支持 BasicHttpBinding,改wsDualHttpBinding 

客户端:

客户端
public partial class Window1 : Window,ServiceReference2.IService2Callback     {         public Window1()         {             InitializeComponent();         }          private void button1_Click(object sender, RoutedEventArgs e)         {             System.ServiceModel.InstanceContext instanceContext = new InstanceContext(this);             ServiceReference2.Service2Client clientw = new Service2Client(instanceContext);             double value = 2.0D;             clientw.Open();             clientw.Add(value);             clientw.Subtraction(value);             clientw.Multiplication(value);             clientw.Addition(value);             clientw.Clear();             clientw.Close();               }          public void Equals(double result)         {           //  MessageBox.Show("Result:"+result);             Console.WriteLine("Result:" + result);         }          public void Equation(string eqn)         {              Console.WriteLine("Equation:" + eqn);         }     } }

 

转载地址:https://blog.csdn.net/weixin_34248258/article/details/86059151 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:SPOJ 1825 Free tour II(树的点分治)
下一篇:飞鸽TCP/IP 10106错误解决

发表评论

最新留言

哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月31日 03时11分02秒