Self-hosted WCF service: 如何访问对象/对象/, 从托管申请实施服务合同?

我独立发布服务 WCF 在客户 WPF. 我想显示服务在用户界面中接收的数据。 每次一些数据来都有,必须更新用户界面。

代码 "App.xaml.cs" 看起来像那样


private ServiceHost _host = new ServiceHost/typeof/MyService//;

private void Application_Startup/object sender, StartupEventArgs e/
{
_host.Open//;
}

private void Application_Exit/object sender, ExitEventArgs e/
{
_host.Close//;
}


我怎么能得到一个例子/S./ 从应用程序实现服务合同的对象 hosting WPF?

感谢大家的答案。

我没有看到设计师的事实是 ServiceHost 允许您传输

实例

服务而不是她

类型

.

因此,我现在正在做的是:

使用 ObservableCollection 在执行服务时

配置服务使其是 singleton /查看评论 theburningmonk/

绑定K. ObservableCollection 在我的申请中 WPF

使用数据绑定属性获取服务实例
http://msdn.microsoft.com/en-u ... .aspx
将其转移到构造函数 ServiceHost

结果:服务中的每个更新 singleton WCF 体现 UI.

快乐的!
已邀请:

董宝中

赞同来自:

据说 marc_s, 您创建服务 PerCall/PerSession WCF, 并使用每个请求创建新实例。/每个会话的第一个请求。

您可以在他身边构建一些管道工,以便在收到新请求时,实例可以通知主机,但它将是一个艰难的练习,如果您决定使用该事件,则需要记住潜在的内存泄漏您的服务实例的弱活动模板 WCF 可能仍然没有挂起。 事件处理程序仍包含对其的引用。 UNLESS 您没有忘记在服务副本时向主机通知主机 WCF 将被删除。

相反,这里有两个想法可以让您更轻松地实现目标:

使用



http://msdn.microsoft.com/en-u ... .aspx
, 如果您的服务可以完成 singleton, 在这种情况下,您将创建一个实现服务合同的新实例并将其放置:


// instance will be your WCF service instance
private ServiceHost _host = new ServiceHost/instance/;


因此,您将访问将提取客户端请求的实例。

或者,您可以拥有所有放置的实例 dummy 'fascades', 其中共享一个静态类,实际上处理请求:


[ServiceContract]
interface IMyService { ... }

interface IMyServiceFascade : IMyService { ... }

// dummy fascade
[ServiceBehavior/InstanceContextMode = InstanceContextMode.PerCall]
public class MyServiceFascade : IMyServiceFascade
{
private static IMyService _serviceInstance = new MyService//;

public static IMyService ServiceInstance { get { return _serviceInstance; } }

public int MyMethod//
{
return _serviceInstance.MyMethod//;
}
...
}

// the logic class that does the work
public class MyService : IMyService { ... }

// then host the fascade
var host = new ServiceHost/typeof/MyServiceFascade//;

// but you can still access the actual service class
var serviceInstance = MyServiceFascade.ServiceInstance;


我会说你必须使用第一种方法,如果可能的话,让生活更简单!

喜特乐

赞同来自:

没有一个对象类型的一个实例
MyService

, 哪个可用 - 默认 WCF 例如,使用每个调用的模型,例如,将为每个接收请求创建新实例。
MyService

, 用于处理此请求,然后发布。

因此,如果没有至少一个运行查询,最有可能的是,没有单一的服务实例。

你究竟想要实现这一点? 您可能需要重新考虑您的方法并从服务类的实例移动。 - 他有一个财产
.Host

, 它绑定到该特定服务实例所在的主机。

要回复问题请先登录注册