<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/627300b57c0929657dac723d/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/627300b57c0929657dac723d/bg1.jpg"><div class="c x1 y1 w2 h2"><div class="t m0 x2 h3 y2 ff1 fs0 fc0 sc0 ls0 ws0">Azu<span class="_ _0"></span>re W<span class="_ _0"></span>ebS<span class="_ _0"></span>tate</div><div class="t m0 x2 h4 y3 ff2 fs1 fc0 sc0 ls0 ws0">该项目位<span class="_ _0"></span>于<span class="ff3 fc1">http://a<span class="_ _0"></span>zurewebs<span class="_ _0"></span>tate.azure<span class="_ _0"></span>websites<span class="_ _0"></span>.net/<span class="_ _0"></span><span class="fc0"> [ <span class="_ _1"></span><span class="fc1">^<span class="_ _0"></span><span class="fc0"> ]<span class="ff2">。</span></span></span></span></span></div><div class="t m0 x2 h5 y4 ff2 fs2 fc0 sc0 ls0 ws0">内容<span class="_ _2"></span>内容</div><div class="t m0 x1 h4 y5 ff2 fs1 fc1 sc0 ls0 ws0">介绍</div><div class="t m0 x1 h4 y6 ff2 fs1 fc1 sc0 ls0 ws0">我的<span class="ff3">Azu<span class="_ _0"></span>re</span>帐户</div><div class="t m0 x1 h4 y7 ff2 fs1 fc1 sc0 ls0 ws0">主要思想</div><div class="t m0 x1 h4 y8 ff2 fs1 fc1 sc0 ls0 ws0">挑战</div><div class="t m0 x1 h4 y9 ff2 fs1 fc1 sc0 ls0 ws0">第一个挑<span class="_ _0"></span>战:入<span class="_ _0"></span>门</div><div class="t m0 x1 h4 ya ff2 fs1 fc1 sc0 ls0 ws0">第二个挑<span class="_ _0"></span>战:建<span class="_ _0"></span>立一个网<span class="_ _0"></span>站</div><div class="t m0 x1 h4 yb ff2 fs1 fc1 sc0 ls0 ws0">第三个挑<span class="_ _0"></span>战:在<span class="_ _0"></span><span class="ff3">Azure</span>上使<span class="_ _0"></span>用<span class="ff3">SQL</span></div><div class="t m0 x1 h4 yc ff2 fs1 fc1 sc0 ls0 ws0">第四项挑<span class="_ _0"></span>战:虚<span class="_ _0"></span>拟机</div><div class="t m0 x1 h4 yd ff2 fs1 fc1 sc0 ls0 ws0">第五大挑<span class="_ _0"></span>战:移<span class="_ _0"></span>动访问</div><div class="t m0 x1 h4 ye ff2 fs1 fc1 sc0 ls0 ws0">兴趣点</div><div class="t m0 x1 h4 yf ff2 fs1 fc1 sc0 ls0 ws0">历史</div><div class="t m0 x2 h5 y10 ff2 fs2 fc0 sc0 ls0 ws0">介绍<span class="_ _2"></span>介绍</div><div class="t m0 x2 h4 y11 ff3 fs1 fc0 sc0 ls0 ws0">Windows<span class="_ _0"></span> Azure<span class="ff2">是<span class="_ _0"></span>一个云计<span class="_ _0"></span>算平台<span class="_ _0"></span>和基础结<span class="_ _0"></span>构。</span> <span class="ff2">它提供了平<span class="_ _0"></span>台</span></div><div class="t m1 x3 h6 y11 ff2 fs3 fc0 sc0 ls0 ws0">即</div><div class="t m0 x4 h4 y11 ff2 fs1 fc0 sc0 ls0 ws0">服务(<span class="ff3"> <span class="ff4">PaaS</span> </span>)和基<span class="_ _0"></span>础架构</div><div class="t m1 x5 h6 y11 ff2 fs3 fc0 sc0 ls0 ws0">即</div><div class="t m0 x6 h4 y11 ff2 fs1 fc0 sc0 ls0 ws0">服务(<span class="ff3"> <span class="ff4">IaaS</span> </span>)<span class="_ _0"></span>模型,并<span class="_ _0"></span>支持许</div><div class="t m0 x2 h4 y12 ff2 fs1 fc0 sc0 ls0 ws0">多不同的<span class="_ _0"></span>编程语<span class="_ _0"></span>言(<span class="ff3">C</span>#<span class="_ _0"></span>,<span class="ff3">C ++</span>,<span class="_ _0"></span><span class="ff3">Java</span>,<span class="ff3">J<span class="_ _0"></span>avaScrip<span class="_ _0"></span>t</span>,<span class="ff3">Pytho<span class="_ _0"></span>n</span>等),工<span class="_ _0"></span>具(<span class="ff3">Vi<span class="_ _0"></span>sual Studi<span class="_ _0"></span>o</span>,命令行<span class="_ _0"></span>,<span class="ff3">Git</span>,<span class="_ _0"></span><span class="ff3">Eclipse</span>等<span class="_ _0"></span>)和框<span class="_ _0"></span>架</div><div class="t m0 x2 h4 y13 ff2 fs1 fc0 sc0 ls0 ws0">(<span class="ff3">.NET</span>,<span class="_ _0"></span><span class="ff3">Zend</span>,<span class="_ _0"></span><span class="ff3">Node.js</span>等<span class="_ _0"></span>),以及<span class="_ _0"></span>不同的<span class="_ _0"></span>操作系统<span class="_ _0"></span>(<span class="ff3">Windo<span class="_ _0"></span>ws Serve<span class="_ _0"></span>r</span>,<span class="ff3">SUS<span class="_ _0"></span>E</span>,<span class="ff3">Ubun<span class="_ _0"></span>tu</span>,<span class="ff3">Open<span class="_ _0"></span>Logic</span>等)<span class="_ _0"></span>用于虚拟<span class="_ _0"></span>机。<span class="_ _0"></span><span class="ff3"> <span class="_ _3"></span><span class="ff2">选</span></span></div><div class="t m0 x2 h4 y14 ff2 fs1 fc0 sc0 ls0 ws0">择<span class="ff3">Windo<span class="_ _0"></span>ws Azure<span class="_ _0"></span></span>而不是传<span class="_ _0"></span>统的虚<span class="_ _0"></span>拟主机有<span class="_ _0"></span>多种原因<span class="_ _0"></span>。<span class="ff3"> </span>原因之一当然<span class="_ _0"></span>是数据中<span class="_ _0"></span>心的分<span class="_ _0"></span>布范围。<span class="_ _0"></span><span class="ff3"> CDN</span>节点目前位<span class="_ _0"></span>于<span class="ff3">24</span>个<span class="_ _0"></span>国家<span class="ff3">/</span>地</div><div class="t m0 x2 h4 y15 ff2 fs1 fc0 sc0 ls0 ws0">区。</div><div class="t m0 x2 h4 y16 ff2 fs1 fc0 sc0 ls0 ws0">在对<span class="ff3">“ W<span class="_ _0"></span>indows A<span class="_ _0"></span>zure</span>开发<span class="_ _0"></span>人员挑战<span class="_ _0"></span><span class="ff3">”</span>竞赛的<span class="_ _0"></span>贡献中,<span class="_ _0"></span>我将介绍<span class="_ _0"></span>开发基<span class="_ _0"></span>于<span class="ff3">Windo<span class="_ _0"></span>ws Azure<span class="_ _0"></span></span>平台的缩<span class="_ _0"></span>放和负载<span class="_ _0"></span>平衡功<span class="_ _0"></span>能的完全<span class="_ _0"></span>成熟</div><div class="t m0 x2 h4 y17 ff2 fs1 fc0 sc0 ls0 ws0">的基于云<span class="_ _0"></span>的应用<span class="_ _0"></span>程序所需<span class="_ _0"></span>的所有步<span class="_ _0"></span>骤。<span class="ff3"> </span>我们将看到<span class="_ _0"></span>使用<span class="ff3">M<span class="_ _0"></span>icrosoft</span>的<span class="_ _0"></span>云提供商<span class="_ _0"></span>的几个关<span class="_ _0"></span>键功能<span class="_ _0"></span>来设置配<span class="_ _0"></span>置是多<span class="_ _0"></span>么容易(<span class="_ _0"></span>或很</div><div class="t m0 x2 h4 y18 ff2 fs1 fc0 sc0 ls0 ws0">难?希望<span class="_ _0"></span>不是!<span class="_ _0"></span>):</div><div class="t m0 x1 h4 y19 ff2 fs1 fc0 sc0 ls0 ws0">托管网站<span class="_ _0"></span>并使用<span class="_ _0"></span><span class="ff1">git<span class="_ _0"></span></span>形式的<span class="_ _0"></span>集成源代<span class="_ _0"></span>码控制<span class="_ _0"></span>进行部署</div><div class="t m0 x1 h4 y1a ff2 fs1 fc0 sc0 ls0 ws0">使用(<span class="ff3">S<span class="_ _0"></span>QL</span>)数据<span class="_ _0"></span>库存储<span class="_ _0"></span>关系数据</div><div class="t m0 x1 h4 y1b ff2 fs1 fc0 sc0 ls0 ws0">安装满足<span class="_ _0"></span>不同需<span class="_ _0"></span>求的第三<span class="_ _0"></span>方软件,<span class="_ _0"></span>例如用<span class="_ _0"></span>于文档存<span class="_ _0"></span>储的<span class="ff3">Mo<span class="_ _0"></span>ngoDB</span></div><div class="t m0 x1 h4 y1c ff2 fs1 fc0 sc0 ls0 ws0">将虚拟机<span class="_ _0"></span>设置为<span class="_ _0"></span>工作器,<span class="_ _0"></span>并具有扩<span class="_ _0"></span>展功能<span class="_ _0"></span>以根据要<span class="_ _0"></span>求增加工<span class="_ _0"></span>作器数<span class="_ _0"></span>量</div><div class="t m0 x2 h4 y1d ff2 fs1 fc0 sc0 ls0 ws0">在深入了<span class="_ _0"></span>解我的<span class="_ _0"></span>想法(和<span class="_ _0"></span>实现)的<span class="_ _0"></span>确切细<span class="_ _0"></span>节之前,<span class="_ _0"></span>我们应该<span class="_ _0"></span>看一下<span class="_ _0"></span>我的<span class="ff3">Azu<span class="_ _0"></span>re</span>帐户。</div><div class="t m0 x2 h5 y1e ff2 fs2 fc0 sc0 ls0 ws0">我的<span class="_ _2"></span>我的<span class="_ _4"></span><span class="ff1">Azure<span class="_ _0"></span></span>帐户<span class="_ _2"></span>帐户</div><div class="t m0 x2 h4 y1f ff2 fs1 fc0 sc0 ls0 ws0">比赛规则<span class="_ _0"></span>如下:<span class="_ _0"></span><span class="ff3"><quote></span>如<span class="_ _0"></span>果您不<span class="_ _0"></span>注册,将<span class="_ _0"></span>没有资格<span class="_ _0"></span>参加比<span class="_ _0"></span>赛。<span class="_ _0"></span><span class="ff3"> </span>请确保您使用<span class="_ _0"></span>此链接注<span class="_ _0"></span>册了试用<span class="_ _0"></span>版,以<span class="_ _0"></span>便我们告<span class="_ _0"></span>诉谁注册<span class="_ _0"></span>了。</div><div class="t m0 x2 h4 y20 ff2 fs1 fc0 sc0 ls0 ws0">话虽这么<span class="_ _0"></span>说,很<span class="_ _0"></span>明显一个<span class="_ _0"></span>人必须注<span class="_ _0"></span>册。<span class="ff3"> </span>按照给定的<span class="_ _0"></span>链接,<span class="_ _0"></span>我们最终<span class="_ _0"></span>进入页<span class="_ _0"></span>面<span class="ff3 fc1">window<span class="_ _0"></span>azure.co<span class="_ _0"></span>m/en-us/p<span class="_ _0"></span>ricing/free<span class="_ _0"></span>-trial<span class="fc0"> </span></span>(<span class="_ _0"></span>和一</div><div class="t m0 x2 h4 y21 ff2 fs1 fc0 sc0 ls0 ws0">些附属网<span class="_ _0"></span>络参数<span class="_ _0"></span>)。<span class="ff3"> </span>试用帐户可<span class="_ _0"></span>为我们提<span class="_ _0"></span>供<span class="ff3">3</span>个月<span class="_ _0"></span>的以下功<span class="_ _0"></span>能(免<span class="_ _0"></span>费):</div><div class="t m0 x1 h4 y22 ff2 fs1 fc0 sc0 ls0 ws0">虚拟机和<span class="_ _0"></span>云服务<span class="_ _0"></span><span class="ff3">/</span>每月<span class="ff3">750<span class="_ _0"></span></span>个计算小<span class="_ _0"></span>时</div><div class="t m0 x1 h4 y23 ff3 fs1 fc0 sc0 ls0 ws0">SQL Serv<span class="_ _0"></span>er / 750<span class="ff2">个<span class="_ _0"></span>小时的网<span class="_ _0"></span>络,标<span class="_ _0"></span>准或企业<span class="_ _0"></span>级</span></div><div class="t m0 x1 h4 y24 ff2 fs1 fc0 sc0 ls0 ws0">网站<span class="ff3">/ 10</span>个<span class="_ _0"></span>网站</div><div class="t m0 x1 h4 y25 ff2 fs1 fc0 sc0 ls0 ws0">移动服务<span class="_ _0"></span><span class="ff3">/ 10</span>个移<span class="_ _0"></span>动服务</div><div class="t m0 x1 h4 y26 ff2 fs1 fc0 sc0 ls0 ws0">关系数据<span class="_ _0"></span>库<span class="ff3">/ 1</span>个<span class="ff3">S<span class="_ _0"></span>QL</span>数据<span class="_ _0"></span>库</div><div class="t m0 x1 h4 y27 ff3 fs1 fc0 sc0 ls0 ws0">SQL<span class="ff2">报告<span class="_ _0"></span></span>/<span class="ff2">每月</span>100<span class="_ _0"></span><span class="ff2">个小时</span></div><div class="t m0 x1 h4 y28 ff2 fs1 fc0 sc0 ls0 ws0">存储空间<span class="_ _0"></span><span class="ff3">/ 70 GB</span>,<span class="_ _0"></span>具有<span class="ff3">50<span class="_ _0"></span>00</span>万个存<span class="_ _0"></span>储事务</div><div class="t m0 x1 h4 y29 ff2 fs1 fc0 sc0 ls0 ws0">备份<span class="ff3">/ 20 <span class="_ _0"></span>GB</span></div><div class="t m0 x1 h4 y2a ff2 fs1 fc0 sc0 ls0 ws0">数据传输<span class="_ _0"></span><span class="ff3">/</span>无限制<span class="_ _0"></span>的入站和<span class="_ _0"></span><span class="ff3">25 GB</span>的<span class="_ _0"></span>出站</div><div class="t m0 x1 h4 y2b ff2 fs1 fc0 sc0 ls0 ws0">媒体服务<span class="_ _0"></span>编码<span class="ff3">/ 50<span class="_ _0"></span> GB</span>(合<span class="_ _0"></span>并输入和<span class="_ _0"></span>输出)</div><div class="t m0 x1 h4 y2c ff3 fs1 fc0 sc0 ls0 ws0">CDN / 20<span class="_ _0"></span> GB<span class="ff2">出站<span class="_ _0"></span>流量,可<span class="_ _0"></span>进行</span>500<span class="_ _0"></span>,000<span class="ff2">笔交<span class="_ _0"></span>易</span></div><div class="t m0 x1 h4 y2d ff2 fs1 fc0 sc0 ls0 ws0">快取<span class="ff3">/ 128<span class="_ _0"></span> MB</span></div><div class="t m0 x1 h4 y2e ff2 fs1 fc0 sc0 ls0 ws0">服务总线<span class="_ _0"></span><span class="ff3">/ 1,500</span>中<span class="_ _0"></span>继小时和<span class="_ _0"></span><span class="ff3">500,000<span class="_ _0"></span></span>消息</div></div><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a><a class="l" rel='nofollow' onclick='return false;'><div class="d m2"></div></a></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/627300b57c0929657dac723d/bg2.jpg"><div class="c x1 y1 w2 h2"><div class="t m0 x2 h4 y2f ff2 fs1 fc0 sc0 ls0 ws0">那真是太<span class="_ _0"></span>酷了!<span class="_ _0"></span><span class="ff3"> <span class="_ _3"></span><span class="ff2">这里每月<span class="_ _0"></span>有<span class="ff3">750</span>个<span class="_ _0"></span>计算小时<span class="_ _0"></span>,略高<span class="_ _0"></span>于<span class="ff3">31</span>天的<span class="_ _0"></span>原始计算<span class="_ _0"></span>能力。<span class="_ _4"></span><span class="ff3"> <span class="_ _3"></span><span class="ff2">这足以使一<span class="_ _0"></span>个虚拟<span class="_ _0"></span>机一直运<span class="_ _0"></span>行(实<span class="_ _0"></span>际上正在<span class="_ _0"></span>做一</span></span></span></span></div><div class="t m0 x2 h4 y30 ff2 fs1 fc0 sc0 ls0 ws0">些事情<span class="ff3">-</span>而<span class="_ _0"></span>不是处<span class="_ _0"></span>于空闲状<span class="_ _0"></span>态或关<span class="_ _0"></span>闭电源)<span class="_ _0"></span>。<span class="ff3"> <span class="_ _3"></span><span class="ff2">此外,我们<span class="_ _0"></span>免费提供<span class="_ _0"></span><span class="ff3">10</span>个网<span class="_ _0"></span>站,并且<span class="_ _0"></span>一个<span class="ff3">SQ<span class="_ _0"></span>L Server</span>整<span class="_ _0"></span>个月都<span class="_ _0"></span>在运行。<span class="ff3"> </span>存储和</span></span></div><div class="t m0 x2 h4 y31 ff3 fs1 fc0 sc0 ls0 ws0">CDN<span class="ff2">流量<span class="_ _0"></span>数据也<span class="_ _0"></span>足以在云<span class="_ _0"></span>中拥有一<span class="_ _0"></span>台功能<span class="_ _0"></span>强大的计<span class="_ _0"></span>算机。</span></div><div class="t m0 x2 h4 y32 ff2 fs1 fc0 sc0 ls0 ws0">使用我的<span class="_ _0"></span><span class="ff3">Microso<span class="_ _0"></span>ft</span>帐户(以<span class="_ _0"></span>前称为<span class="_ _0"></span><span class="ff3">Microsoft<span class="_ _0"></span></span>护照,<span class="ff3">Li<span class="_ _0"></span>ve ID</span>或<span class="ff3">W<span class="_ _0"></span>indows L<span class="_ _0"></span>ive</span>帐户)<span class="_ _0"></span>登录后<span class="_ _0"></span>,已经为<span class="_ _0"></span>我提供了<span class="_ _0"></span>升级。<span class="_ _3"></span><span class="ff3"> <span class="_ _3"></span><span class="ff2">成为<span class="ff3">Visual</span></span></span></div><div class="t m0 x2 h4 y33 ff3 fs1 fc0 sc0 ls0 ws0">C<span class="ff2">#的</span>M<span class="_ _0"></span>icrosoft M<span class="_ _0"></span>VP<span class="ff2">具有获<span class="_ _0"></span>得</span>Micro<span class="_ _0"></span>soft MSD<span class="_ _0"></span>N<span class="ff2">和</span>Tech<span class="_ _0"></span>NET<span class="ff2">订阅<span class="_ _0"></span>的积极方<span class="_ _0"></span>面。</span> <span class="_ _3"></span><span class="ff2">这也给了<span class="_ _0"></span>我<span class="ff1">Wind<span class="_ _0"></span>ows Azu<span class="_ _0"></span>re</span>上<span class="_ _5"></span>上的<span class="ff1">Windows</span></span></div><div class="t m0 x2 h4 y34 ff1 fs1 fc0 sc0 ls0 ws0">Azure M<span class="_ _0"></span>SDN-Vis<span class="_ _0"></span>ual Studio<span class="_ _0"></span> Ultimate<span class="_ _0"></span><span class="ff2">订阅。<span class="ff3"> </span>该软件包<span class="_ _0"></span>具有以下<span class="_ _0"></span>属性:</span></div><div class="t m0 x1 h4 y35 ff2 fs1 fc0 sc0 ls0 ws0">虚拟机和<span class="_ _0"></span>云服务<span class="_ _0"></span><span class="ff3">/</span>每月<span class="ff1">1500<span class="_ _0"></span></span>计算小时</div><div class="t m0 x1 h4 y36 ff3 fs1 fc0 sc0 ls0 ws0">SQL Serv<span class="_ _0"></span>er / <span class="_ _6"></span><span class="ff1">1500<span class="_ _0"></span><span class="ff2">小时<span class="_ _0"></span>的<span class="ff3">Web</span>,<span class="_ _0"></span>标准或企<span class="_ _0"></span>业版</span></span></div><div class="t m0 x1 h4 y37 ff2 fs1 fc0 sc0 ls0 ws0">网站<span class="ff3">/ 10</span>个<span class="_ _0"></span>网站</div><div class="t m0 x1 h4 y38 ff2 fs1 fc0 sc0 ls0 ws0">移动服务<span class="_ _0"></span><span class="ff3">/ 10</span>个移<span class="_ _0"></span>动服务</div><div class="t m0 x1 h4 y39 ff2 fs1 fc0 sc0 ls0 ws0">关系数据<span class="_ _0"></span>库<span class="ff3">/ <span class="_ _3"></span><span class="ff1">5<span class="ff3"> SQL<span class="ff2">数据<span class="_ _0"></span>库</span></span></span></span></div><div class="t m0 x1 h4 y3a ff3 fs1 fc0 sc0 ls0 ws0">SQL<span class="ff2">报告<span class="_ _0"></span></span>/<span class="ff2">每月</span>100<span class="_ _0"></span><span class="ff2">个小时</span></div><div class="t m0 x1 h4 y3b ff2 fs1 fc0 sc0 ls0 ws0">储存空间<span class="_ _0"></span><span class="ff3">/ <span class="_ _3"></span><span class="ff1">90<span class="ff3"> GB<span class="ff2">,可<span class="_ _0"></span>进行</span>1<span class="ff2">亿<span class="_ _5"></span>亿笔<span class="_ _0"></span>储存交<span class="_ _0"></span>易</span></span></span></span></div><div class="t m0 x1 h4 y3c ff2 fs1 fc0 sc0 ls0 ws0">备份<span class="ff3">/ <span class="_ _3"></span><span class="ff1">40<span class="ff3"> GB</span></span></span></div><div class="t m0 x1 h4 y3d ff2 fs1 fc0 sc0 ls0 ws0">数据传输<span class="_ _0"></span><span class="ff3">/</span>无限制<span class="_ _0"></span>的入站和<span class="ff1">40<span class="ff3"> <span class="_ _0"></span>GB</span></span>的出站</div><div class="t m0 x1 h4 y3e ff2 fs1 fc0 sc0 ls0 ws0">媒体服务<span class="_ _0"></span>编码<span class="ff3">/ <span class="_ _3"></span><span class="ff1">100<span class="ff3"> <span class="_ _0"></span>GB<span class="ff2">(输入<span class="_ _0"></span>和输出<span class="_ _0"></span>合并)</span></span></span></span></div><div class="t m0 x1 h4 y3f ff3 fs1 fc0 sc0 ls0 ws0">CDN / <span class="_ _3"></span><span class="ff1">35<span class="ff3"> GB<span class="ff2">出<span class="_ _0"></span>站流量,<span class="_ _0"></span>具有</span></span>2,000,000<span class="ff2">笔交易</span></span></div><div class="t m0 x1 h4 y40 ff2 fs1 fc0 sc0 ls0 ws0">快取<span class="ff3">/ 128<span class="_ _0"></span> MB</span></div><div class="t m0 x1 h4 y41 ff2 fs1 fc0 sc0 ls0 ws0">服务总线<span class="_ _0"></span><span class="ff3">/ <span class="_ _3"></span><span class="ff1">3,000<span class="ff2">中继小时和<span class="_ _0"></span></span>1,000,00<span class="_ _0"></span>0<span class="ff2">消息</span></span></span></div><div class="t m0 x2 h4 y42 ff2 fs1 fc0 sc0 ls0 ws0">所做的更<span class="_ _0"></span>改均以<span class="_ _0"></span>粗体标记<span class="_ _0"></span>。<span class="ff3"> </span>因此,我获得<span class="_ _0"></span>的免费计<span class="_ _0"></span>算能力<span class="_ _0"></span>大约是免<span class="_ _0"></span>费试用<span class="_ _0"></span>版的两倍<span class="_ _0"></span>,这还不<span class="_ _0"></span>错。<span class="ff3"> </span>让我们继续<span class="_ _0"></span>讨论我<span class="_ _0"></span>的想法及</div><div class="t m0 x2 h4 y43 ff2 fs1 fc0 sc0 ls0 ws0">其即将实<span class="_ _0"></span>现的可<span class="_ _0"></span>能功能。</div><div class="t m0 x2 h5 y44 ff2 fs2 fc0 sc0 ls0 ws0">主要思<span class="_ _0"></span>想<span class="_ _7"></span>主要思<span class="_ _0"></span>想</div><div class="t m0 x2 h4 y45 ff2 fs1 fc0 sc0 ls0 ws0">我的项目<span class="_ _0"></span>的名称<span class="_ _0"></span>为<span class="ff4">Azure W<span class="_ _0"></span>ebState<span class="ff3"> </span></span>,代表<span class="_ _0"></span>基于<span class="ff3">Azur<span class="_ _0"></span>e</span>的<span class="ff3">Web</span>统<span class="_ _0"></span>计创建<span class="_ _0"></span>器<span class="ff3">/</span>数据</div><div class="t m1 x7 h6 y45 ff2 fs3 fc0 sc0 ls0 ws0">搜寻</div><div class="t m0 x8 h4 y45 ff2 fs1 fc0 sc0 ls0 ws0">器。<span class="ff3"> </span>这意味着什<span class="_ _0"></span>么?<span class="ff3"> </span>在过去的一<span class="_ _0"></span>个月中,<span class="_ _0"></span>我</div><div class="t m0 x2 h4 y46 ff2 fs1 fc0 sc0 ls0 ws0">构建了一<span class="_ _0"></span>个功能<span class="_ _0"></span>齐全<span class="ff3">HTM<span class="_ _0"></span>L5</span>和<span class="ff3">CS<span class="_ _0"></span>S3</span>解析器<span class="_ _0"></span>。<span class="ff3"> <span class="_ _3"></span><span class="ff2">该项目即<span class="_ _0"></span>将发布(<span class="_ _0"></span>作为开<span class="_ _0"></span>源),同<span class="_ _0"></span>时还将<span class="_ _0"></span>发布<span class="ff3">Cod<span class="_ _0"></span>eProject</span>文<span class="_ _0"></span>章。<span class="ff3"> </span>我试图实现<span class="_ _0"></span>完</span></span></div><div class="t m0 x2 h4 y47 ff2 fs1 fc0 sc0 ls0 ws0">整的<span class="ff3">DO<span class="_ _0"></span>M</span>(<span class="ff3">DOM<span class="_ _0"></span> Level-3</span>,<span class="_ _0"></span>部分是<span class="_ _0"></span><span class="ff3">DOM Lev<span class="_ _0"></span>el-4</span>),这<span class="_ _0"></span>意味着<span class="_ _0"></span>一旦解析<span class="_ _0"></span>了<span class="ff3">HTM<span class="_ _0"></span>L</span>文档,便<span class="_ _0"></span>可以使</div><div class="t m0 x2 h4 y48 ff2 fs1 fc0 sc0 ls0 ws0">用<span class="ff3 fs4">QueryS<span class="_ _0"></span>elector()<span class="_ _0"></span></span>或<span class="ff3 fs4">Qu<span class="_ _0"></span>erySelectorA<span class="_ _0"></span>ll()</span>查询元素<span class="_ _0"></span>。<span class="ff3"> </span>当然,也可<span class="_ _0"></span>以实现诸<span class="_ _0"></span>如<span class="ff3 fs4">GetElem<span class="_ _0"></span>entById()</span>类的方<span class="_ _0"></span>法。</div><div class="t m0 x2 h4 y49 ff2 fs1 fc0 sc0 ls0 ws0">这个库对<span class="_ _0"></span>这个项<span class="_ _0"></span>目有什么<span class="_ _0"></span>用?<span class="ff3"> </span>在详细介绍<span class="_ _0"></span>之前,让<span class="_ _0"></span>我们先<span class="_ _0"></span>了解一下<span class="_ _0"></span>总体情<span class="_ _0"></span>况:</div><div class="t m0 x2 h4 y4a ff2 fs1 fc0 sc0 ls0 ws0">我尝试构<span class="_ _0"></span>建的是<span class="_ _0"></span>一个主要<span class="_ _0"></span>与<span class="ff3">Web A<span class="_ _0"></span>PI</span>一起使<span class="_ _0"></span>用的<span class="ff3">MV<span class="_ _0"></span>C 4</span>网页<span class="_ _0"></span>。<span class="ff3"> </span>当然,有一个<span class="_ _0"></span>可见的前<span class="_ _0"></span>端,它<span class="_ _0"></span>使用了部<span class="_ _0"></span>分公共<span class="_ _0"></span>可用<span class="ff3">API</span>和<span class="_ _0"></span>一些唯</div><div class="t m0 x2 h4 y4b ff2 fs1 fc0 sc0 ls0 ws0">一的内部<span class="_ _0"></span>可用<span class="ff3">AP<span class="_ _0"></span>I</span>。<span class="ff3"> </span>该<span class="ff3">API</span>可用<span class="_ _0"></span>于多种<span class="_ _0"></span>用途:</div><div class="t m0 x1 h4 y4c ff2 fs1 fc0 sc0 ls0 ws0">获取特定<span class="_ _0"></span>网页的<span class="_ _0"></span>信息(统<span class="_ _0"></span>计信息)</div><div class="t m0 x1 h4 y4d ff2 fs1 fc0 sc0 ls0 ws0">获取公共<span class="_ _0"></span>可用统<span class="_ _0"></span>计视图的<span class="_ _0"></span>信息</div><div class="t m0 x1 h4 y4e ff2 fs1 fc0 sc0 ls0 ws0">在受限的<span class="_ _0"></span>统计视<span class="_ _0"></span>图上获取<span class="_ _0"></span>信息</div><div class="t m0 x1 h4 y4f ff2 fs1 fc0 sc0 ls0 ws0">在抓取列<span class="_ _0"></span>表中搜<span class="_ _0"></span>索</div><div class="t m0 x2 h4 y50 ff2 fs1 fc0 sc0 ls0 ws0">抓取列表<span class="_ _0"></span>是统计<span class="_ _0"></span>信息所基<span class="_ _0"></span>于的<span class="ff3">UR<span class="_ _0"></span>L</span>列表。<span class="_ _0"></span><span class="ff3"> <span class="_ _3"></span><span class="ff2">该页面将<span class="_ _0"></span>包含约<span class="_ _0"></span><span class="ff3">100-500</span>个<span class="_ _0"></span>最流行的<span class="_ _0"></span>网页(<span class="_ _0"></span>包括</span></span></div><div class="t m0 x2 h4 y51 ff3 fs1 fc0 sc0 ls0 ws0">Amazon<span class="ff2">,<span class="_ _0"></span></span>Bing<span class="ff2">,<span class="_ _0"></span></span>CodeProj<span class="_ _0"></span>ect<span class="ff2">,</span>Fac<span class="_ _0"></span>ebook<span class="ff2">,</span>G<span class="_ _0"></span>oogle<span class="ff2">,</span>N<span class="_ _0"></span>etflix<span class="ff2">,</span>S<span class="_ _0"></span>tackOver<span class="_ _0"></span>flow<span class="ff2">,</span>Tw<span class="_ _0"></span>itter<span class="ff2">,</span>Wi<span class="_ _0"></span>kipedia<span class="ff2">,<span class="_ _0"></span></span>YouTube<span class="_ _0"></span><span class="ff2">等)的预<span class="_ _0"></span>定义</span></div><div class="t m0 x2 h4 y52 ff2 fs1 fc0 sc0 ls0 ws0">列表。但<span class="_ _0"></span>是,用<span class="_ _0"></span>户可以在<span class="_ _0"></span>页面上注<span class="_ _0"></span>册(例<span class="_ _0"></span>如,获取<span class="_ _0"></span><span class="ff3">API</span>密钥<span class="_ _0"></span>)并设置<span class="_ _0"></span>自己的<span class="_ _0"></span>抓取列表<span class="_ _0"></span>(可以基<span class="_ _0"></span>于预定<span class="_ _0"></span>义列表,<span class="_ _0"></span>但不必如<span class="_ _0"></span>此)。</div><div class="t m0 x2 h4 y53 ff2 fs1 fc0 sc0 ls0 ws0">数据库体<span class="_ _0"></span>系结构<span class="_ _0"></span>中也反映<span class="_ _0"></span>了对页面<span class="_ _0"></span>进行爬<span class="_ _0"></span>网,解析<span class="_ _0"></span>它们以及<span class="_ _0"></span>根据其<span class="_ _0"></span>数据创建<span class="_ _0"></span>统计信<span class="_ _0"></span>息的需求<span class="_ _0"></span>。<span class="ff3"> </span>该项目实际上<span class="_ _0"></span>将使用<span class="ff3">S<span class="_ _0"></span>QL</span>和</div></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/627300b57c0929657dac723d/bg3.jpg"><div class="c x1 y1 w2 h2"><div class="t m0 x2 h4 y54 ff3 fs1 fc0 sc0 ls0 ws0">NoSQL<span class="ff2">数<span class="_ _0"></span>据库,<span class="_ _0"></span>而不仅仅<span class="_ _0"></span>是使用关<span class="_ _0"></span>系数据<span class="_ _0"></span>库(基于<span class="_ _0"></span></span>SQL<span class="ff2">)。</span> <span class="ff2">这是两者之间的<span class="_ _0"></span>关系:</span></div><div class="t m0 x2 h4 y55 ff2 fs1 fc0 sc0 ls0 ws0">关系数据<span class="_ _0"></span>库将存<span class="_ _0"></span>储所有关<span class="_ _0"></span>系数据(<span class="_ _0"></span>例如用<span class="_ _0"></span>户及其爬<span class="_ _0"></span>网列表(<span class="_ _0"></span>一对多<span class="_ _0"></span>),爬网<span class="_ _0"></span>列表及<span class="_ _0"></span>其对应的<span class="_ _0"></span>视图(一<span class="_ _0"></span>对多)<span class="_ _0"></span>,爬网列<span class="_ _0"></span>表及其条</div><div class="t m0 x2 h4 y56 ff2 fs1 fc0 sc0 ls0 ws0">目(一对<span class="_ _0"></span>多),<span class="_ _0"></span>用户及其<span class="_ _0"></span>设置(一<span class="_ _0"></span>对一)<span class="_ _0"></span>等),<span class="ff3">N<span class="_ _0"></span>oSQL</span>数据<span class="_ _0"></span>库将提<span class="_ _0"></span>供一种文<span class="_ _0"></span>档存储。</div><div class="t m0 x2 h4 y57 ff2 fs1 fc0 sc0 ls0 ws0">我们出于<span class="_ _0"></span>各种原<span class="_ _0"></span>因选择<span class="ff3">M<span class="_ _0"></span>ongoDB</span>。<span class="_ _0"></span><span class="ff3"> <span class="_ _3"></span><span class="ff2">一个很好<span class="_ _0"></span>的理由是<span class="_ _0"></span><span class="ff3">Window<span class="_ _0"></span>s Azure</span>上<span class="_ _0"></span>具有<span class="ff3">Mo<span class="_ _0"></span>ngoDB</span>。<span class="ff3"> </span>另一个原因<span class="_ _0"></span>是<span class="ff3">Mong<span class="_ _0"></span>oDB</span>基于<span class="_ _0"></span><span class="ff3">JSON /</span></span></span></div><div class="t m0 x2 h4 y58 ff3 fs1 fc0 sc0 ls0 ws0">BSON<span class="ff2">,<span class="_ _0"></span>并带有内<span class="_ _0"></span>置</span>Java<span class="_ _0"></span>Script AP<span class="_ _0"></span>I<span class="ff2">。</span> <span class="_ _3"></span><span class="ff2">这意味着<span class="_ _0"></span>我们能够<span class="_ _0"></span>将一些查<span class="_ _0"></span>询直接<span class="_ _0"></span>从<span class="ff3">Mongo<span class="_ _0"></span>DB</span>作为原<span class="_ _0"></span>始<span class="ff3">JSO<span class="_ _0"></span>N</span>数据直<span class="_ _0"></span>接返回到<span class="_ _0"></span>客户端。</span></div><div class="t m0 x2 h4 y59 ff2 fs1 fc0 sc0 ls0 ws0">选择<span class="ff3">NoS<span class="_ _0"></span>QL</span>数据<span class="_ _0"></span>库的原因<span class="_ _0"></span>已得到非<span class="_ _0"></span>常快速<span class="_ _0"></span>的解释:<span class="_ _0"></span>每个爬网<span class="_ _0"></span>条目都<span class="_ _0"></span>会有一个<span class="_ _0"></span>(文本)<span class="_ _0"></span><span class="ff3">blob</span>(如<span class="_ _0"></span>果还保<span class="_ _0"></span>存了文档<span class="_ _0"></span>的历史<span class="_ _0"></span>记录,</div><div class="t m0 x2 h4 y5a ff2 fs1 fc0 sc0 ls0 ws0">则可能还<span class="_ _0"></span>有更多<span class="_ _0"></span>)(代表<span class="_ _0"></span><span class="ff3">HTML</span>页<span class="_ _0"></span>面),以<span class="_ _0"></span>及(大<span class="_ _0"></span>多数也可<span class="_ _0"></span>能是其他<span class="_ _0"></span>(文本<span class="_ _0"></span>)<span class="ff3">Blob</span>(<span class="_ _0"></span>附加到一<span class="_ _0"></span>个文档<span class="_ _0"></span>的许多<span class="ff3">C<span class="_ _0"></span>SS</span>样式表<span class="_ _0"></span>可能为</div><div class="t m0 x2 h4 y5b ff2 fs1 fc0 sc0 ls0 ws0">零)。<span class="ff3"> </span>因此,这<span class="_ _0"></span>已经不是<span class="_ _0"></span>固定的<span class="_ _0"></span>布局。<span class="ff3"> </span>下一个原<span class="_ _0"></span>因是统计<span class="_ _0"></span>信息条<span class="_ _0"></span>目的数量<span class="_ _0"></span>可能会随<span class="_ _0"></span>着时间<span class="_ _0"></span>增长。<span class="ff3"> </span>在开始时<span class="_ _0"></span>,仅收集<span class="_ _0"></span>一个条<span class="_ _0"></span>目</div><div class="t m0 x2 h4 y5c ff2 fs1 fc0 sc0 ls0 ws0">的官方统<span class="_ _0"></span>计信息<span class="_ _0"></span>,但是,<span class="_ _0"></span>一个用户<span class="_ _0"></span>可以选<span class="_ _0"></span>择相同的<span class="_ _0"></span>条目,并<span class="_ _0"></span>要求收<span class="_ _0"></span>集其他统<span class="_ _0"></span>计信息<span class="_ _0"></span>。<span class="ff3"> </span>因此,总而言<span class="_ _0"></span>之,我们<span class="_ _0"></span>必须能够<span class="_ _0"></span>轻松地</div><div class="t m0 x2 h4 y5d ff2 fs1 fc0 sc0 ls0 ws0">在每个条<span class="_ _0"></span>目的基<span class="_ _0"></span>础上扩展<span class="_ _0"></span>数据。<span class="ff3"> </span>在关系数<span class="_ _0"></span>据库中这<span class="_ _0"></span>是不可<span class="_ _0"></span>能的(实<span class="_ _0"></span>际上有<span class="_ _0"></span>很多方法<span class="_ _0"></span>,但是效<span class="_ _0"></span>率不是<span class="_ _0"></span>很高)。</div><div class="t m0 x2 h4 y5e ff2 fs1 fc0 sc0 ls0 ws0">该项目的<span class="_ _0"></span>目的是<span class="_ _0"></span>什么?<span class="ff3"> </span>搜寻网络<span class="_ _0"></span>并创建有<span class="_ _0"></span>关它的统<span class="_ _0"></span>计信息<span class="_ _0"></span>。<span class="ff3"> </span>一个网页上有<span class="_ _0"></span>多少个元<span class="_ _0"></span>素。<span class="ff3"> </span>网页的平均<span class="_ _0"></span>大小是<span class="_ _0"></span>多少。<span class="ff3"> </span>什么是请<span class="_ _0"></span>求</div><div class="t m0 x2 h4 y5f ff2 fs1 fc0 sc0 ls0 ws0">时间,什<span class="_ _0"></span>么是平<span class="_ _0"></span>均解析时<span class="_ _0"></span>间?<span class="ff3"> </span>所有这些数<span class="_ _0"></span>据将被保<span class="_ _0"></span>存并可<span class="_ _0"></span>用。</div><div class="t m0 x2 h4 y60 ff2 fs1 fc0 sc0 ls0 ws0">网页上将<span class="_ _0"></span>有大量<span class="_ _0"></span>的统计信<span class="_ _0"></span>息(每个<span class="_ _0"></span>人都可<span class="_ _0"></span>以使用)<span class="_ _0"></span>,每个人<span class="_ _0"></span>都可以<span class="_ _0"></span>创建一个<span class="_ _0"></span>帐户(<span class="_ _0"></span>通过<span class="ff3">Ope<span class="_ _0"></span>nID</span>)并创<span class="_ _0"></span>建<span class="ff3">/</span>发布<span class="_ _0"></span>自己的具<span class="_ _0"></span>有统计</div><div class="t m0 x2 h4 y61 ff2 fs1 fc0 sc0 ls0 ws0">视图的爬<span class="_ _0"></span>网列表<span class="_ _0"></span>。</div><div class="t m0 x2 h4 y62 ff2 fs1 fc0 sc0 ls0 ws0">涵盖哪些<span class="_ _0"></span>统计数<span class="_ _0"></span>据?<span class="ff3"> </span>这实际上是<span class="_ _0"></span>非常非常<span class="_ _0"></span>开放的。<span class="_ _0"></span><span class="ff3"> </span>可以涵盖基于<span class="_ _0"></span>网页<span class="ff3">HTM<span class="_ _0"></span>L</span>和<span class="ff3">CSS<span class="_ _0"></span></span>内容的任<span class="_ _0"></span>何统计<span class="_ _0"></span>信息。<span class="_ _4"></span><span class="ff3"> <span class="_ _3"></span><span class="ff2">每个用户都<span class="_ _0"></span>可以设</span></span></div><div class="t m0 x2 h4 y63 ff2 fs1 fc0 sc0 ls0 ws0">置要确定<span class="_ _0"></span>的其他<span class="_ _0"></span>统计信息<span class="_ _0"></span>。<span class="ff3"> </span>预定义的统计<span class="_ _0"></span>信息包括<span class="_ _0"></span>:</div><div class="t m0 x1 h4 y64 ff2 fs1 fc0 sc0 ls0 ws0">元素数(<span class="_ _0"></span><span class="ff3">HTML</span>)</div><div class="t m0 x1 h4 y65 ff2 fs1 fc0 sc0 ls0 ws0">规则数(<span class="_ _0"></span><span class="ff3">HTML</span>)</div><div class="t m0 x1 h4 y66 ff2 fs1 fc0 sc0 ls0 ws0">响应时间<span class="_ _0"></span>(<span class="ff3">HTM<span class="_ _0"></span>L</span>)</div><div class="t m0 x1 h4 y67 ff2 fs1 fc0 sc0 ls0 ws0">解析时间<span class="_ _0"></span>(<span class="ff3">HTM<span class="_ _0"></span>L</span>,<span class="ff3">CSS</span>)</div><div class="t m0 x1 h4 y68 ff2 fs1 fc0 sc0 ls0 ws0">元素百分<span class="_ _0"></span>比(<span class="ff3"> <span class="fs4">div</span> <span class="_ _0"></span></span>,<span class="ff3"> <span class="_ _3"></span><span class="fs4">p<span class="_ _3"></span><span class="fs1"> <span class="ff2">,</span>...<span class="ff2">)</span></span></span></span></div><div class="t m0 x1 h4 y69 ff2 fs1 fc0 sc0 ls0 ws0">样式规则<span class="_ _0"></span>的百分<span class="_ _0"></span>比</div><div class="t m0 x1 h4 y6a ff3 fs1 fc0 sc0 ls0 ws0">HTML<span class="ff2">中<span class="_ _0"></span>的最高级<span class="_ _0"></span>别</span></div><div class="t m0 x1 h4 y6b ff2 fs1 fc0 sc0 ls0 ws0">信息(文<span class="_ _0"></span>本)与<span class="_ _0"></span>文档大小<span class="_ _0"></span>(<span class="ff3">HTML<span class="_ _0"></span></span>)的比率<span class="_ _0"></span>。</div><div class="t m0 x1 h4 y6c ff2 fs1 fc0 sc0 ls0 ws0">图片数量<span class="_ _0"></span>(<span class="ff3">HTM<span class="_ _0"></span>L</span>)。</div><div class="t m0 x1 h4 y6d ff2 fs1 fc0 sc0 ls0 ws0">链接数(<span class="_ _0"></span><span class="ff3">HTML</span>)<span class="_ _0"></span>。</div><div class="t m0 x1 h4 y6e ff2 fs1 fc0 sc0 ls0 ws0">不同颜色<span class="_ _0"></span>的数量<span class="_ _0"></span>(<span class="ff3">CSS</span>)<span class="_ _0"></span>。</div><div class="t m1 x1 h6 y6f ff2 fs3 fc0 sc0 ls0 ws0">还有更多</div><div class="t m0 x9 h7 y6f ff4 fs1 fc0 sc0 ls0 ws0">...</div><div class="t m0 x2 h4 y70 ff2 fs1 fc0 sc0 ls0 ws0">所有条目<span class="_ _0"></span>还将包<span class="_ _0"></span>含统计信<span class="_ _0"></span>息,例如<span class="_ _0"></span><span class="ff3">CSS</span>类<span class="_ _0"></span>名称的百<span class="_ _0"></span>分比(可<span class="_ _0"></span>能是某<span class="_ _0"></span>个特定名<span class="_ _0"></span>称的查<span class="_ _0"></span>找频率比<span class="_ _0"></span>其他名称<span class="_ _0"></span>高得多<span class="_ _0"></span>)或最常<span class="_ _0"></span>见的媒</div><div class="t m0 x2 h4 y71 ff2 fs1 fc0 sc0 ls0 ws0">体查询。</div><div class="t m0 x2 h4 y72 ff2 fs1 fc0 sc0 ls0 ws0">从理论上<span class="_ _0"></span>讲(即<span class="_ _0"></span>使在竞赛<span class="_ _0"></span>中不太可<span class="_ _0"></span>能实现<span class="_ _0"></span>),我也<span class="_ _0"></span>可以使用<span class="_ _0"></span>标签目<span class="_ _0"></span>录扩展数<span class="_ _0"></span>据库,<span class="_ _0"></span>从而可以<span class="_ _0"></span>搜索已爬<span class="_ _0"></span>网的内<span class="_ _0"></span>容。</div><div class="t m0 x2 h4 y73 ff2 fs1 fc0 sc0 ls0 ws0">我将如何<span class="_ _0"></span>应对挑<span class="_ _0"></span>战?<span class="ff3"> </span>我将从显示<span class="_ _0"></span>网页的前<span class="_ _0"></span>端开始,<span class="_ _0"></span>其中已<span class="_ _0"></span>经包含了<span class="_ _0"></span>所需的<span class="_ _0"></span>一切。<span class="ff3"> </span>在下一步<span class="_ _0"></span>中,我将<span class="_ _0"></span>创建基于<span class="_ _0"></span><span class="ff3">SQL</span>的<span class="_ _0"></span>关系数据</div><div class="t m0 x2 h4 y74 ff2 fs1 fc0 sc0 ls0 ws0">库,并将<span class="_ _0"></span>网页连<span class="_ _0"></span>接到该数<span class="_ _0"></span>据库。<span class="ff3"> </span>现在是时<span class="_ _0"></span>候设置主<span class="_ _0"></span>要工作<span class="_ _0"></span>程序以及<span class="_ _0"></span><span class="ff3">MongoD<span class="_ _0"></span>B</span>数据库<span class="_ _0"></span>了。<span class="ff3"> </span>主要工作人员<span class="_ _0"></span>将处理<span class="_ _0"></span>联合爬网<span class="_ _0"></span>列表</div><div class="t m0 x2 h4 y75 ff2 fs1 fc0 sc0 ls0 ws0">(所有爬<span class="_ _0"></span>网列表<span class="_ _0"></span>与不同条<span class="_ _0"></span>目的统一<span class="_ _0"></span>),并<span class="_ _0"></span>在其他工<span class="_ _0"></span>作之间分<span class="_ _0"></span>配工作<span class="_ _0"></span>(负载平<span class="_ _0"></span>衡和可<span class="_ _0"></span>伸缩性)<span class="_ _0"></span>。</div><div class="t m0 x2 h4 y76 ff2 fs1 fc0 sc0 ls0 ws0">在最后一<span class="_ _0"></span>步中,<span class="_ _0"></span>我将完善<span class="_ _0"></span><span class="ff3">API</span>并创<span class="_ _0"></span>建一种移<span class="_ _0"></span>动访问<span class="_ _0"></span>体验,该<span class="_ _0"></span>体验允许<span class="_ _0"></span>离线查<span class="_ _0"></span>看统计信<span class="_ _0"></span>息并启用<span class="_ _0"></span>通知等<span class="_ _0"></span>更多功能<span class="_ _0"></span>。</div><div class="t m0 x2 h5 y77 ff2 fs2 fc0 sc0 ls0 ws0">挑战<span class="_ _2"></span>挑战</div><div class="t m0 x2 h4 y78 ff2 fs1 fc0 sc0 ls0 ws0">在本节中<span class="_ _0"></span>,我将<span class="_ _0"></span>讨论如何<span class="_ _0"></span>体验(并<span class="_ _0"></span>希望掌<span class="_ _0"></span>握)各种<span class="_ _0"></span>挑战。<span class="ff3"> </span>我将展示<span class="_ _0"></span>在通往<span class="_ _0"></span>云的过程<span class="_ _0"></span>中发现的<span class="_ _0"></span>代码,<span class="_ _0"></span>屏幕截图<span class="_ _0"></span>和有用的<span class="_ _0"></span>资源。</div><div class="t m0 x2 h8 y79 ff2 fs5 fc0 sc0 ls0 ws0">第一个<span class="_ _0"></span>挑战:<span class="_ _0"></span>入门<span class="_ _8"></span>第一个<span class="_ _0"></span>挑战:<span class="_ _0"></span>入门</div><div class="t m0 x2 h4 y7a ff2 fs1 fc0 sc0 ls0 ws0">这很简单<span class="_ _0"></span>,因为<span class="_ _0"></span>我只需要<span class="_ _0"></span>遵循链接<span class="_ _0"></span>(在挑<span class="_ _0"></span>战页面上<span class="_ _0"></span>方或上方<span class="_ _0"></span>提供)<span class="_ _0"></span>并升级到<span class="_ _0"></span>我的<span class="ff3">MS<span class="_ _0"></span>DN Azur<span class="_ _0"></span>e</span>订阅即<span class="_ _0"></span>可。<span class="ff3"> <span class="_ _3"></span><span class="ff2">一切进行<span class="_ _0"></span>得很顺</span></span></div><div class="t m0 x2 h4 y7b ff2 fs1 fc0 sc0 ls0 ws0">利,我的<span class="_ _0"></span>帐户在<span class="_ _0"></span><span class="ff3">2</span>分钟内就<span class="_ _0"></span>已启用<span class="_ _0"></span>。</div></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/627300b57c0929657dac723d/bg4.jpg"><div class="c x1 y1 w2 h2"><div class="t m0 x2 h4 y7c ff1 fs1 fc0 sc0 ls0 ws0">Azure<span class="ff2">可<span class="_ _0"></span>能如何受<span class="_ _0"></span>益或改<span class="_ _0"></span>变我今天<span class="_ _0"></span>的工作方<span class="_ _0"></span>式<span class="_ _9"></span>可能如何<span class="_ _0"></span>受益或<span class="_ _0"></span>改变我今<span class="_ _0"></span>天的工作<span class="_ _0"></span>方式</span></div><div class="t m0 x2 h4 y7d ff3 fs1 fc0 sc0 ls0 ws0">Windows<span class="_ _0"></span> Azure<span class="ff2">使<span class="_ _0"></span>我不受固<span class="_ _0"></span>定硬件<span class="_ _0"></span>或软件设<span class="_ _0"></span>置之类的<span class="_ _0"></span>约束的<span class="_ _0"></span>影响(如<span class="_ _0"></span>果我需要<span class="_ _0"></span>更多的<span class="_ _0"></span>计算能力<span class="_ _0"></span></span>-<span class="ff2">我可以<span class="_ _0"></span>;如果需<span class="_ _0"></span>要运行</span>L<span class="_ _0"></span>inux<span class="ff2">以</span></div><div class="t m0 x2 h4 y7e ff2 fs1 fc0 sc0 ls0 ws0">使用此救<span class="_ _0"></span>生工具<span class="_ _0"></span><span class="ff3">-</span>我可以为<span class="_ _0"></span><span class="ff3">Linux VM<span class="_ _0"></span></span>供电)<span class="_ _0"></span>。<span class="ff3"> Azure</span>为可伸缩<span class="_ _0"></span>的数据<span class="_ _0"></span>驱动的应<span class="_ _0"></span>用程序<span class="_ _0"></span>(如<span class="ff3">Web<span class="_ _0"></span>State</span>)提<span class="_ _0"></span>供了内存<span class="_ _0"></span>和计算<span class="_ _0"></span>能力。</div><div class="t m0 x2 h8 y7f ff2 fs5 fc0 sc0 ls0 ws0">第二个<span class="_ _0"></span>挑战:<span class="_ _0"></span>建立一<span class="_ _0"></span>个网站<span class="_ _a"></span>第二个<span class="_ _0"></span>挑战:<span class="_ _0"></span>建立一<span class="_ _0"></span>个网站</div><div class="t m0 x2 h4 y80 ff2 fs1 fc0 sc0 ls0 ws0">有多种方<span class="_ _0"></span>法可以<span class="_ _0"></span>在<span class="ff3">Window<span class="_ _0"></span>s Azure<span class="_ _0"></span></span>上编写和<span class="_ _0"></span>部署网页<span class="_ _0"></span>。<span class="ff3"> </span>最好的方法之<span class="_ _0"></span>一是使用<span class="_ _0"></span><span class="ff3">ASP.NE<span class="_ _0"></span>T MVC</span>。<span class="ff3"> </span>一方面,我们<span class="_ _0"></span>可以使用<span class="_ _0"></span>最先</div><div class="t m0 x2 h4 y81 ff2 fs1 fc0 sc0 ls0 ws0">进,最舒<span class="_ _0"></span>适的语<span class="_ _0"></span>言之一<span class="ff3">C<span class="_ _0"></span></span>#编写网<span class="_ _0"></span>页,另一<span class="_ _0"></span>方面,<span class="_ _0"></span>我们可以<span class="_ _0"></span>获得<span class="ff3">Mi<span class="_ _0"></span>crosoft Vis<span class="_ _0"></span>ual Studio<span class="_ _0"></span></span>形式的最<span class="_ _0"></span>佳工具<span class="_ _0"></span>。</div><div class="t m0 x2 h4 y82 ff2 fs1 fc0 sc0 ls0 ws0">我决定选<span class="_ _0"></span>择带有<span class="_ _0"></span><span class="ff3">ASP.NET<span class="_ _0"></span> MVC 4</span>的<span class="_ _0"></span>单页应<span class="_ _0"></span>用程序。<span class="_ _0"></span>选择此原<span class="_ _0"></span>因有多<span class="_ _0"></span>种:</div><div class="t m0 x1 h4 y83 ff2 fs1 fc0 sc0 ls0 ws0">我们已经<span class="_ _0"></span>获得了<span class="_ _0"></span>很多我们<span class="_ _0"></span>想使用的<span class="_ _0"></span>功能,<span class="_ _0"></span>它们已经<span class="_ _0"></span>集成了。<span class="_ _0"></span><span class="ff3"> </span>少工作!</div><div class="t m0 x1 h4 y84 ff2 fs1 fc0 sc0 ls0 ws0">页面的一<span class="_ _0"></span>部分与<span class="_ _0"></span>该项目模<span class="_ _0"></span>板一起提<span class="_ _0"></span>供的<span class="ff3">To<span class="_ _0"></span>Do-exam<span class="_ _0"></span>ple</span>(样板<span class="_ _0"></span>)一样<span class="_ _0"></span>,大量使<span class="_ _0"></span>用了<span class="ff3">AP<span class="_ _0"></span>I</span>。</div><div class="t m0 x1 h4 y85 ff3 fs1 fc0 sc0 ls0 ws0">OAuth<span class="ff2">已<span class="_ _0"></span>经包含在<span class="_ _0"></span>内,并且<span class="_ _0"></span>提供的<span class="_ _0"></span>代码优先<span class="_ _0"></span>数据库模<span class="_ _0"></span>型非常<span class="_ _0"></span>接近我们<span class="_ _0"></span>的目标<span class="_ _0"></span>。</span></div><div class="t m0 x1 h4 y86 ff2 fs1 fc0 sc0 ls0 ws0">包含<span class="ff3">Kno<span class="_ _0"></span>ckout.js</span>可<span class="_ _0"></span>以使<span class="ff3">MV<span class="_ _0"></span>VM</span>轻松<span class="_ _0"></span>绑定到<span class="ff3">A<span class="_ _0"></span>PI</span>驱动的<span class="_ _0"></span>元素上</div><div class="t m0 x1 h4 y87 ff3 fs1 fc0 sc0 ls0 ws0">Web API<span class="_ _0"></span><span class="ff2">已经包括<span class="_ _0"></span>在内,该<span class="_ _0"></span>区域专<span class="_ _0"></span>门显示使<span class="_ _0"></span>用</span>API<span class="ff5"><span class="ff2">的<span class="_ _0"></span>帮助</span></span></div><div class="t m0 x2 h4 y88 ff2 fs1 fc0 sc0 ls0 ws0">总而言之<span class="_ _0"></span>,如果<span class="_ _0"></span>我们选择<span class="_ _0"></span><span class="ff3">“</span>单页应<span class="_ _0"></span>用程序<span class="ff3">”</span>项<span class="_ _0"></span>目模板<span class="_ _0"></span>,则将获<span class="_ _0"></span>得很多好<span class="_ _0"></span>处,在<span class="_ _0"></span>这种情况<span class="_ _0"></span>下,这将<span class="_ _0"></span>极大地<span class="_ _0"></span>提高我们<span class="_ _0"></span>的开发<span class="_ _0"></span>速度。</div><div class="t m0 x2 h4 y89 ff2 fs1 fc0 sc0 ls0 ws0">使用<span class="_ _b"></span>使用<span class="_ _0"></span><span class="ff1">OA<span class="_ _0"></span>uth</span></div><div class="t m0 x2 h4 y8a ff2 fs1 fc0 sc0 ls0 ws0">我要做的<span class="_ _0"></span>第一件<span class="_ _0"></span>事是重新<span class="_ _0"></span>配置一些<span class="_ _0"></span>默认设<span class="_ _0"></span>置。<span class="ff3"> </span>我开始在<span class="ff4">Ap<span class="_ _0"></span>p_Start</span>文件<span class="_ _0"></span>夹中的<span class="_ _0"></span><span class="ff4">AuthConfi<span class="_ _0"></span>g.cs</span></div><div class="t m1 xa h6 y8a ff2 fs3 fc0 sc0 ls0 ws0">。</div><div class="t m0 xb h4 y8a ff3 fs1 fc0 sc0 ls0 ws0"> <span class="ff2">此文件中定义的<span class="_ _0"></span>此类在启<span class="_ _0"></span>动时</span></div><div class="t m0 x2 h4 y8b ff2 fs1 fc0 sc0 ls0 ws0">用于执行<span class="_ _0"></span>一些<span class="ff3">OA<span class="_ _0"></span>uth</span>配置。<span class="ff3"> </span>我的代码如<span class="_ _0"></span>下所示:</div><div class="t m0 x2 h4 y8c ff3 fs1 fc0 sc0 ls0 ws0">C<span class="ff2">#</span></div><div class="t m0 x2 h9 y8d ff3 fs4 fc0 sc0 ls0 ws0"> p<span class="_ _0"></span>ublic <span class="_ _0"></span>static <span class="_ _0"></span>void R<span class="_ _0"></span>egisterAuth(<span class="_ _0"></span>)</div><div class="t m0 x2 h9 y8e ff3 fs4 fc0 sc0 ls0 ws0">{</div><div class="t m0 x2 h9 y8f ff3 fs4 fc0 sc0 ls0 ws0"> OAuthWe<span class="_ _0"></span>bSecurity.R<span class="_ _0"></span>egisterGoog<span class="_ _0"></span>leClient();</div><div class="t m0 x2 h9 y90 ff3 fs4 fc0 sc0 ls0 ws0"> OAuthWe<span class="_ _0"></span>bSecurity.R<span class="_ _0"></span>egisterMicr<span class="_ _0"></span>osoftClient(</div><div class="t m0 x2 h9 y91 ff3 fs4 fc0 sc0 ls0 ws0"> clientId<span class="_ _0"></span>: /* ... */<span class="_ _0"></span> ,</div><div class="t m0 x2 h9 y92 ff3 fs4 fc0 sc0 ls0 ws0"> clientSe<span class="_ _0"></span>cret: /*<span class="_ _0"></span> ... */<span class="_ _0"></span> );</div><div class="t m0 x2 h9 y93 ff3 fs4 fc0 sc0 ls0 ws0"> OAuthWe<span class="_ _0"></span>bSecurity.R<span class="_ _0"></span>egisterTwitte<span class="_ _0"></span>rClient(</div><div class="t m0 x2 h9 y94 ff3 fs4 fc0 sc0 ls0 ws0"> consum<span class="_ _0"></span>erKey: <span class="_ _0"></span>/*<span class="_ _0"></span> ... */<span class="_ _0"></span> ,</div><div class="t m0 x2 h9 y95 ff3 fs4 fc0 sc0 ls0 ws0"> consum<span class="_ _0"></span>erSecret: <span class="_ _0"></span>/*<span class="_ _0"></span> ... */<span class="_ _0"></span> );</div><div class="t m0 x2 h9 y96 ff3 fs4 fc0 sc0 ls0 ws0"> OAuthWe<span class="_ _0"></span>bSecurity.R<span class="_ _0"></span>egisterYahoo<span class="_ _0"></span>Client();</div><div class="t m0 x2 h9 y97 ff3 fs4 fc0 sc0 ls0 ws0">}</div></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>