作为提高代码库标准的一种方式,我希望所有新的Web项目(如果可能)都使用MVC5和Inversion of Control。我想要一个服务,域和存储库层。加单元测试让他们开始。 显然,这是为每个项目预先做的很多代码,我想避免“只是复制ProjectXYZ并删除你不需要的东西”,因为这在过去充满了人为错误。
如何使用我的基本骨架解决方案并将其转换为模板供同事们使用File - >新项目等? 他们可以复制我创建的.sln,但似乎可能有更专业的方法来实现它。
也许已经有一个我们可以使用的了吗?
答案 0 :(得分:4)
我是ASP.NET MVC Boilerplate的开发人员(我通过查看我的GitHub流量并查看@ floatas的链接找到了这个问题,所以非常感谢@floatas。)
默认的MVC项目模板太基础了,开箱即用。 ASP.NET MVC Boilerplate背后的想法是为您编写所有样板代码,因此您不必这样做。
现在它不包含单元测试,存储库等,但它确实包含了每个网站所需的很多其他内容。
默认的MVC模板不是那么安全。有各种设置(主要在web.config文件中)默认情况下不安全。例如,它会泄漏有关您正在使用的IIS版本的信息,并允许外部脚本默认访问Cookie!
ASP.NET MVC Boilerplate默认情况下使一切安全,但更进一步,并使用各种HTTP标头发送到浏览器以进一步限制事情。
它还使用Content Security Policy (CSP) NuGet包使用新的NWebSec HTTP标头。 CSP彻底改变了网络安全,我强烈建议您阅读上述链接。
设置SSL / TLS,通过简单的分步说明和链接,您的网站可以通过HTTPS轻松运行。
默认的MVC模板在性能部门的工作非常糟糕。可能是因为他们没有对您正在使用的Web服务器做出任何假设。编写ASP.NET MVC站点的大多数世界和狗使用IIS,并且system.webServer部分下的web.config文件中有一些设置,这可以在性能方面产生重大影响。
ASP.NET MVC Boilerplate没有做出这样的假设。它打开GZip压缩,将静态和动态文件发送到浏览器,使其更小,更快下载。它还默认使用内容交付网络(CDN)来使jQuery之类的常见脚本更快下载(你可以将其关闭,但关键是ASP.NET MVC Boilerplate默认是快速的。)
那不是全部!还有一些其他调整和实践示例可以帮助提高网站的性能。 ASP.NET MVC Boilerplate在YSlow上获得了 96/100 的分数(由于其中一些标准相互矛盾且站点脚本需要,因此无法获得完整的100分要转移到你需要自己做的CDN。)
默认的ASP.NET MVC模板根本不考虑搜索引擎优化。 ASP.NET MVC Boilerplate添加了一个动态生成的robots.txt文件,告诉搜索引擎他们可以索引哪些页面。它还添加了一个动态生成的sitemap.xml文件,您可以通过提供指向所有页面的链接来进一步帮助搜索引擎。
ASP.NET MVC有一些非常有用的设置,用于将尾部斜杠附加到URL并使所有URL小写。不幸的是,这两个都默认关闭,这对SEO来说很糟糕。该项目默认打开它们。
它还包括一个MVC过滤器,它有助于重定向非规范的URL(URL没有斜杠或混合大小写字符,被搜索引擎视为不同的URL)到他们的规范等价物。
网站需要尽可能多的人接触并在各种设备上看起来很好。 ASP.NET MVC Boilerplate支持与IE8一样古老的浏览器(IE8仍有大约4%的市场份额,并且主要用于懒得将旧网站移植到新浏览器的公司)。
ASP.NET MVC Boilerplate还尽可能支持桌面浏览器以外的设备。它具有适用于Windows 8,Android,Apple设备的默认图标和启动画面以及默认包含的一些其他设备特定设置。
在某些时候,您的网站可能会抛出异常,您需要处理并记录该异常才能理解并修复它。 ASP.NET MVC Boilerplate包含Elmah,默认情况下流行的错误记录插件。它全部预先配置好并可以使用。
ASP.NET MVC Boilerplate使用来自谷歌和微软的流行内容交付网络(CDN),但是在不太可能发生的情况下会发生什么?那么,ASP.NET MVC Boilerplate为这些提供了备份。
不仅如此,还有标准错误页面,例如500内部服务器错误,404未找到以及许多其他内容都内置在模板中。 ASP.NET MVC Boilerplate甚至包括IIS配置,以保护您免受Denial-of-Service(DoS)攻击。
ASP.NET MVC Boilerplate使用Glimpse(正如Scott Hansleman here所宣传的那样)。它是一个很好的工具,可用于开发,查找性能问题和错误。当然,Glimpse都是预配置的,所以你不需要抬起手指来安装它。
做正确的事有时会花费一些额外的时间。例如,使用Inversion of Control (IOC)模式应该是默认模式。 ASP.NET MVC Boilerplate默认使用Autofac IOC容器。在谈论IOC容器时,有些人会得到一些部落,但说实话,它们都很有效。选择Autofac是因为它有很多ASP.NET MVC帮助程序,微软甚至将它用于Azure移动服务。
ASP.NET MVC Boilerplate还利用流行的Less文件,使CSS更轻松。例如,它可以在默认的Bootstrap CSS中制作覆盖颜色和字体。
ASP.NET MVC是一个复杂的野兽。你最终可能会遇到很多magic strings,这在重命名时可能是一场噩梦。有许多方法可以消除这些神奇的字符串,但大多数交易可维护性都会降低性能。 ASP.NET MVC Boilerplate广泛使用常量,这是可维护性和性能之间的权衡,为您提供两全其美的优势。
在您的应用程序中实现搜索比听起来要多得多。 ASP.NET MVC Boilerplate默认包含一个搜索功能,但保持打开状态,供您选择实现方式。它还开箱即用地实现了Open Search XML。阅读Scott Hanselman谈论此功能here。
Open Graph元标记和Twitter Card元标记。不仅如此,ASP.NET MVC Boilerplate还包含完整记录的HTML帮助程序,使您可以轻松,准确地轻松生成Open Graph对象或Twitter Card符号标记。
答案 1 :(得分:1)
有RehanSaeed/ASP.NET-MVC-Boilerplate,aspnetboilerplate.com以及可能有更多工具来生成起始模板。它们是开源的,可以作为插件安装,因此您可以改变自己喜欢的方式并给予团队。
答案 2 :(得分:0)
如果您仍然想要创建自己的,可以按照these步骤进行操作。我不能把它们都包括在这里,因为它们很长。