2012-09-14 9 views
7

私はここにこのパターンのコードを見つけたことはありません。誰も私にそれを説明する気になりますか? (ここにもパターンがありますか?これがこのように行われた理由はありますか?これは何の利点ですか?)私は一般的なプログラミングでは新しく、これは私にとって非常に興味深いものです:ASP.NET MVC 4のGlobal.asax.csファイルではどのようなパターンが実行されていますか?

Global.asax.cs

protected void Application_Start() 
    { 
     AreaRegistration.RegisterAllAreas(); 

     WebApiConfig.Register(GlobalConfiguration.Configuration); 
     //... 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
     //... 
    } 

WebApiConfig.cs

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 
} 

RouteConfig.cs

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}", 
      defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
     ); 
    } 
} 

答えて

5

あなたは簡単にこのようなあなたのサンプルのコードを書くことができます:

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 

    GlobalConfiguration.Configuration.Routes.MapHttpRoute(
     name: "DefaultApi", 
     routeTemplate: "api/{controller}/{id}", 
     defaults: new { id = RouteParameter.Optional }); 

    RouteTable.Routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    RouteTable.Routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { 
      controller = "Home", 
      action = "Index", 
      id = UrlParameter.Optional }); 
} 

しかし、必要な構成の量が増えると、それはいくつかの論理的に関連のチャンクにそれを分割することは理にかなって。 ASP.NET MVCでは、これをかなりうまくサポートしています。デフォルトのプロジェクトテンプレートは、そうする方向にあなたを導くだけです。

+0

hmmm ...なぜ彼らはそれをしたのか分かります。素晴らしい答え!あなたは私に(もし可能なら)説明することができます、どのように、なぜ彼らはより深く、基本的にそれをしましたか?たぶん、非常に単純な並列例を提供するでしょうか? (私はプログラミングでは新しい)。ありがとうございました。 – JCCV

+2

@JCCV私は彼らがなぜこのようなことをしたのかについての権威であるかどうかはわかりません。私の最高の推測は、例えばJavalandによく見られるXML構成の問題を避けることです。たとえば、XML構成を複数のファイルに分割する場合は、構成ファイル形式で明示的にサポートする必要があります。ライブラリーの構成ファイルを含めることができるようにしたい場合、これはより複雑になります。実行時に動的に構成を生成したい場合はさらに悪化します。 – millimoose

+0

@millimooseこれは、一般的なXML構成に対する引数であり、構成を更新する1つまたは複数のメソッドに対する引数ではありません。 –

5

これは、はるかにSingle Responsibility Principle (SRP)の例のパターンではありません。 Global.asaxでは、物事を設定するために必要な高水準のタスクが分かっていますが、実装を分けたままにしておきます。

+0

これは実際のパターンではなく、クラスを設計する際の原則です。 – millimoose

+0

ありがとう、私は答えを更新しました。 –

+0

@millimoose:私の口から正しい言葉を取り出しました! –

関連する問題