0

请理解,我是微软商店开发的新手......

我正在使用 silverlight / c# 来设计一个可移植的基于 Web 的 UI(我称之为“WebUI”),它必须能够远程连接到同一类的多个实例(我们称之为“RemoteClass”),获取“状态”每个实例并有选择地调用实例方法。

这个想法是用户将手动实例化所有 RemoteClass 实例,如果他需要前往另一个位置,将使用 WebUI 与它们进行交互。

我对 WebUI 的编码方式没有限制,但是,当涉及到 RemoteClass 时,我正在一个受限制的框架内工作RemoteClass 仅是 .NET3.5 c#。

相关限制如下:

  • “RemoteClass”实例,看不到任何外部类实例。
  • 因此,我想引用的任何内容都必须在 RemoteClass 中声明。
  • 我要实例化的任何其他类都必须实例化为 RemoteClass 实例中的嵌套类

现在 - 可能有任意数量的 RemoteClass 实例,每个实例都有自己唯一的 ID。在这种情况下,我无法在外部托管一组实例 ID,并且在 WebUI 应用程序启动之前无法预测这些 ID。

因为 - 在我看来 - 我需要每个 RemoteClass 服务实例的唯一 URI,以便能够远程调用一个特定实例的方法,但是 WebUI 中的客户端将需要按顺序知道每个 URI要连接到它,我能看到的唯一明显的解决方案是执行以下操作:

  • 编写一个单独的“中间”应用程序(比如“InterApp”),它可以保存一个动态的 ID 数组并实例化 2 个 ServiceHost 实例——比如 ServiceHost1 和 ServiceHost2
  • 要求在创建任何 RemoteClass 实例之前运行“InterApp”。
  • 在创建每个新的 RemoteClass 实例时连接到 ServiceHost1,并将 ID 传递给 InterApp 中的数组进行存储。
  • 同样,在每个 RemoteClass 实例化时实例化一个嵌套的 ServiceHost 实例,具有唯一的 URI,基于它的唯一 ID(InterApp 知道),然后我可以通过调用“GetIDList()”服务来使用 WebUI 连接到InterApp 的 ServiceHost2

我希望以上内容是有道理的——我确信必须有一种不那么复杂、更可靠的方法来实现这一目标,尽管我仍然很年轻并且不知道可能的选择......

我打算使用基于 ServiceHost 的服务器和基于 ChannelFactory 的客户端...

欢迎任何建议/建设性批评。

Ĵ

4

1 回答 1

0

WCF Durable Services解决了您的问题。这支持在没有所有自定义寻址的情况下具有比会话允许的生命周期更长的独特服务实例。它最常与工作流服务一起使用,但它在普通的 WCF 服务实现上运行良好。

于 2012-07-31T06:41:11.533 回答