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

时间:2018-04-30 05:41:33

标签: c# angular asp.net-core-mvc asp.net-core-2.0

我不想征求辩论。问题是,“我可以使用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创建一个不错的客户端体验只是更多的工作吗?

1 个答案:

答案 0 :(得分:6)

我不会说这是" 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和洒水可能更容易一些带有AJAX的Vue.js在前端驱动一些动态UI(动态表单和数据更新)。

按顺序解决您的观点:

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

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