我正在尝试使用Azure设置多租户应用程序。这就是我想象的架构:
WebRole - 针对多个用户的单个应用程序(每个用户都需要自定义主机名,例如 your.site.com 或 my.site.com 或 yoursite.com )
WorkerRole - 用于为网络角色生成新的数据库/添加主机名?
使用WebRoles和WorkerRoles背后的原因是可扩展性。
我知道您可以在csdef中为webrole添加多个主机名,如下所示:
<Sites>
<Site name="Site1" physicalDirectory="C:\Users\User\Documents\Visual Studio 2012\Projects\Project1">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="domain1.com" />
<Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="domain1.com" />
</Bindings>
</Site>
<Site name="Site2" physicalDirectory="C:\Users\User\Documents\Visual Studio 2012\Projects\Project2">
<Bindings>
<Binding name="Endpoint1" endpointName="Endpoint1" hostHeader="domain2.com" />
<Binding name="Endpoint2" endpointName="Endpoint2" hostHeader="domain2.com" />
</Bindings>
</Site>
</Sites>
<Endpoints>
<InputEndpoint name="Endpoint1" protocol="http" port="80" />
<InputEndpoint name="Endpoint2" protocol="https" port="443" certificate="SSLName" />
</Endpoints>
然而,这需要你已经定义了你的网站,我希望能够在任何时候动态添加主机名并保留它们(所以当它自动扩展时它会选择它们)。这个想法是当用户注册该应用程序时,工作者角色选择它并在某处添加主机名(也许是webrole IIS?)。
我不知道这是否是正确的做法,或者我是否遗漏了任何东西。
答案 0 :(得分:0)
Stateless VMs
。
为了使您的方法起作用,您需要使用IIS API为每个客户创建站点,并且因为这些VM是无状态的,当您部署新代码或VM由于任何原因而关闭时,这些站点将被删除而微软必须更换它。
此外,只要您通过添加新的Web角色实例来横向扩展VM,就必须在VM启动并运行后再次创建这些站点。