

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

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

  * MVC

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

  * ページ遷移

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

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

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

* * *

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


CC BY-SA 3.0
2017-04-05T01:20:36.913
33775
2017-04-05T14:35:54.080
20996
question
asp.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アプリケーションではごく一般的な動作だと思います。複数の状態を管理したいのであればクエリー文字列などでパラメーターを明示的に渡してやる必要があるかと思います。


CC BY-SA 3.0
2017-04-05T02:17:29.297
33777
2017-04-05T02:17:29.297
5750
33775
answer


> 「すでにログインしているサービスに、別なウインドウから別なアカウントで同時にログインして使いたい」 というのはごくありふれたニーズだが、  
>  セッションでシンプルに管理していうとストレートに対応できない。

質問とズレるのでオフトピですが…  
1つのブラウザでセッションが1つきりと言うのは一般的ですので、別アカウントで開きたいというニーズには、Chromeのユーザプロファイルを使い分けることで対応してもらってます。


CC BY-SA 3.0
2017-04-05T03:27:39.630
33778
2017-04-05T03:27:39.630
5008
33775
answer


### MVC

ASP.NETの歴史はVisual Studio .net 2002からとなり、当時はまだAJAXという概念が存在していませんでした。ASP.NET
MVCの登場はVisual Studio 2008からとなります。  
プロジェクトの歴史が長大とのことですが、2008年以前に設計されたものであれば仕方がないかと思います。ただし古いままを維持するか、AJAXやMVCなど順次新しい技術を取り入れていくかはプロジェクト次第かと思います。

### ページ遷移

[`Server.Transfer`メソッド](https://msdn.microsoft.com/ja-
jp/library/y4k58xk7\(v=vs.100\).aspx)はドキュメントに

> 現在のユーザーに対して、Transfer メソッドで提供されるリソースを表示する権限が与えられているかどうかを確認しません。

とあるように、権限の確認が行われないなど特殊な動作をしますからページ遷移に常用するのはお勧めできません。ASP.NETでは通常のHTMLと同じく、`<a
href>`によるページ遷移が可能ですので特殊な記述をすべきではありません。

### ログイン管理あるいはマルチセッション

他の方々も言及されていますが、Webとしては一般的な動作です。逆に

> 「すでにログインしているサービスに、別なウインドウから別なアカウントで同時にログインして使いたい」  
>  というのはごくありふれたニーズ

に応えているWebサイト等ありましたら挙げてみてください。例えばここstack overflowは該当しませんよね？
もし具体例が見つからないようでしたら「ごくありふれたニーズ」という認識を改めることをお勧めします。

* * *

個人的には

> フレームワークを正しく使っていない

に１票投じます。


CC BY-SA 3.0
2017-04-05T14:35:54.080
33795
2017-04-05T14:35:54.080
4236
33775
answer