リアルタイムWebを極める
第6回 node.js,SignalRとクラウド,まとめ
これまで5回にわたってnode.
連載の最後となる今回は,
まずはスケールアウトを行うにあたって必要となるRedisの説明を行っておきます。RedisとはオープンソースのKVS
簡単に説明するとRedisを経由して複数のサーバ間でのメッセージのプッシュ通信が出来る機能です。この機能をnode.
node. jsとクラウド
socket.
あらかじめsocket.
リスト socket.
// socket.io
var io = require("socket.io").listen(app);
var port = 6379;
var host = "***.cloudapp.net";
var RedisStore = require("socket.io/lib/stores/redis"),
redis = require("socket.io/node_modules/redis"),
pub = redis.createClient(port, host),
sub = redis.createClient(port, host),
client = redis.createClient(port, host);
io.configure(function () {
io.set("transports", ["xhr-polling"]);
io.set("polling duration", 100);
io.set("store", new RedisStore({
redisPub: pub,
redisSub: sub,
redisClient: client
}));
});
io.sockets.on("connection", function (socket) {
socket.on("sendMessage", function (text) {
io.sockets.emit("receiveMessage", { message: text, time: new Date().toLocaleTimeString() });
});
});
第3回でWindows Azure Webサイトに作成したアプリケーションに関しても,
socket.
SignalRとクラウド
SignalRでもスケールアウトさせる際にsocket.
RedisやWindows Azureサービスバスを使ってスケールアウトをさせるためには,
- Microsoft.
AspNet. SignalR. Redis - Microsoft.
AspNet. SignalR. ServiceBus
これらのプラグインはNuGetで公開されていますが,
利用方法は非常に簡単で,
リスト SignalRではRedisとWindows Azureサービスバスの両方が利用可能
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapHubs();
// Redis を使う場合
GlobalHost.DependencyResolver.UseRedis("***.cloudapp.net", 6379, "", new[] { "SignalR.Key" });
// Windows Azure サービスバスを使う場合
var connectionString = "sb://...";
GlobalHost.DependencyResolver.UseWindowsAzureServiceBus(connectionString, 2);
}
}
同様に第5回で作成したアプリケーションをこのように修正することで,
これでnode.
node. jsとSignalRの特徴と違い
node.
ここでは表にしてまとめてみたいと思います。
node. | SignalR |
---|---|
開発言語はJavaScript | 開発言語はC#, |
サーバはnode. | サーバはIIS |
シングルスレッドで動作 | マルチスレッドで動作 |
ノンブロッキングI/ | スレッドプールを使った非同期 |
イベントベースのAPI | RPCベースのAPI |
Redisを使ったスケールアウト | Redisとサービスバスを使ったスケールアウト |
公式のクライアントはJavaScript | 公式のクライアントはJavaScriptとC# |
コンパイルが不要 | コンパイルが必要 |
日本語の情報が豊富 | 日本語の情報が少ない |
運用実績が多い | 運用実績は少ない |
node. | IIS 8と.NET 4. |
node.
パフォーマンスに関してはSignalRの方がマルチスレッドで動作する点や,
このように説明してしまうと,
まずはどちらかの興味を持った技術から,