繁体   English   中英

不同VS解决方案中的Angular前端和C#后端

[英]Angular front-end and C# back-end in different VS solution

我已经在Visual Studio中使用角度ui路由构建了一个单页应用程序。 该前端应用程序运行良好。 请注意,我没有基于MVC架构构建此前端。 它基于有角种子的项目

问题:

现在,我需要构建一个处理api调用的C#后端。 条件是:

  1. 它应该在不同的Visual Studio解决方案中。 我的客户希望前端是静态的,例如,当我们决定将后端更改为python时,我们就可以重用前端。
  2. 两者都应在同一端口上运行。 例如,现在前端在localhost:13000上运行。 然后,后端应在localhost:13000 / api上运行。
  3. 不使用Nginx。 此应用程序将安装在用户的计算机上,对于业余用户而言,很难安装Nginx。

可能的解决方案:

  1. 建立通常的MVC。 前端和后端位于同一Visual Studio解决方案上的位置。 但这与标准1冲突。
  2. 为前端和后端构建单独的解决方案。 每个运行在不同的端口上并相互通信。 但是存在一个安全问题,它也与标准2冲突。
  3. 使用Nginx来“代理”两个端口。 但这与标准#3相冲突。
  4. 构建一个自托管的C#服务器,以处理来自前端和后端的请求。 现在,我正在尝试基于David的简单Web服务器构建它。 到目前为止,这满足了所有三个条件,但是仅接受“字符串”请求。 所有图片和Glyphicons都不起作用。 配置Web服务器以接受所有类型的请求将需要大量工作。

我的问题:

  1. 有更简单的方法可以做到这一点吗? 我已经阅读了一些有关OWIN的文章,但不确定是否是我要解决的那个问题。
  2. 如果解决方案#4是最好的方法,是否有某种有关如何正确配置Web服务器的指南?
  3. 如果解决方案4是最好的方法,那么如何为此处理单独的路由? 我希望页面使用我在app.js中设置的路由,并且仅在调用api时使用后端的路由。

非常感谢您的关注。

我建议您应该在IIS中的同一网站下运行2个虚拟应用程序。 如果您进入IIS,则可以创建一个网站,然后在其下创建一个虚拟应用程序。 例如;

  1. www.company.com创建一个名为company.com的网站
  2. www.company.com/app在company.com下创建一个名为app的虚拟应用程序,这将是您的角度应用程序所在的地方
  3. www.company.com/api在company.com下创建一个名为api的虚拟应用程序,这将是您的Web API所在的位置。 它可以是.NET应用程序。

如果您迁移到PHP,则可能需要调整网站设置,但这仍然是一个不错的计划。

我已经在以前的单服务器托管项目中使用了@fireydude的虚拟目录方法,但是如果您要在每个用户的计算机上安装网站本身,那么可以,使用自托管程序可能最容易实现此目的。方法。

查看OWIN自托管,尤其是您可能会在示例代码中寻找人们使用自托管方法实施端到端集成测试的示例-我已经为当前项目完成了这一工作,但不幸的是,这是专有代码,我无法在这里分享。

如果您被迫使用WebApi,请看一下

https://docs.microsoft.com/zh-cn/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api

另一方面,如果您有这样做的自由,我强烈建议您研究一下ServiceStack框架-它非常好,非常快,并且具有更好的基于消息的API方法(类似于Amazon,Google认可的方法)等等)

http://docs.servicestack.net/self-hosting

我有一些如何相同的项目结构,但我不使用角度。 希望我能对您有所帮助。

我在“ Visual Studio代码”中构建网站,在“ Visual Studio 2015”中构建后端(api)。 API的“发布”文件夹位于网站发布文件夹中。

root/inetpup/sites/www.example.com
root/inetpup/sites/www.example.com/api

我使用IIS,并将www.example.com文件夹转换为网站。 该网站位于“ www.example.com”上,而api位于“ www.example.com/api”上。

在前端,我需要从后端请求日期,如下所示:

www.example.com/api/items

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM