none
有关WCF双向协议的问题 RRS feed

  • 问题

  • 我在网上找到了一个有关WCF双向协议的小例子

     

    协议接口是这么写的:

    [ServiceContract(CallbackContract=typeof(MyContract.ICalculatorCallback))]
        public interface IDuplexCalculator
        {
            [OperationContract]
            double Add(double x,double y);
        }

    回调协议接口是这么写的:

    /// <summary>
        /// 定义回调服务协定
        /// </summary>
        [ServiceContract]
        public interface ICalculatorCallback
        {
            [OperationContract]
            void ShowResult(double x,double y,double result);
        }

    具体服务的实现就不写了。

    客户端是这么写的:

    static void Main(string[] args)
            {
                try
                {
                    InvocateDuplexCalculator();
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                Console.Read();
            }

            static void InvocateDuplexCalculator()
            {
                CalculatorCallbackHandler callBackHandler = new CalculatorCallbackHandler();
                using (DuplexCalculatorClient calculator = new DuplexCalculatorClient( new InstanceContext(callBackHandler)))
                {
                    Console.WriteLine("开始调用双向计算器....");
                    Console.WriteLine("x + y = {2} , x = {0} , y = {1}", 20, 30, calculator.Add(20, 30));
                }
            }

    运行后

    宿主程序的显示是:

    “双向服务开始监听......”

    客户端显示的是:

    “开始调用双向计算器......”

    “x + y = 50 , x = 20 , y = 30”

     

    我现在不明白的是

    运行后的结果跟单向的不一样吗?

    服务器没有调用客户端的方法吧?

    怎么体现的是双向的?

    不知道我说没说清楚我的问题?

    2008年11月21日 1:06