Yapılandırma dosyasının değiştirilmesi, uygulamanın yeniden başlatılmasını gerektirdiğinden (ve her ne olursa olsun, yönlendirmeler yalnızca başlangıçta kaydedilmiş olsa bile), rota kaydının (başlangıç için) neden olamadığını bir neden göremiyorum kütüphanede "sadece yönlendirme için" (Routes.dll)?
Otomatik bağımlılık enjeksiyon/servis kaydı ve rota kaydını destekleyen MVCTurbine kullanıyorum. Ben rota kayıt için böyle sınıfını kullanın:
public class RouteRegistrator : MvcTurbine.Routing.IRouteRegistrator
{
/// <summary>
/// Registers routes within <see cref="T:System.Web.Routing.RouteCollection"/> for the application.
/// </summary>
/// <param name="routes">The <see cref="T:System.Web.Routing.RouteCollection"/> from the <see cref="P:System.Web.Routing.RouteTable.Routes"/>.</param>
public void Register(System.Web.Routing.RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new string[] { "MyNamespace.Controllers" }); // Parameter defaults
}
}
Bu sınıf webui projenin parçası olmak zorunda değildir, ancak ayrı dll olabilir. MVCTurbine, bin dizinindeki kütüphanelerde bulunan IRouteRegistrator ve IServiceRegistrator uygulamalarını otomatik olarak yükler (ve çağırır). Ve bildiğim gibi, IRouteRegistrator uygulamasının uygulama klasörüne uygulanmasında yeni yollar içeren dll ekleyerek yeni rotalar eklemenizi engelleyen hiçbir şey yoktur. Böylelikle, yeni uygulama yolları "anında", uygulama geri kalanını riske atmadan ekleyebilirsiniz (beklenmedik bir şey olursa yeni dll kolayca kaldırılabilir).
MVC Turbine kullanamıyorsanız veya kullanmıyorsanız, global.asax'tan dinamik olarak yüklenen kütüphaneye (yalnızca) sınıf içeren rotalar koleksiyonunu geçirerek rota kaydını harici dll'e "ayıklamak" için bu konsepti kullanabilirsiniz. rota kaydı için yöntemle.
Bu (MVCTurbine olsun veya olmasın) başlangıç noktası olarak, gerekirse, ortak yollar için xml veya txt config dosyasını foreach döngüsüne kolayca okuyabilirsiniz, ancak bu yöntem zor olduğu için basit yollarla sınırlı olacaktır (karmaşık, ancak metinde daha karmaşık bir yol yapılandırmasını temsil etmek imkansız değildir.
Soruyla doğrudan alakalı değil, sürekli entegrasyona sahip otomatik dağıtımları düşündünüz mü? Bunlar aile zamanına geri dönmenize yardımcı olabilir. – Jordan
@Jordan Dağıtım geliştirmeleri için göz önünde bulundurduğumuz birçok şey var ama bunun üzerinde doğrudan kontrolüm yok. Canlı sunucuda hiçbir şey olmadığından emin olmak için serbest bıraktığımızda burada olmamız gerekiyor. TeamCity'de olmamızı ve otomatikleştirmemizi isterdim ama bu benim görüşmem değil. Bunların hiçbiri, otomatik olarak serbest bırakılıncaya kadar hala beklemek zorunda kaldıkları için, uçağa bir rota atmaya ihtiyaç duyma problemini çözmez. – Chev