kev*_*ley 42 .net c# vb.net wcf callback
我正在努力学习WCF.我有一个简单的客户端和服务器应用程序设置,并在按下客户端上的按钮后,它从服务器获取更新的值.
我的下一步是尝试从服务器到客户端进行回调以更新其值.我已经倾注了许多例子,它们看起来太大而且令人困惑.有没有人可以在C#中提供我最简单的实现示例?
我一直在线查看示例,我只是不明白它需要什么?当然,我可以逐行复制示例,但这对我没有好处,因为如果我想在我自己的代码中执行此操作,我仍然没有实现.
有人可以帮我一个非常简单的例子,说明我需要采取什么步骤以及我需要在服务器代码中做什么,然后在客户端代码中才能实现这一点?
谢谢
Ray*_*gus 85
这是关于我能想出的最简单的完整示例:
public interface IMyContractCallback
{
[OperationContract]
void OnCallback();
}
[ServiceContract(CallbackContract = typeof(IMyContractCallback))]
public interface IMyContract
{
[OperationContract]
void DoSomething();
}
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Reentrant)]
public class MyService : IMyContract
{
public void DoSomething()
{
Console.WriteLine("Hi from server!");
var callback = OperationContext.Current.GetCallbackChannel<IMyContractCallback>();
callback.OnCallback();
}
}
public class MyContractClient : DuplexClientBase<IMyContract>
{
public MyContractClient(object callbackInstance, Binding binding, EndpointAddress remoteAddress)
: base(callbackInstance, binding, remoteAddress) { }
}
public class MyCallbackClient : IMyContractCallback
{
public void OnCallback()
{
Console.WriteLine("Hi from client!");
}
}
class Program
{
static void Main(string[] args)
{
var uri = new Uri("net.tcp://localhost");
var binding = new NetTcpBinding();
var host = new ServiceHost(typeof(MyService), uri);
host.AddServiceEndpoint(typeof(IMyContract), binding, "");
host.Open();
var callback = new MyCallbackClient();
var client = new MyContractClient(callback, binding, new EndpointAddress(uri));
var proxy = client.ChannelFactory.CreateChannel();
proxy.DoSomething();
// Printed in console:
// Hi from server!
// Hi from client!
client.Close();
host.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
为了运行示例,需要包含一些名称空间:
using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
32557 次 |
最近记录: |