Одна из возможностей, которую следует рассмотреть, - это запустить приложение Silverlight 2 как часть страницы ASP.NET, к которой переходят веб-пользователи.
Это приложение Silverlight может использовать поддержку WCF Polling Duplex в сборках System.ServiceModel.PollingDuplex.dll ( для приложения Silverlight, для сервера WCF ), которые поставляются с Silverlight 2 SDK. 1005 *
У меня есть несколько постов в блоге и пример приложения , которые демонстрируют, как «выталкивать» обновления Stock из консольного приложения, которое самостоятельно размещает службу WCF с двумя конечными точками следующим образом:
using System;
using System.ServiceModel;
using System.ServiceModel.Description;
namespace StockServer
{
public class StockServiceHost : ServiceHost
{
public StockServiceHost(object singletonInstance, params Uri[] baseAddresses)
: base(singletonInstance, baseAddresses)
{
}
public StockServiceHost(Type serviceType, params Uri[] baseAddresses)
: base(serviceType, baseAddresses)
{
}
protected override void InitializeRuntime()
{
this.AddServiceEndpoint(
typeof(IPolicyProvider),
new WebHttpBinding(),
new Uri("http://localhost:10201/")).Behaviors.Add(new WebHttpBehavior());
this.AddServiceEndpoint(
typeof(IStockService),
new PollingDuplexHttpBinding(),
new Uri("http://localhost:10201/SilverlightStockService"));
this.AddServiceEndpoint(
typeof(IStockService),
new WSDualHttpBinding(WSDualHttpSecurityMode.None),
new Uri("http://localhost:10201/WpfStockService"));
base.InitializeRuntime();
}
}
}
Клиенты WPF подключаются к конечной точке WSDualHttpBinding, а клиенты Silverlight подключаются к конечной точке PollingDuplexHttpBinding той же службы WCF. В приложении также показано, как обрабатывать требования политики доступа клиента Silverlight.
Клиенты (Silverlight или WPF) могут добавлять заметки к акции в своем пользовательском интерфейсе, и эти заметки распространяются обратно на сервер для отправки всем остальным клиентам. Это демонстрирует связь в любом направлении и, мы надеемся, выполняет большую часть необходимой связи, необходимой для приложения чата.
Вы можете увидеть скриншот демо-приложения , запущенного здесь .