ASP.NET

ステートサーバ機能

1 Mins read

ネタとしては古いが(苦笑)管理人の覚書としてIIS6のセッション変数機能がパワーアップされているので記述しておく。従来のWeb機能ではセッション内容を他に簡単に移動させておけなかったので、IISが止まるとセッション内容も一緒に死んじゃってましたが、別プロセス(別空間)に保存できるようになったのでIISの再起動をしても、なんと!セッション情報が消えないのである!!!エッヘン(笑)なおかつこの機能を使うと別のマシン上にセッション情報を置けるので負荷分散でWebサーバーを複数台動かす時にも役立ちます。ちなみにTomcatも最近この機能が出来るようになったみたい。管理人としてはこの機能をパワーアップしてセッション内容をXMLファイルとしても保存、読込みできるメソッドを追加してほしいと思う今日この頃です。ん?なんでファイルか?だって!それはSession変数の場合タイムアウトを気にしないといけないのに対してファイルは気にしないで情報を取っておけるメリットがあるのですね。SQLServerには保存できるらしい・・・

 通常、セッション情報はASP.NETアプリケーションを実行するワーカー・プロセス(IIS本体ではなく、実際にアプリケーションを処理するプロセス)内部に保存されているが、より高レベルなサービスを提供するために、ステートサーバと呼ばれる、プロセス外にセッション情報を保存する手段が提供されている。

 ステートサーバを利用するメリットは、信頼性の向上にある。ステートサーバはIISから独立したプロセスとして実行されるため、ワーカー・プロセスが誤動作したり、IISを再起動したりしても、ステートサーバに保存されたセッション情報が失われることはない。もちろん、その瞬間にアプリケーションが起動されていたセッションは正しいレスポンスを返すことはできないだろうが、ユーザーからのポストバックを待っていたセッションは、IISさえ正常に戻れば、そのまま何食わぬ顔で処理を継続できる。

 また、IISとステートサーバは、ネットワーク接続さえされていれば、同一マシン上に存在していなくても構わない。従って、Webファーム(クラスタ化されたWebサーバ群)に対して、独立したステートサーバを1台用意する構成を取れば、1台のWebサーバに障害が発生しても、残りのWebサーバがセッションを継続できる(ステートサーバがウイークポイントとなってしまうが)。

 パフォーマンスでは通常のインプロセス・モードに分があるが、信頼性を優先させるならば、ステートサーバ・モードの利用を検討するとよいだろう。

 ステートサーバ・モードを利用するにあたって必要な作業は、ステートサーバを起動し、以下に示すweb.configファイルを用意することだけだ。アプリケーション・コードに修正は必要ない。web.configファイルでは、sessionState要素のmode属性に”StateServer”を、stateConnectionString属性に「tcpip=<ステートサーバ・マシンのIPアドレス>:42424」を設定すればよい。

<configuration>
   <system.web>
    <sessionState mode="StateServer"
      stateConnectionString="tcpip=127.0.0.1:42424" />
   </system.web>
</configuration>

 ステートサーバは「ASP.NET State Service」の名前でサービスとして登録されているので、サービス・マネージャで起動する。

 なおここでは割愛するが、セッションの情報はSQL Serverによりデータベースで管理することも可能だ。

詳しくはここ

Related posts
ASP.NETPHPWindows Server

Team Foundation Server 2010 Install

1 Mins read

Team Foundation Server 2010、テスト導入してみたよ!

以下の順番でインストール

1.SQL Server 2008R2 Standard(x64)

2.Sharepoint Server 2010 with sp1(x64)

3.Team Foundation Server 2010(x64)

4.Team Foundation Server 2010 sp1

これでTeam Foundation Serverマネージャーで構成開始

うまくダッシュボード上のグラフが表示されない・・・はて

Windows UpdateやったらOfficeのOWCコンポーネントがUpdateされて、表示OKに!
そういえばOWC11以降は無くなるような記事が出てたけど・・・

VSSにバイバイできるかなぁ

ASP.NETJavaScriptPHP

eval使用時にJsonでの改行について

1 Mins read

Jsonの項目内の改行コードの記述方法について

サーバーサイドでは\マークはエスケープ文字としてよく利用されている為に
ついつい”\n”の状態にてJsonに含めるとクライアントサイドのeval時にエラーとなる。

なのでエスケープされる場合は”\\n”と2回つけることを忘れべからず!
もちろん多数ある場合も改行コードを上記のように置換処理をすること!

PHPの場合はダブルクォート「”」とシングルクォート「’」でエスケープされる、
されないが変わるので、どちらかに統一するのが望ましい。

これはJsonだけの話ではないが、重要なので記述!
javascript側では受け取ったJsonを展開するときにカッコで囲ってあげること!
例:var a = eval(‘(‘+json+’)’); //このカッコ追加は結構注意!

覚書(^ ^)

.NETASP.NETVB日記

VB.NETのFormat関数とVB6のFormat関数の差

1 Mins read

毎日寒いね~・・・一気に冬将軍到来か!って感じですが皆さんいかがお過ごしでしょうか?

題名のとおりDotNetになってFormat関数があることにはあるのだが、挙動が違うので、少々覚書

VB6のまま使用するのであればMicrosoft.Visualbasic.Format関数というものが存在するのでこちらを使用する。

ただし「Microsoft.Visualbasic」を使用する時点で「.NET Framework」構想からは外れた設計になることを覚悟の上ですが・・・

まぁそうは言ってもAPIの使用やComをCreateObjectするのではないので「.NET Framework」が入っている環境であれば動くから良いかな:roll:

違いといえば、いろいろ違いますが中でも良く使う日付系の指定文字だけど「yyyy/MM/dd HH:mm:ss」とmmの大文字小文字をちゃんと指定してあげないと月なのか分なのかみたいな狙ったとおりに動かなかったりといろいろあるんだよね。

細かいところは調べてみてね!

チームを強化する

サービスの
サブスクリプションの利点を説明するテキストを追加します。