7

ここでこのコードのパターンに出くわしたことはありません。誰か説明してくれませんか?(または、ここにパターンさえありますか?これがこのように行われた理由はありますか?これによりどのような利点が得られますか?)私は一般的なプログラミングの初心者であり、これは私にとって非常に興味深いものです:

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 }
        );
    }
}
4

2 に答える 2

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はこれをかなりうまくサポートしており、デフォルトのプロジェクトテンプレートは、そうするようにガイドしようとしているだけです。

于 2012-09-14T01:17:48.527 に答える
5

これは、 Single Responsibility Principle (SRP)の例としてのパターンではありません。Global.asax では、セットアップに必要な高レベルのタスクを知っていますが、実装は分離したままにします。

于 2012-09-14T01:13:34.417 に答える