c# - ASP.NET Core 2 MVC + EF Core 2 或 Angular 5

标签 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 语句。
- 用户必须通过登录对自己进行身份验证,并在应用程序中工作时维护此身份验证。不同的登录权限会导致应用程序出现不同的行为。
- 一个 View 中涉及多个模型的数据(需要 View 模型)。
- 用户需要能够动态地向应用程序添加控件以在一次操作中提交多个数据集(通过 JavaScript)。
- 在一个 View 中,用户需要能够在不刷新网页的情况下回发数据并接收来自数据库的响应。基本上,他们在此 View 中的所有工作都无需重新加载网页(AJAX?)即可完成。
- 用户,至少在桌面上,需要在他们正在查看的数据发生变化时(通过另一个用户)从服务器接收更新(我相信又是 AJAX)。
- 该应用程序应该在桌面浏览器上以一种方式工作,而在移动浏览器显示屏上以另一种方式工作(Bootstrap?)。

也许我被 Angular 5 背后的炒作迷住了,它 promise 实现“丰富、流畅的客户端 Web 应用程序”。使用 ASP.NET 创建良好的客户端体验是否需要更多工作?

最佳答案

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

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

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

如今的转变无疑是在客户端(Angular/React/Vue)上使用静态 SPA,在服务器端使用 API/s。在 SEO、额外的复杂性、实现它的内部技能等方面,您需要注意一些注意事项。

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

按顺序解决您的问题:

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

总而言之,这两种方法都行得通,只需要预先考虑一下每种方法的优缺点,更重要的是您或您的团队必须具备的时间表/技能。如果您搜索“ASP.NET MVC vs SPA”,可以在线找到大量信息。

关于c# - ASP.NET Core 2 MVC + EF Core 2 或 Angular 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50094548/

相关文章:

.net - Hangfire 1.6.4 .NET Core - 无法解析依赖项

c# - 使用 amqp.net lite 对 azure eventhub 进行 SAS token 身份验证

android - Angular 2+组件内的Chrome(Android)视频自动播放

c# - Entity Framework 7 RC 1 和 ASP.NET MVC 6 中的种子初始数据

Angular 11 没有运行 ngcc

接口(interface)的 Typescript 风格指南

asp.net-core - 如何在 ActionFilterAttribute 中强制请求失败

c# - VS2015 未显示 SQLite 连接

c# - 如何获取 mshtml.IHTMLDocument6 或 mshtml.IHTMLDocument7?

c# - Autofac - 如何创建带参数的生成工厂