ç§ã¯Visual Studioã§Webãããžã§ã¯ããæžããŠããŸãããã¹ã¿ãžãªã®æ°ããããŒãžã§ã³ãè¿œå ããããã³ã«ãWindows Azureã§åäœããããã«ç ãæŸãŸãããŠããããã§ãã ç§ã¯Azuraã奜ãã§ããã䜿çšããæ©èœã¯ãããããã§ãã ç§ã«ãšã£ãŠã®äž»ãªãã®ã¯ã¯ã©ãŠããµãŒãã¹ã§ãã ã¯ã©ãŠããµãŒãã¹ã¯ãåæ£ãµãŒããŒã®å±éã«æé©ã§ãã
ããã§ã1ã€ã®WebããŒã«ïŒIISãåããä»®æ³ãã·ã³ïŒã1ã€ã®ã¯ãŒã«ãŒïŒIISãåããŠããªãä»®æ³ãã·ã³ïŒãããã³å
±éã¯ã©ã¹ã©ã€ãã©ãªãè¿œå ããã¯ã©ãŠããµãŒãã¹ãäœæããŸãã å
¬éåŸãç§ã®åœ¹å²ã«ã¯IPã¢ãã¬ã¹ãšç°ãªãããŒããå²ãåœãŠãããŸãã ã€ãŸããããã«tcpãããã¯ãŒã¯ããããæåèšå®ã¯æå°éã§ãããã¹ã¿ãžãªèªäœã§è¡ãããšãã§ããŸãã ããšãã°ãã¯ãŒã«ãŒã®ãããªãã¯ã¢ã¯ã»ã¹ãã€ã³ããäœæã§ããŸãããããã¯å¿
èŠãããŸããã ç§ã®åŽåè
ã¯å€ã®ç®ããé ãããwcfãµãŒããŒããã®äžã§ãã³ã°ã¢ããããç§ã®åœ¹å²ã¯é«éããŒã«ã«ãããã¯ãŒã¯ãä»ããŠéä¿¡ããŸãã
ã€ã³ã¿ãŒãã§ãŒã¹ãšéä¿¡ãã£ãã«ãªã©ãäžè¬ã¯ã©ã¹ãã©ã€ãã©ãªïŒãã¹ãŠã®ããŒã«ã«æ¥ç¶ããïŒã«é
眮ããŸãã
[ServiceContract] public interface IwcfChat { [OperationContract] string SendMessage(string userId, string userName, string text); [OperationContract] string GetMessages(string userId, string userName); }
WebããŒã«ã®ã¡ãœããã¯æ¬¡ã®ããã«åŒã³åºãããŸãã
using (var chat = new wcfChat()) { res = chat.channel.SendMessage(id, name, text); }
ãããã£ãŠãã¯ãŒã«ãŒã«ã¯ãã€ã³ã¿ãŒãã§ã€ã¹ïŒSendMessageãGetMessageïŒããã¡ãœããã®å®è£
ãããããããããã€ã³ãããŸããããŸããã¯ãŒã«ãŒã³ãŒãã§ã¯ãwcfã®ãã¹ããšãªãã³ãŒããèµ·åæã«å®è¡ãããŸãã
public override bool OnStart() {
ããã§ã¯ãæåååã®ã¡ãœããã瀺ããŸããããæ»ãå€ã®åã¯ãããšãã°å
±æã©ã€ãã©ãªã«èšè¿°ãããŠããè€éãªã¯ã©ã¹ãªã©ã絶察ã«ä»»æã«ã§ããŸãã ããã ãã§ããç§ã¯ãŠã§ãèšå®ã«ä»ã®èšå®ã¯ãããŸãããxmlãSOAPã«ã¯ããã±ãŒãžããããŸããã èªåçã«çæãããå¥çŽãã¡ã€ã«ã¯ãããŸããã ã€ã³ã¿ãŒãããã§wcfã«é¢ããæ
å ±ãæ€çŽ¢ãããšãã«ãããè¡ãããšãããšãhttpã®èšå®ãåžžã«ããããã¹ãŠã®ããã±ãŒãž/解åã§ãããã¢ããããŸãã ã¯ããwcfãã¯ãããžãŒã¯å
ã
ãã·ãªã¢ã«åããŠæååãšããŠéä¿¡ããå¿
èŠãããç°çš®ã·ã¹ãã ã®éä¿¡çšã«çºæãããŸããã ãããã1ã€ã®ããã°ã©ãã³ã°èšèªããããwcfã¯ã©ã€ã¢ã³ããšãµãŒããŒããã¹ãŠéçºãããŠããå Žåã¯ãåºããã§ã³ã¹ã§å²ãå¿
èŠã¯ãªãããã¹ãŠãæ£åžžã«æ©èœããŸãã
ãããã£ãŠãåæ£ãµãŒããŒãååŸããŸããã³ã¹ãã®ãããæäœã®ããã«ãå¥ã®ã¯ãŒã«ãŒãå®è¡ããŸããããšãã°ãããã§ã¯ãã£ããã衚瀺ãããŸãã ãã¹ãŠã®ãã£ããæ©èœã¯å¥ã®ä»®æ³ãã·ã³ã«ç§»åããããµã€ãèªäœïŒWebããŒã«ïŒã®ããã©ãŒãã³ã¹ãåå¥ã«åäžããããã£ãããè¡ãããšãã§ããŸãã
ãã®ãããªã¢ãŒããã¯ãã£ã¯ç§ã«ã¯æ£ããããã§ãã¢ããªã·ãã¯ãªãããžã§ã¯ãããã匷ãè² è·ã«èããããšãã§ããŸãã ããã¯ãã¹ãŠã¹ã¿ãžãªã§åäžã®ãããžã§ã¯ããšããŠéçºããã³ãããã°ãããŸããã€ãŸããwcfã§ã¡ãœãããåŒã³åºããšããå
éšã§ãããã°ã§ããªããããã§äœãèµ·ãã£ãŠããã®ãããããªããçµæãè¿ãããããªã©ã®ã¡ãã»ãŒãžã衚瀺ãããã«ããããã°ã®ã³ãŒããæ·±ãæãäžããããšãã§ããŸãã
AzurovããŒã«ã䜿çšãããšãããã¯ãã¹ãŠç°¡åãã€ç°¡åã«å®è¡ã§ããŸãã1ã€ã®ãã¿ã³ã§ãããžã§ã¯ãå
šäœãéå§ãã1ã€ã®ãããžã§ã¯ãã§ãããã®ããã«ãããã°ããŸãã æã
ããããžã§ã¯ãã®1ã€ãåæ§ã®ã¢ãŒããã¯ãã£ãæã£ãŠããã®ãèŠããŠããŸãããç§ã¯è¥ããããã§ã¯éåžžã«å°é£ã§ããïŒããã€ãã®ãã¡ãµãŒãããããŠã¡ãœããã®ãã©ã¡ãŒã¿ãŒãå€æŽãããå Žåã4ã€ã®å Žæã§å€æŽãå ããŸãã
éåžžã®ãµãŒããŒã§åæ§ã®ããšãããå¿
èŠããããŸãã ç©çãµãŒããŒäžã§ã¯ãªãã
å¿
ç¶çã«ãã·ã¢ã®ãã¹ãã£ã³ã°æ¥è
ã®vds / vpsä»®æ³ãã·ã³äžã ãªãœãŒã¹ã®1ã€ã§ãã
Windows Azure Pack / COSNãšåŒã°ããããããããã¯ãããžãŒïŒ
1gb.ru ïŒãèŠã€ããŸããã 説æã«ãããšãããã¯Azuraã®ç°¡ç¥çã§ããããã¹ãŠããäžã«ã衚瀺ãããã¯ãã§ãã ãã¡ããã圌ãã«ã¯è©ŠçšæéããããŸãã ãã©ãŠã¶ãŒã§ã¯ãã³ã³ãããŒã«ã¯å€ãããŒãžã§ã³ã®AzuraããŒã¿ã«ããã®ãã®ã§ããããã§ãïŒèŠããŠããå ŽåïŒã

å¯èœæ§ã®ãã¡ãä»®æ³ãã·ã³ãäœæããŠãããã¯ãŒã¯ã«ïŒæåã§ïŒçµåããã ãã§ããµãŒãã¹ãã¹ããããŸã-ããã ãã§ãã ãã®ãµãã¹ã¯ãªãã·ã§ã³ãã¹ã¿ãžãªã«ã¢ããããŒãããæ¹æ³ããããŸãããããã¯å€ãã®ã¢ã¡ããã£ã§ãã ããã«ãã¯ã©ãŠããµãŒãã¹ãäœæããæ¹æ³ã¯ãããŸããã 説æã§ã¯ããã®ããã©ã€ããŒãã¯ã©ãŠããã¯ããã«éçºãããå
ã®Azuraã®æ©èœã«ãã£ãŠè£å®ããããšè¿°ã¹ãŠããŸããããµããŒãã¯ãã¹ãŠãé·æéåçµãããŠãããäžè¬çã«ããããã¯äºææ§ã®ãªãæè¡ã§ãããšè¿°ã¹ãŠããŸãïŒããã®Azure Packã¯å®éã®Azureãšã¯å®å
šã«äºææ§ããããŸãããã¢ã€ãã¢ã¯å
±éããŠããŸãããå®è£
ã¯å®å
šã«ç°ãªã£ãŠãããAPIã¯ç°ãªã£ãŠããããªã©ã§ãããïŒcïŒïŒã
èŠããã«ãããã¯é©åããŸããã
ããã«æ€èšããŠããŸãã ç§ã¯Windowsã®ãã¹ãã£ã³ã°äºæ¥è
ãé§äœ¿ããŠãå®æçãªvps / vdsãã¬ã³ã¿ã«ããå¯èœæ§ãæ¢ããŠããŸããããããã®éã§ããŒã«ã«ãããã¯ãŒã¯ãæŽçããããšãã§ããŸãã å€ãã¯åã«ãã®ãããªæ©äŒãæã£ãŠããŸããã ã¯ããä»®æ³ãã·ã³ãã¬ã³ã¿ã«ãããã®äžã§VPNãäžããŠãå¥ã®ä»®æ³ãã·ã³ã§ãã®ãããã¯ãŒã¯ã«æ¥ç¶ã§ããŸãã ãããããã®ãããªãããŒã«ã«ããããã¯ãŒã¯ã¯httpãä»ããŠãã«ããããããæããã«äœéã§ãã æ¢ã«æåãããšã¯æã£ãŠããŸããã§ãããã1
ã¯ã©ãŠããã¹ãã£ã³ã°æ¥è
ã¯ã ãæ°åã¯ãªãã¯ããã ãã§ã垯åå¹
ã1ã®ã¬ããã/ç§ã®ãã©ã€ããŒããããã¯ãŒã¯ã§ä»®æ³ãã·ã³ãçµ±åããŸãããšæã£ãŠããŸããã¢ã¹ã¯ã¯ã§ã ãµããŒãã«ãããšã10Gbps垯åå¹
ã®ããŒã«ã«ãããã¯ãŒã¯ãã¢ã¹ã¯ã¯ã®ã€ã³ãã©ã¹ãã©ã¯ãã£ã«å±éãããŠããŸãã
ãã°ããããäžèšãšåãããšãè©ŠããŠã¿ãŠãã ãããéåžžã®ãã¹ãã£ã³ã°ã®ããã ãã§ãã
ã¹ã¿ãžãªã§ãœãªã¥ãŒã·ã§ã³ãäœæããsharedTestãšããååãä»ããŠè¿œå ããŸãã
1.åãååã®MVCã¢ããªã±ãŒã·ã§ã³ã
2. Windowsã¯ã©ã¹ã©ã€ãã©ãªãç§ã¯libãåŒã³åºããŸãã
3. Windowsã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³ãã¯ãŒã«ãŒãšåŒã³ãŸã

次ã«ããããã®ãããžã§ã¯ããæ¥ç¶ããå¿
èŠããããŸãããã®ããã«ã¯ããœãªã¥ãŒã·ã§ã³ãå³ã¯ãªãã¯ããŠããããã£ã«ç§»åããŸã

ããã§ã¯ãèµ·åãããããžã§ã¯ãå
ã®ãã€ã³ããéžæããå¿
èŠããããããã€ãã®ã¹ã¿ãŒãã¢ããããããã¯ãŒã«ãŒããµã€ããããé«ãããå¿
èŠããããŸãã
ããã«ã次ã®ããããã£ã¯ãããžã§ã¯ãã®äŸåé¢ä¿ã§ãã ã©ã€ãã©ãªã¯èª°ã«ãäŸåããŠããŸããã sharedTestãµã€ãã¯ãã©ã€ãã©ãªãšã¯ãŒã«ãŒã®äž¡æ¹ã«äŸåããŠããŸãã ã¯ãŒã«ãŒã¯ã©ã€ãã©ãªã®ã¿ã«äŸåããŸãã
ã¯ãŒã«ãŒã®ããããã£ã§ïŒããããã£ãå³ã¯ãªãã¯ããŠïŒèµ·åãããªããžã§ã¯ããæå®ããããšãå¿ããªãã§ãã ãããããã«ãããã¯ãŒã«ãŒã¯æåã«èµ·åãã誰ãåŸ
æ©ããŸããã

次ã®ã¹ãããã¯ãäŸåé¢ä¿ãè¿œå ããããšã§ãã Libã©ã€ãã©ãªãŒã§ããªã³ã¯ïŒåç
§ïŒ->ãªã³ã¯ãè¿œå ...ãå³ã¯ãªãã¯ããSystem.ServiceModelããã±ãŒãžãå¿
èŠã§ãã ã¯ãŒã«ãŒã«ã¯åãããã±ãŒãžãå¿
èŠã§ãã åæ§ã«ããµã€ããšã¯ãŒã«ãŒã®Libãããžã§ã¯ãããã©ã€ãã©ãªãžã®ãªã³ã¯ãè¿œå ããŸãã
ã©ã€ãã©ãªïŒäŸ¿å©ãªå¥ã®ãã¡ã€ã«ïŒã«ããããªãã¯ã€ã³ã¿ãŒãã§ã€ã¹IwcfChatãšãããªãã¯ã·ãŒã«ã¯ã©ã¹wcfChatïŒIDisposableïŒäžèšã®æåã®ãªã¹ãïŒãé
眮ããŸãã ãŸããäžè¬çãªèšå®ãŸãã¯æ§é ãæã€ãã£ã¬ã¯ããªããããŸãããããã«ã¯IPã¢ãã¬ã¹ãããããŸããïŒååŸããå Žæã¯å°ãåŸã§ãïŒã
public static class spr { public static string wcfIP = "10.0.0.6"; }
ã¯ãŒã«ãŒããµãŒãã¹ã®ãã¹ãã«ããŸãïŒããããªã¹ãã«äŒŒãŠããŸãããã³ã³ãœãŒã«ã¢ããªã±ãŒã·ã§ã³ããããããã¡ã€ã³é¢æ°ã«ã®ã¿è»¢éãããŸãïŒ
class Program { static void Main(string[] args) {
ç§ã¯é ããããŒã8003ãš9003ãåãåºããŸãããäž»ãªããšã¯ãããŒããæšæºã§ã¯ãªãããžãŒã§ã¯ãªããšããããšã§ãã
wcfChatã¯ã©ã¹ãã¯ãŒã«ãŒã«è¿œå ããŸã-ã€ã³ã¿ãŒãã§ãŒã¹ã®å®è£
using Lib; namespace Worker { class wcfChat : IwcfChat { public string SendMessage(string userId, string userName, string text) { return "Sending message...."; } public string GetMessages(string userId, string userName) { return "Get messages"; } } }
ããã«ã¯äœããã€ã³ãããŸããã§ãããã䟡å€ã¯ãããŸãã è©ŠããŠã¿ãæéã§ã-Homeã³ã³ãããŒã©ãŒãšãã®ãã¬ãŒã³ããŒã·ã§ã³ãå€æŽããŸã
public ActionResult Index(bool isGet = true) { string res = ""; using (var chat = new wcfChat()) { res = isGet ? chat.channel.GetMessages("1", "name") : chat.channel.SendMessage("1", "name", "text"); } return View((object)res); }
@model string @{ ViewBag.Title = "Home Page"; } <br /><br /> <div>@Model</div>
éå§ããŠããã¹ãŠãæ©èœããããšã確èªããŸãã

ãŸããæ®ãã¯ã»ãšãã©ãããŸããããããžã§ã¯ãããã¹ãã£ã³ã°äºæ¥è
ã«ã¢ããããŒãããã«ã¯ã
1cloudã䜿çšããŸãã ç»é²ããã³ã³ãããŒã«ããã«ã䜿çšããŠãå¿
èŠãªæ§æã®2å°ã®ä»®æ³ãã·ã³ãäœæããŸãïŒãµã³ã¯ãããã«ãã«ã¯ã®ããŒã¿ã»ã³ã¿ãŒã§æå°éã®ä»®æ³ãã·ã³ã䜿çšããŸããããããã¯éèŠã§ã¯ãããŸããïŒã 圌ãã«ã¯æ°æéã®ãã¹ãæéãããããµããŒãã¯ãªã¯ãšã¹ãã«å¿ããŠç§ã«æ¡å€§ããŸããã

次ã«ãã³ã³ãããŒã«ããã«ã®2çªç®ã®é
ç®ã§ããããŒã«ã«ãããã¯ãŒã¯ãäœæãã2ã3åã¯ãªãã¯ããããšã§ãtestLocalãšããååãä»ããŸããã ãšããã§ããµãŒãã¹ã¯éçIPã«äŸåããŠãããããåçIPïŒDHCPïŒã®ãã§ãã¯ããã¯ã¹ããªãã«ããŸããããã®ãããããå°ã調æŽããå¿
èŠããããŸãã

äœæåŸãã³ã³ãããŒã«ããã«ã§ãã¹ãŠåãããã«ãåãµãŒããŒã«ç§»åãã[èšå®]ã¿ãã«ç§»åããŠããã©ã€ããŒããããã¯ãŒã¯ãèŠã€ããæ°ããäœæãããããã¯ãŒã¯ã䜿çšããŠãããã©ã°ãåãæ¿ããŸãã ãã®ãã©ã°ã«ããââãä»®æ³ãã·ã³å
ã«æ°ããã¢ããã¿ãŒãšæ°ãããããã¯ãŒã¯ãè¿œå ãããŸãã ããã§ãå
éšIPã¢ãã¬ã¹ãäžããããŸãããµã€ããšã¯ãŒã«ãŒçšã«10.0.0.5ãš10.0.0.6ããããŸããã ãããã¯ãŒã¯ãæ©èœãããããã«ãä»®æ³ãã·ã³ãžã®ãªã¢ãŒããã¹ã¯ãããïŒRDPïŒã«ç»ãããããã®å€ããããã¯ãŒã¯èšå®ã«æåã§å
¥åããŸãã ç解ã§ããªã人ã®ããã®æ瀺ã¯
è¿ãã«ãã
ãŸã ã
ããã«ã¯æ©èœããªãã£ãããšãèŠåããŸãã ãããã¯ãŒã¯ã¯ãããªãã¯ã§ãããšææããããããã®
ãããªãã©ã€ããŒããããã¯ãŒã¯ã«åäœæããå¿
èŠããããŸã
ã ã ãŸãã䜿çšããããŒãããã¡ã€ã¢ãŠã©ãŒã«ã®äŸå€ã«è¿œå ããå¿
èŠããããŸãã ãããè¡ãã«ã¯ãéå§ïŒå®è¡ïŒããŒwin + RãåŒã³åºããããã«netsh.exeãšå
¥åããŸãã
次ã«ãã³ãã³ãããã³ããã§ã³ãã³ããå
¥åããŸãã
firewall set portopening protocol = TCP port = 9003 name = myService mode = ENABLE scope = SUBNET profile = CURRENT
ä»ãç§ã¯åºçç©ã«ã€ããŠã話ããŸãã
ãã®ããã¥ã¢ã«çšã«IISãæ§æããŸããã å€éšIPã¢ãã¬ã¹ã䜿çšããŠããã©ãŠã¶ãŒããããã©ãŒãã³ã¹ã確èªã§ããŸãã IISã®åçã¯ããã¹ãŠãæ©èœããŠããããšã瀺ããŠããŸãã

ç§ã¯ftpã§äœãããŸããã§ãããç¹ã«ãããŒãžã§ã³ç®¡çã·ã¹ãã ããã®å
¬éã®ã»ããã¢ããã§ã¯ãããã¯å¥ã®èšäºã®ãããã¯ã§ãã çºè¡ããIPã¢ãã¬ã¹ãä¿®æ£ããWebã¢ããªã±ãŒã·ã§ã³ããã¡ã€ã«ã·ã¹ãã ã«å
¬éãããµãŒããŒäžã®ãã©ã«ããŒCïŒ\ inetpub \ wwwrootã«ããããã³ã§æããŸããã ãµãŒãã¹ããŸã ååšããŠããªãã£ããããããŒãžãæŽæ°ããHome / Indexã¢ãã¬ã¹ã§äºæ³ããããšã©ãŒãèŠãŸããã
å®éã«ããã¡ã€ã«ã·ã¹ãã ã§ã¯ãŒã«ãŒãå
¬éããã€ã³ã¹ããŒã©ãŒãå
¥æããŸããã 1ã€ã ããããŸããDEBUG/ RELEASEãšæ··åããå¿
èŠã¯ãããŸããã ããå
šäœã2çªç®ã®ä»®æ³ãã·ã³ã®ãã¹ã¯ãããã«ãã©ãã°ããããŠã¹ã®å·Šãã¿ã³ã§ã€ã³ã¹ããŒã«ããŠèµ·åããŸããã ç§ã®é»ãçªãåºãŠããµãŒãã¹ãæ©èœããŠãããšèšã£ãã ãµã€ããæŽæ°ããŠããŸããããã¹ãŠãæåããããšãããããŸãã

ã ããç§ã¯åäœããåæ£ãµãŒããŒãåŸãã ç§ã¯ãã£ãããäŸã«æããŸããããã³ã¡ã³ãã§ã¯æãæã€å¿
èŠããããšèšã£ãŠããŸããïŒäžè¬çã«ãç§ã¯ãã®ã²ãŒã ããã©ãŠã¶ã²ãŒã ã§äœ¿çšãã決éãèšç®ããæ©èœã¯å¥ã®ãµãŒããŒã«è»¢éãããŸãã ãã©ã¹ã®ç¹ã¯ãå¿
èŠã«å¿ããŠ1ã€ã®ç¹å®ã®ãµãŒããŒã®ã¿ã®ããã©ãŒãã³ã¹ãæ¹åã§ããããšã§ãã åæ§ã«ã2ã€ã®Webãµã€ãã§å®è¡ã§ããŸããããšãã°ãæåã®ãµãŒããŒãåçãåŠçãããµããã¡ã€ã³ã®2çªç®ã®ãµãŒããŒãç»åã®ä¿åã«äœ¿çšãããŸãïŒç»åã¯1åéä¿¡ããã次ã«2çªç®ã®ã¿ã衚瀺ãããŸãïŒã
åœç¶ãå®è£
ã¯å®å
šã§ã¯ãªããåãªãåç
§ç¹ã§ãã æ£ãã䟿å©ãªåºçç©ãã»ããã¢ããããå¿
èŠããããŸãã ããã«ã1察1ã®ç·å¯ãªæ¥ç¶ããããè€æ°ã®ã¯ãŒã«ãŒãå¿
èŠãªå Žåã¯ãããŒããã©ã³ãµãŒãå¿
èŠã«ãªããŸãã ãŸããè¯ãæ¹æ³ã§ã¯ãéçå
éšIPãåãé€ãå¿
èŠããããŸãã ãŸããäžè¬çã«ãããã©ãŒãã³ã¹ã®ããã«ãtcpãœã±ãããä»ããŠçŽæ¥wcfæ¥ç¶ãå®è£
ã«çœ®ãæããå¿
èŠããããŸãã