使用 MSBUILD 构建后,ASP.NET Web API 如何工作?
How do ASP.NET Web APIs work once built with MSBUILD?
我是编码新手,大部分时间都在使用 Phonegap 进行移动应用程序开发,我一直在学习如何编码 ASP.NET Web APIs 并且我大致了解它在我面前打开代码时一切正常,但是 ---
今天有人问我一个问题,我试图回答这个问题让自己出丑了。假设您有一个 ASP.NET Web API 由多个项目组成,一个用于核心 API 及其控制器,一个用于存储库,另一个用于所使用的数据结构。路由已设置,因此他们将查找 myServer.com/api/myController/giveMeSomeData。当 MSBUILD 执行此操作并构建 API 时,它会生成一长串 dll,其中包含 myApi.dll、myRepositories.dll、myDataStructures.dll 和引用的库。一旦这一切都被推送到 Azure 云服务或任何 IIS 实例来托管它,服务器如何找到 /api/myController 以及它实际驻留在构建文件中的什么位置?
从未尝试将 Web api 部署到 Azure,但我一直在将 Web api 部署到 AWS,我假设它是一样的..
一旦您在 AWS 中配置了 windows 服务器实例 (EC2),您将获得一个 public IP 地址。为了争论起见,假设您的 public IP 地址是 55.77.321.10,那么您的 api 将可以从以下位置访问:http://55.77.321.10/api/values
如果服务器在本地,则需要为服务器本身配置一个域名服务器。
无论在云端还是本地,您的网站 api 都将托管在 IIS 服务器中。
假设您有自己的域并在 windows 服务器上安装了 IIS,您需要执行的步骤:
打开 DNS 管理控制台。要打开 DNS,请单击“开始”,单击“控制面板”,双击“管理工具”,然后双击“DNS”。
找到 www.domain.com 正向查找区域。
创建新的 CNAME 记录
点CNAME -> A记录www.domain.com
在IIS中,将第二个网站的绑定设置为IP地址:相同,端口:80,主机:www.domain.com
WebApi 是一个网络项目,在编译时会创建一个 dll。消费和使用它不是 class 库或 nuget 包。 我已经在现实世界的应用程序中实际实现了这一点,下面是我的想法供您理解。
你的问题是
Once this is all pushed to an Azure Cloud Service or whatever IIS
instance to host it, how does server find /api/myController and where
does it actually reside in the built files?
我们无法预测 dll 的行为,因为一切都以托管代码的形式进行。问你这个问题的人想问你有关部署自动化的问题,但 he/she him/herself 并没有完全意识到这一点。构建工件是解决方案 (.sln
) 的 dll 集合。我认为向您提出这个问题的人可能只是在服务器中看到了这些 dll,而不知道使用 MSBUILD
的实际概念是什么。确切的问题应该是 你将如何部署 web api 的 dll 以及服务器、azure 等中的 dll 依赖项(存储库、控制器和其他项目)..?
要回答这个问题,我们需要了解Web项目部署。使用 MSBUILD
.
讨论部署自动化是一个非常有趣的话题
MSBUILD is an xml based scripting language that helps you compile and
build your .net applications and a very interesting language for build automation.
ASP.NET Web API 也是一种没有网页或视图(如果是 MVC)的 ASP.NET 应用程序,它的部署方式应该与我们部署 mvc 的方式相同应用程序。当然,我们在一个解决方案文件(.sln
)下有很多项目,如存储库、控制器。 By compiling the solution using MSBUILD we create build artifacts.
所有web项目都需要build artifacts可以直接IMPORTED作为iis manager/Azure等下的网站或应用程序。我们将根据 Web API 创建一个 .zip 文件并将它们导入 inetmgr。您可以将此 .zip 文件导入到任何您想要的地方(比如在不同的机器上)。
构建工件是通过使用 MSBUILD
脚本编译应用程序来执行 aspnet_compiler
exe 创建的。此 link 将帮助您。无论我们设置什么信息,比如路由、控制器等,都会进行预编译并创建一个预编译的 dll。一旦预编译,一切都以二进制形式出现,问你它会如何表现是不好的。
完整的过程称为 deployment automation. Check out the command line deployment using MSBUILD section in the link,阅读有关部署自动化的内容将帮助您进一步了解这一点。
如果您需要更多答案,请回复我会进一步帮助您,或者您可以 google 关于部署自动化。希望这可以帮助您选择这个作为答案。
我是编码新手,大部分时间都在使用 Phonegap 进行移动应用程序开发,我一直在学习如何编码 ASP.NET Web APIs 并且我大致了解它在我面前打开代码时一切正常,但是 ---
今天有人问我一个问题,我试图回答这个问题让自己出丑了。假设您有一个 ASP.NET Web API 由多个项目组成,一个用于核心 API 及其控制器,一个用于存储库,另一个用于所使用的数据结构。路由已设置,因此他们将查找 myServer.com/api/myController/giveMeSomeData。当 MSBUILD 执行此操作并构建 API 时,它会生成一长串 dll,其中包含 myApi.dll、myRepositories.dll、myDataStructures.dll 和引用的库。一旦这一切都被推送到 Azure 云服务或任何 IIS 实例来托管它,服务器如何找到 /api/myController 以及它实际驻留在构建文件中的什么位置?
从未尝试将 Web api 部署到 Azure,但我一直在将 Web api 部署到 AWS,我假设它是一样的..
一旦您在 AWS 中配置了 windows 服务器实例 (EC2),您将获得一个 public IP 地址。为了争论起见,假设您的 public IP 地址是 55.77.321.10,那么您的 api 将可以从以下位置访问:http://55.77.321.10/api/values
如果服务器在本地,则需要为服务器本身配置一个域名服务器。
无论在云端还是本地,您的网站 api 都将托管在 IIS 服务器中。
假设您有自己的域并在 windows 服务器上安装了 IIS,您需要执行的步骤:
打开 DNS 管理控制台。要打开 DNS,请单击“开始”,单击“控制面板”,双击“管理工具”,然后双击“DNS”。
找到 www.domain.com 正向查找区域。
创建新的 CNAME 记录
点CNAME -> A记录www.domain.com
在IIS中,将第二个网站的绑定设置为IP地址:相同,端口:80,主机:www.domain.com
WebApi 是一个网络项目,在编译时会创建一个 dll。消费和使用它不是 class 库或 nuget 包。 我已经在现实世界的应用程序中实际实现了这一点,下面是我的想法供您理解。
你的问题是
Once this is all pushed to an Azure Cloud Service or whatever IIS instance to host it, how does server find /api/myController and where does it actually reside in the built files?
我们无法预测 dll 的行为,因为一切都以托管代码的形式进行。问你这个问题的人想问你有关部署自动化的问题,但 he/she him/herself 并没有完全意识到这一点。构建工件是解决方案 (
.sln
) 的 dll 集合。我认为向您提出这个问题的人可能只是在服务器中看到了这些 dll,而不知道使用MSBUILD
的实际概念是什么。确切的问题应该是 你将如何部署 web api 的 dll 以及服务器、azure 等中的 dll 依赖项(存储库、控制器和其他项目)..?要回答这个问题,我们需要了解Web项目部署。使用
MSBUILD
. 讨论部署自动化是一个非常有趣的话题
MSBUILD is an xml based scripting language that helps you compile and build your .net applications and a very interesting language for build automation.
ASP.NET Web API 也是一种没有网页或视图(如果是 MVC)的 ASP.NET 应用程序,它的部署方式应该与我们部署 mvc 的方式相同应用程序。当然,我们在一个解决方案文件(.sln
)下有很多项目,如存储库、控制器。 By compiling the solution using MSBUILD we create build artifacts.
所有web项目都需要build artifacts可以直接IMPORTED作为iis manager/Azure等下的网站或应用程序。我们将根据 Web API 创建一个 .zip 文件并将它们导入 inetmgr。您可以将此 .zip 文件导入到任何您想要的地方(比如在不同的机器上)。
构建工件是通过使用
MSBUILD
脚本编译应用程序来执行aspnet_compiler
exe 创建的。此 link 将帮助您。无论我们设置什么信息,比如路由、控制器等,都会进行预编译并创建一个预编译的 dll。一旦预编译,一切都以二进制形式出现,问你它会如何表现是不好的。完整的过程称为 deployment automation. Check out the command line deployment using MSBUILD section in the link,阅读有关部署自动化的内容将帮助您进一步了解这一点。
如果您需要更多答案,请回复我会进一步帮助您,或者您可以 google 关于部署自动化。希望这可以帮助您选择这个作为答案。