【问题标题】:ASP.NET Core 2 MVC + EF Core 2 or Angular 5 [closed]ASP.NET Core 2 MVC + EF Core 2 或 Angular 5 [关闭]
【发布时间】:2018-04-30 05:41:32
【问题描述】:

我不想引起辩论。问题更多的是,“我能否使用 ASP.NET Core 2 MVC + EF Core 2 与 Angular 5 实现相同的结果,如果使用 Angular 5 可以做到这一点,如何(高级)?”

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

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

也许我对 Angular 5 背后的炒作很感兴趣,因为它承诺实现“丰富、流畅的客户端 Web 应用程序”。使用 ASP.NET 创建良好的客户端体验是否只是更多的工作?

【问题讨论】:

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


    【解决方案1】:

    我不会说这是“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,因为它的简单性和即插即用性。
    • 一个可以提交数据而不刷新的视图,AJAX 又是你的朋友。 Axios 是一个很好的现代 AJAX 库,得到很好的支持。或者你可以使用fetch(针对旧版浏览器使用polyfills)
    • 动态页面更新,这就是开发中通常所说的“订阅”。现代浏览器/服务器支持WebSockets,这是客户端和服务器之间的持久连接,允许服务器将数据推送到客户端。出于性能原因,优先于轮询。查看SignalR,由 ASP.NET Core 团队制作,以很好地跨浏览器完成这项工作。他们目前正在开发 2.1 版本。
    • 定制的桌面/移动 UI,是的,这是响应式网页设计 (RWD)。它有你需要注意的限制,主要是因为相同的 HTML 通常提供给两个设备,而 CSS 只能在它的控制范围内设置样式。 Bootstrap 是一个 UI 框架(HTML sn-ps + CSS),它为您提供了一个用于构建布局的响应式网格和一个要使用的组件库,从而使 RWD 变得更加容易。

    总而言之,这两种方法都行得通,只是需要提前考虑一下每种方法的优缺点,更重要的是,您或您的团队必须掌握的时间线/技能。如果你搜索“ASP.NET MVC vs SPA”,网上有很多信息。

    【讨论】:

    • 谢谢。非常彻底。我不知道与浏览器一起使用的 WebSocket 的概念,所以我将研究 SignalR。这些是用于内部目的的应用程序,因此 SEO 不在范围内。这是打开学习之门的绝佳答案!
    猜你喜欢
    • 2018-09-27
    • 2020-03-06
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多