ASP.NET Core 2 MVC + EF Core 2或Angular 5

Lok*_*ked 1 c# asp.net-core-mvc asp.net-core-2.0 angular

我不想征求辩论.问题更多,"我可以使用ASP.NET Core 2 MVC + EF Core 2与Angular 5获得相同的结果,如果Angular 5可以实现,那么(高级别)怎么样?"

我对Angular 5了解不多,几个月前我才开始在ASP.NET Core中设计非常小的Web应用程序.

我的应用程序涉及:
- 关系数据库(约50个表,包括所有类型的关系),以及另一个专有数据库,并在两者上执行CRUD语句.
- 用户必须通过登录进行身份验证,并在应用程序中维护此身份验证.不同的登录权限会导致应用程序中出现不同的行为.
- 视图中涉及多个模型的数据(需要视图模型).
- 用户需要能够动态地向App添加控件,以便在一次操作中提交多个数据集(通过JavaScript).
- 在一个视图中,用户需要能够发回数据并从数据库接收响应,而无需刷新网页.基本上,他们在这个视图中的所有工作都可以在不重新加载网页的情况下完成(AJAX?).
- 至少在桌面上的用户需要在他们正在查看的数据发生变化时(通过另一个用户)从服务器接收更新(我相信AJAX).
- 应用程序应该在桌面浏览器上以一种方式工作,而在移动浏览器显示器上以另一种方式工作(Bootstrap?).

也许我对Angular 5背后的炒作感到不满,因为它承诺实现"丰富,流动的客户端Web应用程序".使用ASP.NET创建良好的客户端体验只是更多的工作吗?

ben*_*lum 7

我不会说这是"ASP.NET Core 2 MVC + EF Core 2 vs Angular 5"的问题.你的方法将是:

  • 服务器端交付页面(MVC),或
  • 客户端呈现页面(Angular).

在这两种情况下,您都需要ASP.NET Core和EF Core.在第一种情况下,您将使用ASP.NET Core和MVC包,并使用Razor在服务器上生成和呈现您的标记并将其发送到客户端.在第二种情况下,您将不需要MVC,但是您需要其他软件包来支持ASP.NET Core上的REST Web API,以便为您的客户端Angular应用程序提供数据.

这些日子的转变绝对是在服务器端使用带有API/s的客户端(Angular/React/Vue)上的静态SPA.虽然在搜索引擎优化,额外的复杂性,实现它的内部技能等方面,你需要注意一些警告.

因此,如果您愿意接受学习曲线并采用更现代的方法,您可以在后端尝试使用带有API的Angular,但说实话,使用传统的MVC并使用一些Vue.js可能更容易AJAX在前端驱动一些动态UI(动态表单和数据更新).

按顺序解决您的要点:

  • DB,如果你熟悉它,我会使用EF Core,它得到很好的支持和高效率.如果这是一个问题,请注意它产生的性能开销.
  • 身份验证/授权,默认的ASP.NET核心模板提供了一些此功能,否则请查看Auth0以获取可以利用的IDaaS(ID即服务)平台.
  • 动态控件,您可以在此处使用一些非常基本的纯JavaScript来动态创建其他表单字段.我使用Vue.js虽然它的简单性和即插即用性.
  • 一个可以提交数据但不刷新的视图,再次AJAX是你的朋友.Axios是一个很好的现代AJAX库,得到了很好的支持.或者您可以使用fetch(使用旧版浏览器的polyfill)
  • 动态页面更新,这是开发中通常称为"订阅"的内容.现代浏览器/服务器支持WebSockets,即客户端和服务器之间的持久连接,允许服务器将数据推送到客户端.出于性能原因,优先选择轮询.查看由ASP.NET核心团队制作的SignalR,以便跨浏览器完成这项工作.他们目前正在开发2.1版本.
  • 量身定制的桌面/移动UI,是的,这是响应式网页设计(RWD).它具有您需要注意的局限性,主要是因为相同的HTML通常提供给两个设备,而CSS只能在其控制范围内设置样式.Bootstrap是一个UI框架(HTML片段+ CSS),通过为您提供用于构建布局的响应式网格和要使用的组件库,使RWD变得更加容易.

总而言之,任何一种方法都可行,只需要先考虑一下每种方法的优缺点,更重要的是你或你的团队必须完成的时间表/技能.如果您搜索"ASP.NET MVC vs SPA",那么在线有大量信息.