2016-04-18 7 views
4

私は定期的にクライアントにメッセージをプッシュする必要がありますSignalRを持つ単純なASP.NET 5アプリを構築しようとしています(たとえば、値を持つダッシュボードを実装するブラウザにサーバーからプッシュされた。)ASP.NET 5のIRegisteredObjectの置き換えは?

私は、このようないくつかの記事を調査http://arulselvan.net/realtime-dashboard-asp-net-signalr-angularjs-d3js/またはhttp://henriquat.re/server-integration/signalr/integrateWithSignalRHubs.htmlとなります。 System.Web.Hosting名前空間のIRegisteredObjectを実装するクラスでタイマーを実装することをお勧めします。

しかし、私は、ASP.NET 5. System.WebIRegisteredObject生活はもはや私はそれ上の任意の情報を見つけることができていないASP.NET 5. に存在する名前空間を見つけることができていないようですオンライン。 ASP.NET 5の代わりに何がありますか?

UPDATE

私は、次のソリューションをしようとしています:

  • は、例えば、シングルトンサービスとしてStartup.csに登録タイマーに

  • をカプセル化するサービスを作成どのようにこのアプローチについて

    public void ConfigureServices(IServiceCollection services) 
        { 
         // ... 
         Ticker ticker = new Ticker(); 
         ServiceDescriptor sd = new ServiceDescriptor(typeof(Ticker), ticker); 
         services.Add(sd); 
         // ... 
        } 
    

    Startup.cs

    public class Ticker 
    { 
        Timer timer = new Timer(1000); 
        public Ticker() 
        { 
         timer.Elapsed += Timer_Elapsed; 
         timer.Start(); 
        } 
    
        private void Timer_Elapsed(object sender, ElapsedEventArgs e) 
        { 
         // do something 
        } 
    } 
    

+0

「HostingEnvironment.QueueBackgroundWorkItem」メソッドはどうですか? .NET 4.5で導入され、 'IRegisteredObject'を置き換えました。 – Anders

+0

いいえ、どちらも見つかりませんでした。 'System.Web.Hosting'にあります - この名前空間はもはや存在しないようです。例えば、System.Web自体のように、あなたの更新については – AunAun

+0

です。取り消しの概念があります。バックグラウンドジョブは、アプリケーションプールがリサイクルするときに完了する必要があります。 – Anders

答えて

0

IRegisteredObjectは、インスタンスがHostingEnvironment.RegisterObjectで登録されると、基本的には実装クラスに差し迫った運命を通知する方法を提供します。

.netコアでは、インターフェイスを実装する必要はありません。 HostingEnvironment.RegisterObjectの対応するメソッドはIApplicationLifetime.ApplicationStoppingです。 Register方法。アプリケーションのIoCで

、オブジェクトまたはジョブマネージャのためIApplicationLifetimeへの依存を取得するか、登録できるようにするものは何でも、またはこのインタフェースのインスタンスにアクセスすることができStartup.csConfigure方法で何とかそれを配線してくださいフレームワークIoC:

public void Configure(IApplicationBuilder app, 
    IApplicationLifetime applicationLifetime) 
{ 
    // Pipeline setup code ... 

    applicationLifetime.ApplicationStopping.Register(() => { 
     // notify long-running tasks of pending doom 
    }); 
} 
関連する問題