- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个针对正在构建的移动应用程序的解决方案 - 到目前为止,它由两个项目组成:
1) WebAPI for API / DAL / SQL etc
2) Web for single-page front-end
Web 项目调用 WebAPI 项目。该计划是为 Windows 8 应用程序创建另一个项目,为 WP8 应用程序创建另一个项目,等等。
这在开发时工作正常,但由于 CORS、部署等而变得相当复杂(Web 是从与 WebAPI 不同的端点提供的 - 两个 Azure 网站)。我的问题是 - 在构建由 REST-ish API 支持的解决方案时,何时将解决方案拆分为多个项目是明智/不明智的?
最佳答案
出于以下几个原因,我总是将 API 和前端拆分为单独的项目:
前端依赖项(jquery、knockout、Angular...)使 api 变得比必要的更重。筛选“其他”项目类型的代码可能会减慢开发速度。
在一个项目中跨两个功能独立的项目提交时,源代码控制可能会变得有点困惑。如果您在一次提交中同时更改了 API 和站点,但随后想要将其中一个恢复到较旧的时间点(或单独升级它们),这将变得令人头疼。
通过将项目放在一起,您必须立即更新所有共享依赖项(升级到新版本的 .NET?)。如果您的 API 代码依赖于折旧代码,则升级可能会很困难,并且您的网站升级可能会受到阻碍(反之亦然)。
如果它们位于同一项目中,您将无法轻松地仅发布 API 或前端。通常情况下在您不再搞乱网站的视觉效果之前,API 就已经完成并稳定了。您不希望每次对网站进行微小更改时都必须重新发布 API,从而受阻。
将两者作为同一个项目将要求您在同一网络服务器上运行两者(并且在同一应用程序池中!)。如果您将有多个源访问您的 API(通常是 API 的点),那么您不希望 API 由于对网站的请求而降级。这是双向的,如果您的 API 受到严重打击,您不希望您的网站变得无响应。
由于它们将在同一应用程序池中运行,因此它们也将以同一用户身份运行。出于安全目的,您可能希望 API 应用程序池作为单独的服务帐户运行,该帐户具有对数据源的集成身份验证访问权限。然后您可以锁定网站用户帐户并使其无法访问外部资源。
由于 MVC webapi 模板提供了前端的所有依赖项和配置,因此将这些放在一起似乎合乎逻辑,但仅仅因为它们使事情变得简单并不意味着应该这样做。我通常会剥离此模板中提供的前端,并将其制作成一个简单的页面来描述如何使用 API。
最后,MVC 本身就是关注点分离和清洁开发。我想说,分离项目类型遵循这个逻辑。
关于c# - 在解决方案中拆分 WebApi 项目和 FrontEnd 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24443789/
关闭。这个问题需要details or clarity .它目前不接受答案。 想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题. 8年前关闭。 Improve thi
当我使用docker-compose up命令在docker上安装超集时。 它达到状态13/37并显示以下错误。 步骤13/37:运行/frontend-mem-nag.sh && cd / app
我在浏览器控制台中遇到此错误: 未捕获错误:无法从“frontend/js/app.js”中找到模块“frontend/js/components/Hello” 当遵循 vue example 时在早
我当前的设置中有2个HAProxies配置有keepalived以实现高可用性,这2个代理充当虚拟Web服务的反向代理和负载平衡器。我知道HAProxy可以检查其后端的运行状况(我已经配置了此功能),
Semantic versioning带来以下方法: 进行不兼容的 API 更改时的主要版本 以向后兼容的方式添加功能时的次要版本 当您进行向后兼容的错误修复时的 PATCH 版本 但是前端项目没有A
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
因此,在网站上,例如,当您的声誉增加等事情发生时,页面的堆栈溢出部分会更新。他们是怎么做到的?脚本会不时检查还是以某种方式推送通知? 最佳答案 大约 2 年前,stackexchange 开始使用网络
我正在学习网络技术和编程语言。开始学习框架和其他东西。查看 Bootstrap 前端框架。关于这件事我不了解的一些细节。 在官方网页上说您可以下载已编译的 Bootstrap 源代码。不明白,前端开发
关闭。这个问题需要更多 focused .它目前不接受答案。 想改进这个问题?更新问题,使其仅关注一个问题 editing this post . 3年前关闭。 Improve this questi
为了扩展 TWX 应用程序,必须遵循哪些架构和应用程序开发最佳实践? 大多数应用程序一开始只使用很少的设备,但随着时间的推移,它们很快就会扩展到数千个设备。一旦一个 TWX 实例的流量过多,应采取什么
这里的任何人都知道在 Trello 网站上使用哪种技术或框架或任何东西来呈现漂亮的 GUI? 我对前端技术有点过时了。 最佳答案 以下是 Fog Creek(创建者)对 Trello 技术堆栈的精彩描
我有 Angular 6 微前端应用程序。它在主应用程序中有 4 个不同的应用程序。我如何在这些应用程序之间实现路由。我如何在主应用程序(我在主应用程序中有很多子路由)和子应用程序中实现路由。我正在使
我想就基于前端/后端架构实现 SSO 登录的推荐或标准方法寻求建议。 目前,我需要实现第 3 方 SSO 登录。流程如下: 用户在我的网站点击“第三方登录” 路由到用于 SSO 登录的第 3 方界面。
可能这种模式听起来很老,但是我们如何实现一个我们想要有一个后端(数据库)、一个业务逻辑层和多个前端的场景?桌面、网络和移动设备? 诸如现代应用程序之类的东西 - gmail、facebook、ever
color: red; Some html content! 此代码不起作用。在 Angular 框架中,可以通过使用 :host 来完成。选择器。 :global在我的情况下无济于事,因为我
我正在开发一个需要使用 amazon lex 作为聊天机器人的项目。我能够在命令行上将凭证发送到 amazon lex,但是,当我将其部署到我的应用程序时遇到问题。我使用亚马逊 cloudFormat
我正在为我们的运算符(operator)寻找一个前端来运行我们的 Talend 作业。我们不希望他有删除或修改作业的能力。只是为了运行它们并监控它们的结果。对于执行此操作的工具有什么建议吗? 谢谢 最
如何在同一应用程序中分离后端和前端( Controller 、 View 、布局)以共享 CakePHP 3 中的模型? 最佳答案 如果您在终端中使用bin/cake bake,您可以添加--pref
我有一个固定宽度居中的 div,其中有一个固定的无重复背景图像,背景图像需要偏离中心。但是,当调整窗口大小时,无论图像是使用百分比坐标还是像素坐标固定的,它都不会在 div 中保持正确的位置。 有没有
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
我是一名优秀的程序员,十分优秀!