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