世界のやまさ

SEKAI NO YAMASA

Azure Service Fabric Public Preview を試してみました

Azure Service Fabric が Public Preview となりました!以前はローカルのSDKのみ提供されていましたが、なんと Azure へデプロイできるようになりました!

そもそも Service Fabric ってなんだっていうのは過去記事を見てください。

blog.nnasaki.com

blog.nnasaki.com

さて、早速次のチュートリアルを試してみました。実際動作するサンプルは http://aka.ms/tryservicefabric で確認できます。

f:id:nnasaki:20151120134434p:plain

Service Fabric Enters Public Preview - Azure Service Fabric Team Blog - Site Home - MSDN Blogs

準備

ローカルでの実行手順

サンプルコードを Visual Studio で開く

単純にソリューションを開きます。

f:id:nnasaki:20151120151942p:plain

実行する

F5かStartを押して実行します。

f:id:nnasaki:20151120152048p:plain

注意その1
Visual Studio を管理者モードで起動しないと、Service Fabric のエミュレーターが立ち上がらずエラーとなったり、
f:id:nnasaki:20151120144631p:plain

もうひとつ

注意その2
Web の待ち受けポートが80固定です。他のアプリで使用していると次のようなエラーで起動できません。私の場合、Skypeが邪魔していました。Skypeの設定は Skype がポート 80 と 443 を使用しないようにする - nnasakiのブログ を参照してください。 f:id:nnasaki:20151120151709p:plain

System.Reflection.TargetInvocationException はユーザー コードによってハンドルされませんでした。
  HResult=-2146232828
  Message=呼び出しのターゲットが例外をスローしました。
  Source=mscorlib
  StackTrace:
       場所 System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
       場所 System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
       場所 System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
       場所 Microsoft.Owin.Hosting.ServerFactory.ServerFactoryAdapter.Create(IAppBuilder builder)
       場所 Microsoft.Owin.Hosting.Engine.HostingEngine.Start(StartContext context)
       場所 Microsoft.Owin.Hosting.WebApp.Start(String url, Action`1 startup)
       場所 WebService.OwinCommunicationListener.OpenAsync(CancellationToken cancellationToken) 場所 C:\Users\nnasaki\Source\Repos\service-fabric-dotnet-management-party-cluster\PartyCluster\WebService\OwinCommunicationListener.cs:行 45
       場所 Microsoft.ServiceFabric.Services.Runtime.StatelessServiceBase.<OpenCommunicationListenersAsync>d__a.MoveNext()
  InnerException: 
       ErrorCode=32
       HResult=-2147467259
       Message=プロセスはファイルにアクセスできません。別のプロセスが使用中です。
       NativeErrorCode=32
       Source=System
       StackTrace:
            場所 System.Net.HttpListener.AddAllPrefixes()
            場所 System.Net.HttpListener.Start()
            場所 Microsoft.Owin.Host.HttpListener.OwinHttpListener.Start(HttpListener listener, Func`2 appFunc, IList`1 addresses, IDictionary`2 capabilities, Func`2 loggerFactory)
            場所 Microsoft.Owin.Host.HttpListener.OwinServerFactory.Create(Func`2 app, IDictionary`2 properties)
       InnerException: 

確認する

http://localhost/ にアクセスする

ブラウザに表示されました。

f:id:nnasaki:20151120153109p:plain

Party now!をクリックしてフォームに記入してSubmitすると

f:id:nnasaki:20151120153229p:plain

f:id:nnasaki:20151120153318p:plain

Users が増えていますね。

f:id:nnasaki:20151120153401p:plain

どうやって動いているの?

Web-based Service Fabric Explorer で確認できます。タスクトレイ次のアイコンを右クリックして「Manage Local Cluster」をクリックします。

f:id:nnasaki:20151120153549p:plain

するとブラウザで表示されます。かっこよくなった!

f:id:nnasaki:20151120153701p:plain

ノード5個で動いています。

f:id:nnasaki:20151120153955p:plain

試しにノード1個落としてみても、無停止で動作し続けることを確認できます。アニメGIFにしてみました。

Azure Service Fabric Demo

まとめ

サンプルはこんな感じでサクッと動きます。次回は Azure にデプロイします。

余談

実は公開直後サンプルはビルドエラーが出てたので、最速プルリクをキメてやりました。

github.com

参考リンク