2016-12-27 7 views
1

私はWindows用のC#で書かれたサービスを持っています。私はそれをLinux上で実行する必要があります。私は潜在的にJavaやC++のコードを書き直すことを検討してきましたが、それをやり遂げる可能性はありますが、中間的な解決策として、プロジェクトをMonoまたは.NET Coreに移植することを検討しています。重要なのは、それはかなり小さいアプリケーションだから、必要なコード変更を行うことはそれほど大きな仕事ではないはずです。LinuxのMonoまたは.NETコアへのC#ポート

サービスは、特定のURLエンドポイントをリッスンしてタスクを実行します。以下のコードサンプルに基づいて

例:実際には

http://localhost:5000/checkStatus?configId=1234

http://localhost:5000/echo

http://localhost:5000/version

、私はほとんどそれがこのセクションのために期待してコンパイルできます。この1つのセクションは、残りのビルドエラーをすべて生成しています。私はWCFサービスがまだ.NETコアで利用できないことを理解しています。だから私はこれに代わるものを模索してきましたが、.NET CoreのLinux上で動作するものには苦労しています。また、完全なNGINXまたはApacheサーバーで、全体またはshoehorningを書き換えることに等しい何かを実装することを避けたい。

namespace CheckService 
{ 
    [ServiceContract] 
    interface IService 
    { 
     [OperationContract] 
     [WebGet(ResponseFormat = WebMessageFormat.Json)] 
     string checkStatus(string configId); 

     [OperationContract] 
     [WebGet(ResponseFormat = WebMessageFormat.Json)] 
     string echo(string value); 

     [OperationContract] 
     [WebGet(ResponseFormat = WebMessageFormat.Json)] 
     string version(); 
    } 
} 

私はWCFに慣れたことがないので、このプロジェクトはもともと誰かによって書かれたものです。

ここは私のproject.jsonです。私はそこに不必要なものや間違ったものがあるかもしれないことを知っています。私はたくさんのテストを行っています:

{ 
    "buildOptions": { 
    "emitEntryPoint": true, 
    "debugType": "portable" 
    }, 
    "dependencies" : { 
    "Microsoft.AspNetCore.Server.IISIntegration": "1.0.0", 
    "Microsoft.AspNetCore.Server.Kestrel": "1.0.0", 
    "ServiceStack": "4.5.4", 
    "System": "4.1.311.2", 
    "System.IO": "4.3.0", 
    "System.IO.Pipes": "4.0.0", 
    "System.Collections": "4.0.11", 
    "System.Data.Common": "4.0.0", 
    "System.Data.SQLite": "1.0.0", 
    "System.ServiceModel": "1.0.0", 
    "System.ServiceModel.Web": "1.0.0", 
    "System.ServiceModel.Primitives": "4.3.0", 
    "System.ServiceModel.Security": "3.9.0", 
    "System.ServiceModel.Http": "4.0.0", 
    "slf4net.log4net": "0.1.32.1" 
    }, 
    "frameworks": { 
    "net461": { 
     "frameworkAssemblies": { 
     "System.Runtime.Serialization": "4.0.0.0", 
     "System.ServiceModel": "4.0.0" 
     } 
    } 
    }, 
    "tools": { 
    "Microsoft.AspNetCore.Server.IISIntegration.Tools": { 
     "version": "1.0.0-preview2-final" 
    } 
    }, 
    "scripts": { 
    "postpublish": "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" 
    } 
} 

これを行う方法はありますか?

答えて

1

WebGetAttributeを使用すると、RESTfulサービスを作成する予定があることを示しています。 .NET CoreではWCFを使用できませんが、WebApiがサポートされています。 WebApiを使用すると、必要なすべてのRESTサービスを作成できます。これを開始する方法については、this tutorial by Microsoftを確認することができます。

+0

ありがとう、私はこれが最良のソリューションかもしれないと思います。 – Chris

0

は、.NETのコア上でServiceStackを実行しようとしている場合ServiceStack's .NET Core Release Notesに示されているようにあなたが1.0.* ServiceStackパッケージを参照する必要があります。

"dependencies" : { 
    "ServiceStack.Core": "1.0.*", 
    "ServiceStack.Common.Core": "1.0.*", 
    "ServiceStack.Client.Core": "1.0.*", 
    "ServiceStack.Interfaces.Core": "1.0.*", 
    "ServiceStack.Text.Core": "1.0.*" 
}, 

それともhttps://servicestack.netを使用していない場合は、への参照を削除する必要がありますあなたのproject.jsonの "ServiceStack"。

+0

ありがとうございます。ある時点でServiceStackを実験していました。私は参照を削除することを怠った。 – Chris

関連する問題