ASP.NET MVC 和 Angularjs 一起 + ASP.NET Web API
ASP.NET MVC and Angularjs together + ASP.NET Web API
我想知道使用这两个世界的优缺点:
- ASP.NET MVC 和 Angularjs 一起(没有剃须刀,Angularjs 就可以了)。
- AngularJS(前端) + ASP.NET Web API(后端).
我们专注于 SPA/Mini-SPA 的 medium/large 企业项目,其中包含大量服务器端业务规则和计算。我也在关注安全性。
优点和缺点的意见将帮助我在脑海中找到这个问题的答案:
Would it be a wise decision to use ASP.NET Web API(backend), ASP.NET
MVC and Angularjs together?
一个可能的解决方案是使用 Web API 创建一个 REST 服务并使用基于 Angular 的前端应用程序使用它(实际上,什么样的前端并不重要您将选择的技术——网络、桌面、本地移动等)。如果一切都通过 REST API 完成,这是可能的,包括授权和身份验证(不记名令牌是一个不错的选择)。
在这种情况下,您的 Web 服务器将仅充当 Angular 视图的主机。使用具有 ng-
属性的纯 HTML、MVC 甚至老式的 WebForms 都没有关系,因为不会在服务器上动态生成任何标记 — Angular 会在客户端执行所有必需的 DOM 操作。
我认为这与 ASP.NET MVC 和 Angular 无关。它应该是 Angular 或没有 Angular.js。仍然将 Angular.js 与 ASP.NET Web API 一起使用更有意义,因为 Angularjs 可以有效地处理 UI 部分。
以下是 Angualr.js
的一些优点和缺点
优点:
- 在 JavaScript
中创建 UI 的简洁方法
- Angular.js 可测试。您可以针对它编写测试。
- Angular js提供可复用组件
- angularjs 开发人员可以提高工作效率。
缺点:
- 不安全。由于大多数与 UI 相关的代码将仅在 Javascript 中
- SEO 不友好,因为大多数 UI 代码仅在 javascript 中
所以这取决于应用程序的性质。您需要创建更安全的应用程序,或者您需要创建像电子商务网站这样的应用程序,其中 SEO 更为重要。那么你应该使用普通的 ASP.NET MVC。但如果那不是选项那么值得使用 angular.js.
您还可以使用混合类型的应用程序,如果您需要安全页面或 SEO 相关,那么您可以使用 ASP.NET MVC,对于用户配置文件等其他应用程序,您可以使用 angular.js
因此,您需要根据自己的要求进行权衡。两者各有利弊。
是的,将两者结合起来是明智的。显然,根据具体项目,您需要调整最终解决方案中的一些变量。
你所建议的实际上是我们最近 2 或 3 个项目的堆栈,根据特定要求在这里和那里有一些变体。我们使用了 WebAPI + DurandalJS,WebAPI + Knockout...所有工作都非常好:) AngularJS 似乎停留时间最长,在我们公司内部越来越受欢迎,以及社区的其他人(这对我来说是一个决定性因素)
当前技术堆栈。
+------------------------------------+
| Usage |
+-------------------------+------------------------------------+
| AngularJS | The client app web, or mobile |
+-------------------------+------------------------------------+
| WebAPI | For all your data access needs |
+-------------------------+------------------------------------+
| OAuth & Bearer Tokens | For Authentication & Authorization |
+-------------------------+------------------------------------+
| SQL Server & EF / any | Persistence |
| any other noSQL variant | & Storage |
+-------------------------+------------------------------------+
| Angular-UI / | |
| Angular-Material | Base UI components |
+-------------------------+------------------------------------+
| Katana | Collection of projects for |
| | supporting OWIN on MS-Stack |
+-------------------------+------------------------------------+
| CORS | Standard for implementing |
| | cross domain requests |
+-------------------------+------------------------------------+
好处:
Web 应用程序可以很容易地移植到移动设备上(如果以您意识到自己可能会移动的方式编写)
- 使用Cordova
你有一个 API,你可以使用其他服务/应用程序轻松访问,如果你选择...加上 API 很酷(与传统访问相比机制)
AngularJS 允许强大而结构化的客户端代码(并不是说没有 Angular 就不能做到,但根据我的经验,如果你应该使用框架强制实施更好的实践正确遵守它们)
开始听起来像是一个破纪录,但众所周知,AngularJS 是超级可测试的
如果你害怕 NodeJS 和 grunt/gulp
之类的东西,你可以使用 .Net bundling
- 并不是说你必须害怕它(而是熟悉>不熟悉)
- 只需确保客户端代码以 Minsafe 方式编写
Visual Studio 实际上开发起来非常酷,特别是他们最近对开源支持的新关注。 AngularJS, Node 的许多集成点(您可能会在某些时候使用),显然 ASP.Net MVC
缺点:
如果你不熟悉 Angular 有一个很好的学习曲线
可能重复验证
- 为了减少回合 trips/callbacks,显然最好在第一次发送正确的数据。因此,在少数(或大多数)情况下,我们需要在 JavaScript
中复制一些数据级别验证
虽然它可能不适用,而且有点遥不可及......我一直在一个客户那里,他们严格希望使用 MS 的所有东西,因为开源是 "less secure",因为人们可以访问框架代码......去图。因此,请确保他们愿意使用开源的 SPA 框架(这可以适用于任何其他框架或工具)(以及随之而来的一切)
安全性重复。您需要确保 API 和应用程序的安全。 (由于两层之间有脱节)
您需要了解 CORS 的工作原理,以及如何正确实施它,因为您的 API 和 Web 应用程序可能不会在同一个 domain/origin 上
还有。值得一读:
Restful WebAPI vs Regular Controllers (A previous question I asked when it came to designing / understanding WebAPI & REST designs)
这取决于您的架构。我非常喜欢为任何 ASP.Net MVC 应用程序公开 APIs(安全、以指标为中心)。在一个更大的多角色应用程序中,我根据功能角色利用一系列 AngularJS SPA 将访问控制部分分开。使用 Razor 创建了一个带有单个视图(索引)的控制器。该视图集成了包装 Bootstrap 主题,然后包含 AngularJS 引用以拉入适当的应用程序。后端控制器(View 和 API)使用身份框架进行保护。 AngularJS 用于网站每个功能部分的优雅 UI。在我的例子中,这种方法允许在每个部分的基础上更好地隔离可测试代码。在同一域中托管 API 和 UI 还可以避免跨域托管可能引起的任何 CORS 考虑。
结构示意图如下:
/Content
/AccessGroup1/app.js (service, controllers)
/AccessGroup2/app.js (service, controllers)
/Controllers
/AccessGroup1controller
/AccessGroup2Controller
/Views
/AccessGroup1
/index.cshtml
/AccessGroup2
/index.cshtml
我想知道使用这两个世界的优缺点:
- ASP.NET MVC 和 Angularjs 一起(没有剃须刀,Angularjs 就可以了)。
- AngularJS(前端) + ASP.NET Web API(后端).
我们专注于 SPA/Mini-SPA 的 medium/large 企业项目,其中包含大量服务器端业务规则和计算。我也在关注安全性。
优点和缺点的意见将帮助我在脑海中找到这个问题的答案:
Would it be a wise decision to use ASP.NET Web API(backend), ASP.NET MVC and Angularjs together?
一个可能的解决方案是使用 Web API 创建一个 REST 服务并使用基于 Angular 的前端应用程序使用它(实际上,什么样的前端并不重要您将选择的技术——网络、桌面、本地移动等)。如果一切都通过 REST API 完成,这是可能的,包括授权和身份验证(不记名令牌是一个不错的选择)。
在这种情况下,您的 Web 服务器将仅充当 Angular 视图的主机。使用具有 ng-
属性的纯 HTML、MVC 甚至老式的 WebForms 都没有关系,因为不会在服务器上动态生成任何标记 — Angular 会在客户端执行所有必需的 DOM 操作。
我认为这与 ASP.NET MVC 和 Angular 无关。它应该是 Angular 或没有 Angular.js。仍然将 Angular.js 与 ASP.NET Web API 一起使用更有意义,因为 Angularjs 可以有效地处理 UI 部分。
以下是 Angualr.js
的一些优点和缺点优点:
- 在 JavaScript 中创建 UI 的简洁方法
- Angular.js 可测试。您可以针对它编写测试。
- Angular js提供可复用组件
- angularjs 开发人员可以提高工作效率。
缺点:
- 不安全。由于大多数与 UI 相关的代码将仅在 Javascript 中
- SEO 不友好,因为大多数 UI 代码仅在 javascript 中
所以这取决于应用程序的性质。您需要创建更安全的应用程序,或者您需要创建像电子商务网站这样的应用程序,其中 SEO 更为重要。那么你应该使用普通的 ASP.NET MVC。但如果那不是选项那么值得使用 angular.js.
您还可以使用混合类型的应用程序,如果您需要安全页面或 SEO 相关,那么您可以使用 ASP.NET MVC,对于用户配置文件等其他应用程序,您可以使用 angular.js
因此,您需要根据自己的要求进行权衡。两者各有利弊。
是的,将两者结合起来是明智的。显然,根据具体项目,您需要调整最终解决方案中的一些变量。
你所建议的实际上是我们最近 2 或 3 个项目的堆栈,根据特定要求在这里和那里有一些变体。我们使用了 WebAPI + DurandalJS,WebAPI + Knockout...所有工作都非常好:) AngularJS 似乎停留时间最长,在我们公司内部越来越受欢迎,以及社区的其他人(这对我来说是一个决定性因素)
当前技术堆栈。
+------------------------------------+
| Usage |
+-------------------------+------------------------------------+
| AngularJS | The client app web, or mobile |
+-------------------------+------------------------------------+
| WebAPI | For all your data access needs |
+-------------------------+------------------------------------+
| OAuth & Bearer Tokens | For Authentication & Authorization |
+-------------------------+------------------------------------+
| SQL Server & EF / any | Persistence |
| any other noSQL variant | & Storage |
+-------------------------+------------------------------------+
| Angular-UI / | |
| Angular-Material | Base UI components |
+-------------------------+------------------------------------+
| Katana | Collection of projects for |
| | supporting OWIN on MS-Stack |
+-------------------------+------------------------------------+
| CORS | Standard for implementing |
| | cross domain requests |
+-------------------------+------------------------------------+
好处:
Web 应用程序可以很容易地移植到移动设备上(如果以您意识到自己可能会移动的方式编写)
- 使用Cordova
你有一个 API,你可以使用其他服务/应用程序轻松访问,如果你选择...加上 API 很酷(与传统访问相比机制)
AngularJS 允许强大而结构化的客户端代码(并不是说没有 Angular 就不能做到,但根据我的经验,如果你应该使用框架强制实施更好的实践正确遵守它们)
开始听起来像是一个破纪录,但众所周知,AngularJS 是超级可测试的
如果你害怕 NodeJS 和 grunt/gulp
之类的东西,你可以使用 .Net bundling- 并不是说你必须害怕它(而是熟悉>不熟悉)
- 只需确保客户端代码以 Minsafe 方式编写
Visual Studio 实际上开发起来非常酷,特别是他们最近对开源支持的新关注。 AngularJS, Node 的许多集成点(您可能会在某些时候使用),显然 ASP.Net MVC
缺点:
如果你不熟悉 Angular 有一个很好的学习曲线
可能重复验证
- 为了减少回合 trips/callbacks,显然最好在第一次发送正确的数据。因此,在少数(或大多数)情况下,我们需要在 JavaScript 中复制一些数据级别验证
虽然它可能不适用,而且有点遥不可及......我一直在一个客户那里,他们严格希望使用 MS 的所有东西,因为开源是 "less secure",因为人们可以访问框架代码......去图。因此,请确保他们愿意使用开源的 SPA 框架(这可以适用于任何其他框架或工具)(以及随之而来的一切)
安全性重复。您需要确保 API 和应用程序的安全。 (由于两层之间有脱节)
您需要了解 CORS 的工作原理,以及如何正确实施它,因为您的 API 和 Web 应用程序可能不会在同一个 domain/origin 上
还有。值得一读:
Restful WebAPI vs Regular Controllers (A previous question I asked when it came to designing / understanding WebAPI & REST designs)
这取决于您的架构。我非常喜欢为任何 ASP.Net MVC 应用程序公开 APIs(安全、以指标为中心)。在一个更大的多角色应用程序中,我根据功能角色利用一系列 AngularJS SPA 将访问控制部分分开。使用 Razor 创建了一个带有单个视图(索引)的控制器。该视图集成了包装 Bootstrap 主题,然后包含 AngularJS 引用以拉入适当的应用程序。后端控制器(View 和 API)使用身份框架进行保护。 AngularJS 用于网站每个功能部分的优雅 UI。在我的例子中,这种方法允许在每个部分的基础上更好地隔离可测试代码。在同一域中托管 API 和 UI 还可以避免跨域托管可能引起的任何 CORS 考虑。
结构示意图如下:
/Content
/AccessGroup1/app.js (service, controllers)
/AccessGroup2/app.js (service, controllers)
/Controllers
/AccessGroup1controller
/AccessGroup2Controller
/Views
/AccessGroup1
/index.cshtml
/AccessGroup2
/index.cshtml