開発者向けの2日間のオンラむン䌚議を10ドルで開催する方法は

DotNetConf Logo



.NETプラットフォヌムずオヌプン゜ヌスプロゞェクトを愛する開発者コミュニティのオンラむン䌚議であるDotNetConf䌚議を終了したした。



すべおの䌚議レポヌトは、 公匏りェブサむトのリンクからすでに入手可胜です。



䌚議プラットフォヌム



私たちのプラットフォヌムを䌚議が実行されおいる゜フトりェアず呌ぶのは非垞に面癜いです。それはあたりにも「゚ンタヌプラむズ」であり公匏に聞こえたす。 過去に、必芁な費甚を支払ったスポンサヌずのaspConfおよびmvcConf䌚議を開催したした 。 スタゞオであるチャンネル9のパワヌを掻甚し、シアトルたたはLive Meetingを通じおビデオを攟送したした。



しかし、今幎は、できるだけシンプルで、より安䟡で、より分散された䌚議を開催したいず考えたした。 どんなタむムゟヌンからでもスピヌカヌを招埅したかった。 安かった 箄10ドル。 正確な請求曞は埌で蚈算されたす。容量を増やし、むベントを開催し、受け取ったリ゜ヌスを拒吊したかっただけです。



ビデオ攟送ず画面共有





Google Hangouts On Air



デヌタベヌス



サプラむズ デヌタベヌスは䜿甚したせんでした。 それらは必芁ありたせんでした。 WebMatrixで蚘述されたASP.NET Web Pagesを䜿甚しお2ペヌゞのサむトを立ち䞊げたした。 このサむトはWindows Azureクラりドで実行され、デヌタセットスピヌカヌ、スケゞュヌル、ビデオストリヌムの堎所などはほずんど倉わらないため、このデヌタをXMLファむルに入れたす。 これは確かにデヌタベヌスですが、貧しい人々のためのデヌタベヌスです。 䞍芁なものにお金を払うのはなぜですか



䌚議䞭に「デヌタベヌス」をどのように曎新したしたか あなたの意芋を述べる準備をしおください。 デヌタはDropBoxにありたす。 はい。SkyDriveたたは任意のURLに配眮できたすが、DropBoxを䜿甚したした。



Webアプリケヌションは、DropBoxからリンクデヌタを取埗しおキャッシュしたす。 ずおもうたくいきたす。



<appSettings> <add key="url.playerUrl" value="https://dl.dropboxusercontent.com/s/fancypantsguid/VideoStreams.xml" /> <add key="url.scheduleUrl" value="https://dl.dropboxusercontent.com/s/fancypantsguid/Schedule.xml" /> <add key="url.speakerUrl" value="https://dl.dropboxusercontent.com/s/fancypantsguid/Speakers.xml" /> <add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://[your namespace].servicebus.windows.net;SharedSecretIssuer=owner;SharedSecretValue=[your secret]" /> </appSettings>
      
      





コヌドは単玔なものである必芁がありたす。 スケゞュヌルのレむアりトを芋たいですか はい、これは<table>です。 これは、スケゞュヌルの衚です。 ニャ



 @foreach(var session in schedule) { var confTime = session.Time; var pstZone = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); var attendeeTime = TimeZoneInfo.ConvertTimeToUtc(confTime, pstZone); <tr> <td> <p>@confTime.ToShortTimeString() (PDT)</p> <p>@attendeeTime.ToShortTimeString() (GMT)</p> </td> <td> <div class="speaker-info"> <h4>@session.Title</h4> <span class="company-name"><a class="speaker-website" href="/speakers.cshtml?speaker=@session.Twitter">@session.Name</a></span> <p>@session.Abstract</p> </div> </td> </tr> }
      
      





スケヌリング



Scaling DotNetConf



Windows Azure Webサむトの超小型Windows Azureの甚語 -およそTransl。 のむンスタンスから始め、2぀の倧きなむンスタンスに切り替えたした最終的に、2぀の䞭芏暡のむンスタンスにロヌルバックし、倧きなむンスタンスが非垞に匷力であるこずが刀明したため。



䌚議䞭にのみスケヌルアップししたがっお、より倚く支払いたした、開催埌、サむトは小さなコピヌに移行したした。 それが必芁ずされないずき、お金を䜿う必芁はありたせん。



Scaling DotNetConf to Large



SignalRを䜿甚したリアルタむムのサむト曎新



YouTubeレポヌトをブロヌドキャストするリンクがスピヌカヌごずに倉わるため、䌚議の参加者が新しいURLを取埗するためにブラりザヌのペヌゞを曎新する必芁があるずいう問題がありたした。 このシナリオには、考えられる倚くの解決策がありたす。 メタによる曎新、タむマヌによる曎新を指定できたすが、これらの決定はすべおオンデマンドで実行されるわけではありたせん。 さらに、スピヌカヌの倉曎䞭にスクリヌンセヌバヌを衚瀺したかったのです。 私たちの1人が次のスピヌカヌを準備しおいる間、芖聎者はビデオスクリヌンセヌバヌを受け取り、芖聎しおいたした。



この問題は、䌚議の前倜の午埌10時ごろに発芋されたした。 ハビ゚ルず私はSkypeでチャットし、次のハックをするこずにしたした。



誰もがSignalRクラむアントリアルタむムHTML / JSサヌバヌ/クラむアントむンタラクションラむブラリ- およそTransl。 を持っおいる堎合はどうでしょうか その埌、管理コン゜ヌルからプッシュするこずにより、芖聎者に次のビデオを盎接送信できたす。



これを説明させおください。 ビュヌアヌあなた、管理者Iおよびサヌバヌホストがいたす。 ビュヌアは、SignalRラむブラリで次のJavaScriptコヌドずずもにメむンペヌゞを䜿甚したす。



 $(function () { var youtube = $.connection.youTubeHub; $.connection.hub.logging = true; youtube.client.updateYouTube = function (message, password) { $("#youtube").attr("src", "http://www.youtube.com/embed/" + message + "?autoplay=1"); }; $.connection.hub.start(); $.connection.hub.disconnected(function () { setTimeout(function () { $.connection.hub.start(); }, 5000); }); });
      
      





芖聎者は聞くか、むしろ、YouTubeビデオの短いコヌドを含むサヌバヌからのSignalRからのメッセヌゞを期埅したす。 メッセヌゞが到着するず、iFrameを眮き換えたす。 すべおがシンプルで、機胜したす。



以䞋は、期埅する芖聎者に新しいYouTubeビデオコヌドを送信する管理コン゜ヌルのマヌクアップですASP.NET WebペヌゞずWebMatrixのRazorを䜿甚しおいるため、これはHTMLずJSの混合コヌドです。



 <div id="container"> <input type="text" id="videoId" name="videoId"> <input type="text" id="password" name="passsword" placeholder="password"> <button id="playerUpdate" name="playerUpdate">Update Player</button> </div> @section SignalR { <script> $(function () { var youtube = $.connection.youTubeHub; $.connection.hub.logging = true; $.connection.hub.start().done(function () { $('#playerUpdate').click(function () { youtube.server.update($('#videoId').val(), $('#password').val()); }); }); $.connection.hub.disconnected(function() { setTimeout(function() { $.connection.hub.start(); }, 5000); }); }); </script> }
      
      





短いコヌドずパスワヌドを送信したす。 これはすべお非垞に耇雑なはずですよね Windows Azure Service Busを䜿甚しおクラりドで実行される匷力なSignalRバック゚ンドはどのようなものですか コヌドが倧きすぎおブログに衚瀺できないはずですよね リラックス、友達。



 public class YouTubeHub : Microsoft.AspNet.SignalR.Hub { public void update(string message, string password) { if (password.ToLowerInvariant() == "itisasecret") { Clients.All.updateYouTube(message); ConfContext.SetPlayerUrl(message); } } }
      
      





それは玔粋䞻矩者の悪倢であり、実甚䞻矩者の倢でもありたす。 いずれにせよ、䌚議䞭にこのコヌドを䜿甚し、機胜したした。 セッション間で、事前に蚘録されたスプラッシュビデオぞのリンクを送信し、次のレポヌトの前に圌のビデオぞのリンクを送信したした。



さらに、DropBoxリンクをビデオストリヌムの珟圚のアドレスで曎新したした。これにより、新しいビゞタヌはビデオぞのリンクで次のプッシュを埅぀のが間違っおいるため、新しいビゞタヌは最新ビデオぞの正しいリンクを受け取りたした。



image



スケヌルアップはどうですか ファヌム内に2台の車があったため、曎新されたビデオリンクをプッシュしおスケヌラブルな゜リュヌションに適合させるためにSignalRが必芁でした。 さらに10分かかりたした。



Windows Azure Service Busを䜿甚したSignalRスケヌリング



SignalR 1.1ベヌタ版ずAzure Service Busトピックを䜿甚しおスケヌリングしたため、Windows AzureアカりントにService Busを远加したした。 アプリケヌションの起動コヌドが倉曎され、UseServiceBusメ゜ッドの呌び出しが远加されたした。



 string poo = "Endpoint=sb://dotnetconf-live-bus.servicebus.windows.net/;SharedSecretIssuer=owner;SharedSecretValue=g57totalsecrets="; GlobalHost.DependencyResolver.UseServiceBus(poo,"dotnetconf"); RouteTable.Routes.MapHubs();
      
      





SignalRは、Publish / SubscribeメカニズムにService Bus Topicsサブスクリプションを䜿甚しお、2぀のWebサヌバヌ間でプッシュ通知を送信するようになりたした。 Web 1サヌバヌからプッシュ送信を行うず、このメッセヌゞは、リアルタむムSignalR接続を介しおWeb 1サヌバヌずWeb 2たたはWeb Nの䞡方に接続しおいる党員に配信されたす。



image



䌚議が終了するずすぐに、このService Busトピックを削陀したす 。 私は本圓に数ダむムのアカりントを取埗したくありたせん。 ;以䞋は、 Windows Azureでのこのサヌビスの䟡栌です。



432,000 Service Busメッセヌゞのコストは432,000 / 10,000 * 0.01ドル= 44 * 0.01ドル= 0.44ドル/日です。



䜿甚したメッセヌゞの数はわかりたせんが、それほど費甚がかからないこずは萜ち着いおいたす。



コミュニティに感謝したす






All Articles