asp.net：正しい使い方


最近asp.netプロジェクトに中途参加したのですが  
どうも基本的な処理でいろいろと問題が発生しています。  
フレームワークを正しく使っていないのか、さもなくばMSが相変わらずクソなのか  
真実を知りたく達人のお知恵を授かりたいと思います。

以下現在自分が気になっている点です。

  * MVC

現行MVCモデルになっておらず、各々別個のページ（.aspx）にアクセスしている。  
そもそも.NETによるアプリケーションの基本構造のトレンドはMVCではないのか？

  * ページ遷移

現行ページ遷移はServer.Transferで行っている。  
従ってブラウザが認識するのは”前ページ”であるため（か）  
いろいろ”不都合”が生じ妙なパッチを当ててしのぐ必要がある。  
そもそも.NETでは”ページ遷移”はどうするのが正しいのか？

  * ログイン管理あるいはマルチセッション（？）

ログインをASPのセッションで管理しているため、  
複数のウインドウで異なるログインでの使用はアプリケーション側ではできない。  
「すでにログインしているサービスに、別なウインドウから別なアカウントで同時にログインして使いたい」  
というのはごくありふれたニーズだが、  
セッションでシンプルに管理していうとストレートに対応できない。  
そもそも.NETでは”ログイン管理”はどうするのが正しいのか？

* * *

ちなみに本プロジェクトは規模も歴史も長大なので、今更基本構造をどうこうはできませんが  
後学と好奇心のため、お手すきの達人がおられましたらご教授いただければ幸いです。  
あるいはそこらへんを簡潔明快にまとめた記事があればご紹介ください。




> 現行MVCモデルになっておらず、各々別個のページ（.aspx）にアクセスしている。  
>  そもそも.NETによるアプリケーションの基本構造のトレンドはMVCではないのか？

現在使用されているのはASP.NET Web Formsというフレームワークでこれは10年近く前の技術になります。現在の主力はASP.NET
MVCで、クロスプラットフォームに再設計されたASP.NET Core MVCが開発段階にあります。

> 現行ページ遷移はServer.Transferで行っている。  
>  従ってブラウザが認識するのは”前ページ”であるため（か）  
>  いろいろ”不都合”が生じ妙なパッチを当ててしのぐ必要がある。  
>  そもそも.NETでは”ページ遷移”はどうするのが正しいのか？

これは`Response.Redirect`を使用すべきです。

> ログインをASPのセッションで管理しているため、  
>  複数のウインドウで異なるログインでの使用はアプリケーション側ではできない。

Cookieの仕様に基づいたWebアプリケーションではごく一般的な動作だと思います。複数の状態を管理したいのであればクエリー文字列などでパラメーターを明示的に渡してやる必要があるかと思います。

