これまで5回にわたってnode.
連載の最後となる今回は、
まずはスケールアウトを行うにあたって必要となるRedisの説明を行っておきます。RedisとはオープンソースのKVS

簡単に説明するとRedisを経由して複数のサーバ間でのメッセージのプッシュ通信が出来る機能です。この機能をnode.
node.jsとクラウド
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で公開されていますが、
利用方法は非常に簡単で、
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の方がマルチスレッドで動作する点や、
このように説明してしまうと、
まずはどちらかの興味を持った技術から、