2015-01-14 20 views
5

Tôi đã tìm kiếm câu trả lời cho câu trả lời này, trong SO và hơn thế nữa nhưng tôi chưa thấy bất kỳ câu trả lời nào cho đến nay.Asp.Net vNext tự lưu trữ trong ứng dụng hiện có

Chúng tôi đang xem xét thêm một số báo cáo cho EXE Dịch vụ Windows/WPF hiện có. Lý tưởng nhất là chúng tôi sẽ tự lưu trữ một ứng dụng vNext nhỏ để hiển thị các điểm cuối báo cáo mà ứng dụng của chúng tôi có thể sử dụng. Điều này có thể với OWIN và ASP.NET 4.

Điều này có thể thực hiện được với vNext không?

Tôi đã thử một vài ví dụ mẫu và K Runtime dường như, rõ ràng là thời gian chạy khác nhau đối với CLR. Xây dựng vv là tất cả khá khác nhau quá ... vì vậy tôi đoán ít nhất nó sẽ phải là một quá trình hoàn toàn riêng biệt .... hoặc tôi sủa lên cây sai?

Đặc biệt có vẻ như chúng ta cần gọi K runtime (k web hoặc elsed ak pack'ed .cmd) mà dường như coutner trực quan như tôi đã trong quá trình tôi đang chạy (exe chính/dịch vụ) .

EDIT: Tôi tự hỏi nếu câu trả lời là NoWin, được tham chiếu và cung cấp vùng chứa OWIN. B ut Tôi đang đấu tranh để xem đó có phải là cách tiếp cận tốt nhất ...

+0

Tôi đang nói về sự thiếu hiểu biết ở đây, nhưng tại sao lại là một ứng dụng web vào ứng dụng cửa sổ rõ ràng ở đây? nếu không có máy chủ web là cần thiết để xử lý các yêu cầu và mỗi được triển khai cho mỗi máy, tại sao bận tâm với câu hỏi hóc búa này – user3036342

+0

Khó để biết phải nói gì lol. Khá thuận tiện để lưu trữ một API cho phép theo dõi hoặc báo cáo.Đó là một cái gì đó tôi đã sử dụng trong quá khứ và nó chắc chắn không phải là mới hoặc rất điên rồ. Một vài công cụ/ứng dụng thực hiện việc này - với ứng dụng trung tâm thu thập, phân tích số liệu thống kê/nhật ký, nói và ứng dụng riêng biệt với ứng dụng chuyên dụng để cung cấp nguồn cấp dữ liệu/báo cáo. Tôi sẽ cấp cho bạn nó vượt quá các tình huống triển khai thông thường và do sự kết hợp các thời gian chạy (CLR và giờ là K), điều này có thể hiểu được vì sao bây giờ không phải là một tùy chọn .... – penderi

Trả lời

0

Ok Tôi đã dành một chút thời gian trên jabbr.net và có một số trợ giúp từ @dfowl tuyệt vời và hữu ích nếu trẻ hơn là ngày).

@dfowl: kịch bản mà là khá nhiều người chết

tiếp quản của tôi như Windows Service/WPF của chúng tôi chạy dưới CLR và vNext chạy dưới CLR họ runtimes khác nhau.

một cách để làm điều đó, dựa trên phiên bản cũ hơn của thời gian chạy K và nó là er, lông. Nộp trong có thể, nhưng không bao giờ cái gì bạn muốn đưa vào sản xuất:

Alxandr's CLR Bootstrap for K runtime

2

Dưới đây là một giải pháp khả thi: How to Run DNX Applications in a Windows ServiceHow to Host ASP.NET in a Windows Service nhờ Erez Testiler.

Về cơ bản các ý tưởng là để thêm các tài liệu tham khảo sau đây:

  • "Microsoft.AspNet.Hosting": "1.0.0-beta7" - bootstraps web server
  • "Microsoft.AspNet.Server. Kestrel ":" 1.0.0-beta7 "- Triển khai máy chủ web
  • " Microsoft.AspNet.StaticFiles ":" 1.0.0-beta7 "- Lưu trữ các tệp tĩnh
  • " Microsoft.AspNet.Mvc ":" 6.0. 0-beta7 "- Bao gồm tất cả các gói MVC

Và sau đó lập trình cấu hình và khởi động Server và 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(); 
} 

Nó có vẻ là một giải pháp khá tốt với tôi.

+0

Đây là .NET Core not .NET Framework – superfly71

Các vấn đề liên quan