2015-01-14 7 views
5

मैंने एसओ और उससे परे में इसका उत्तर देने के लिए शिकार किया है, लेकिन मैंने अब तक कोई जवाब नहीं देखा है।मौजूदा अनुप्रयोग के भीतर Asp.Net vNext स्वयं-होस्टिंग

हम मौजूदा विंडोज सेवा/डब्ल्यूपीएफ EXE को कुछ रिपोर्टिंग जोड़ने पर विचार कर रहे हैं। आदर्श रूप में हम एक छोटा vNext एप्लिकेशन स्वयं-होस्ट करेंगे जो हमारे ऐप का उपयोग कर रिपोर्टिंग एंडपॉइंट्स का पर्दाफाश करेगा। ओविन और एएसपी.नेट 4 के साथ यह संभव था।

क्या यह vNext के साथ भी संभव है?

मैंने कुछ नमूने इत्यादि की कोशिश की है और के रनटाइम स्पष्ट रूप से सीएलआर के लिए एक अलग रनटाइम लगता है। बिल्ड इत्यादि भी अलग है ... इसलिए मुझे लगता है कि कम से कम इसे पूरी तरह से अलग प्रक्रिया होगी .... या क्या मैं गलत पेड़ को भड़क रहा हूं?

विशेष रूप से ऐसा लगता है कि हमें के रनटाइम (के वेब या एल्सड एके पैक'एड.एम.एम.डी.) का आह्वान करने की आवश्यकता है जो कि कॉटरर सहज महसूस करता है क्योंकि मैं पहले से ही एक प्रक्रिया में हूं (मुख्य exe/service) ।

संपादित करें: मुझे आश्चर्य है कि उत्तर NoWin है, संदर्भित और ओविन कंटेनर प्रदान करना। बी अगर मैं यह देखने के लिए संघर्ष कर रहा हूं कि यह सबसे अच्छा तरीका है ...

+0

मैं यहां अज्ञानता से बात कर रहा हूं, लेकिन यहां एक वेब ऐप क्यों स्पष्ट रूप से एक विंडोज ऐप है? यदि अनुरोधों को संभालने के लिए कोई वेब सर्वर की आवश्यकता नहीं है और प्रत्येक मशीन प्रति तैनात की जाती है, तो इस conundrum – user3036342

+0

से परेशान क्यों होना चाहिए यह जानना मुश्किल है कि लॉल क्या कहना है। निगरानी या रिपोर्टिंग की अनुमति देने वाले एपीआई को होस्ट करना सुविधाजनक है।यह कुछ ऐसा है जो मैंने अतीत में उपयोग किया है और यह निश्चित रूप से नया या बहुत पागल नहीं है। कुछ टूल/ऐप्स ऐसा करते हैं - केंद्रीय ऐप एकत्रित करने, आंकड़ों/लॉग का विश्लेषण करने, फ़ीड और रिपोर्टिंग प्रदान करने के लिए एक समर्पित ऐप के साथ एक अलग ऐप। मैं आपको सामान्य तैनाती परिदृश्य से परे और रनटाइम्स (सीएलआर और अब के) के मिश्रण के कारण यह समझूंगा कि यह अब एक विकल्प क्यों नहीं है .... – penderi

उत्तर

0

ठीक है मैंने jabbr.net पर कुछ समय बिताया और भयानक @ डीएफओएलएल से कुछ मदद मिली और बदले में छोटे देव (वे थे दिन)।

@dfowl: उस परिदृश्य काफी मृत

मेरे take- के रूप में हमारे Windows सेवा/WPF CLR के तहत चलाता है और vNext CLR के अधीन ही वे विभिन्न runtimes कर रहे हैं।

के रनटाइम के पुराने संस्करण और इसके एर, बालों के आधार पर ऐसा करने का एक तरीका है। संभव में फ़ाइल, लेकिन कभी आप उत्पादन में डाल दिया था कुछ:

Alxandr's CLR Bootstrap for K runtime

2

यहाँ एक संभव समाधान: How to Run DNX Applications in a Windows Service और How to Host ASP.NET in a Windows Service Erez Testiler के लिए धन्यवाद।

मूल रूप से विचार निम्नलिखित संदर्भ जोड़ने के लिए है:

  • "Microsoft.AspNet.Hosting": "1.0.0-beta7" - Bootstraps वेब सर्वर
  • "Microsoft.AspNet.Server। प्रकार का छोटा बाज ":" 1.0.0-beta7 "- वेब सर्वर कार्यान्वयन
  • " Microsoft.AspNet.StaticFiles ":" 1.0.0-beta7 "- मेजबान स्टैटिक फ़ाइलें
  • " Microsoft.AspNet.Mvc ":" 6.0। 0-बीटा 7 "- सभी एमवीसी पैकेज
शामिल हैं

और फिर प्रोग्राम के रूप में कॉन्फ़िगर और सर्वर और ASP.NET शुरू:

using Microsoft.AspNet.Builder; 
using Microsoft.AspNet.Hosting; 
using Microsoft.AspNet.Hosting.Internal; 
using Microsoft.Framework.Configuration; 
using Microsoft.Framework.Configuration.Memory; 
using Microsoft.Framework.DependencyInjection; 
using System; 
using System.Diagnostics; 
using System.Linq; 
using System.ServiceProcess; 

.... 

private readonly IServiceProvider _serviceProvider; 
private IHostingEngine _hostingEngine; 
private IDisposable _shutdownServerDisposable; 

public Program(IServiceProvider serviceProvider) 
{ 
    _serviceProvider = serviceProvider; 
} 

protected override void OnStart(string[] args) 
{ 
    var configSource = new MemoryConfigurationSource(); 
    configSource.Add("server.urls", "http://localhost:5000"); 

    var config = new ConfigurationBuilder(configSource).Build(); 
    var builder = new WebHostBuilder(_serviceProvider, config); 
    builder.UseServer("Microsoft.AspNet.Server.Kestrel"); 
    builder.UseServices(services => services.AddMvc()); 
    builder.UseStartup(appBuilder => 
    { 
     appBuilder.UseDefaultFiles(); 
     appBuilder.UseStaticFiles(); 
     appBuilder.UseMvc(); 
    }); 

    _hostingEngine = builder.Build(); 
    _shutdownServerDisposable = _hostingEngine.Start(); 
} 

यह मेरे लिए एक काफी अच्छा समाधान हो रहा है।

+0

यह .NET कोर नहीं है .NET Framework – superfly71

संबंधित मुद्दे