返回首页

简介
当我开始学习WCF和WPF,从一个好教练的训练后,我发现许多聊天应用程序,在互联网,NBSP,因为他们不能返回的聊天应用程序内的用户列表。我想创造一个很好的WPF风格的应用程序连接的用户。
这是一个非常简单的应用,对于初学者,它清楚地告诉你如何创建简单的应用程序不使用SVCUtiil非常。
这个应用程序还告诉你喜欢的绑定,模板,资源和etc.nbsp的概念简单的WPF;背景
在这里,我的客户端连接数
{S0的}
NBSP服务;
NBSP
一旦你在你的签名,可以看到左侧的在线用户数{BR。 }
{S2的}
使用代码
,这里是Iservice的合同,其中有一个ICallBack callbackContract。应用程序使用NetNamedPipe结合,所以它在单台PC机有限的,如果你想要做的,整个机器,然后只需添加IP地址,在本地主机的地方。
由于我们要落实在服务端和ICallBack合同的Iservice合同客户端

  [ServiceContract(CallbackContract= typeof(ICallBack))]

    public interface Iservice

    {

        [OperationContract]

        void AddClient(string name);



        [OperationContract]

        void RemoveClient(string name);



        [OperationContract]

        void Postmessage(string Message);

       

        [OperationContract]

        List<string> getusers();

    }  
{C1的}
NBSP。NBSP
服务交互类约通道创造andnbsp; communicationnbsp的关心与服务,这是由svcutil的生成代理相同NBSP。; CustomEventHandler 是,定制events.nbsp自定义EventArgs;
 class ServiceInteracion: ICallBack

    {

        DuplexChannelFactory<Iservice> channel;

        public event EventHandler<CustomEventHandler> NotifyMessageEvent;

        public event EventHandler<CustomEventHandler> NotifyUserEvent;

        public event EventHandler<CustomEventHandler> notifyUserRemoved;

        Iservice ser;

        public ServiceInteracion()

        {

            channel = new DuplexChannelFactory<Iservice>(new InstanceContext(this),

                                                         new NetNamedPipeBinding(), 

                                                         new EndpointAddress("net.pipe://localhost/service"));

            ser = channel.CreateChannel();

        }



        internal void AddClient(string p)

        {

            this.ser.AddClient(p);

        }



        internal List<string> Getusers()

        {

           return this.ser.getusers();

        }



        internal void Postmessage(string p)

        {

            this.ser.Postmessage(p);

        }







        public void NotifyUser(string users)

        {

            if (NotifyUserEvent != null)

            {

                NotifyUserEvent(this, new CustomEventHandler { Name = users});

            }

        }



        public void NotifyMessage(string name,string message)

        {

            if (NotifyMessageEvent != null)

            {

                NotifyMessageEvent(this, new CustomEventHandler 

                                        {Name= name, Messgae= message});

            }

        }



        internal void RemoveClient(string Name)

        {

            this.ser.RemoveClient(Name);

        }





        public void NotifyUserRemoved(string name)

        {

            if (notifyUserRemoved != null)

                notifyUserRemoved(this, new CustomEventHandler { Name = name });

        }

    }   

服务与装饰[ServiceBehavior(ConcurrencyMode ConcurrencyMode.Reentrant)] NBSP属性设置thenbsp;重新entrantnbsp;执行模式。服务classnbsp; implementsnbsp; Iservice合同和alsonbsp; maintainsnbsp; annbsp; staticnbsp;收集用户added.nbsp;
[ServiceBehavior(ConcurrencyMode ConcurrencyMode.Reentrant的体)] {体C3}点; Interestnbsp { BR} 简单的WCF应用没有SVCUtill。相同的客户端可以创建通过添加代理和App.config SVCUtill.History
创建保持运行的任何改变或改善你已经更新这里所作。

回答

评论会员: 时间:2
|