第二章 设计程序架构 之 分布式应用

1. 概述

  分布式应用是将程序的互相协作的各个模块放到不同的服务器上,从而提高程序的性能和可靠性。

  本章内容包括:集成web service、设计复合应用、分布式环境的session管理 以及 web farms。

2. 主要内容

  2.1 集成web service

    可以使用Asp.Net MVC4 创建 REST(Representation State Transfer) 服务。

    使用 ApiController来返回序列化的数据。这个Controller根据Html头的Accepts属性来决定返回Xml或者Json格式的数据。

    * ASP.NET Web Services (ASMX)是微软之前的web服务技术,可以让调用者方便的调用其中的方法,但是不能定制化特定的部件,比如传输协议、安全性、编码方式。目前该技术已被WCF和Web API代替。

    使用ASP.NET MVC4可以方便的从Rest url中获取数据:

private HttpService _httpService;  
 
        public ArticleRepository() 
        { 
            _httpService = new HttpService(); 
        } 
 
        public IQueryable<Article> GetArticle s() 
        { 
            Uri host = new Uri("http://www.yourdomain.com"); 
            string path = "your/rest/path"; 
            Dictionary<string, string> parameters = new Dictionary<string, string>(); 
            NetworkCredential credential = new NetworkCredential("username", 
                "password"); 
            XDocument xml = _httpService.Get(host, path, parameters, credential);  
            return ConvertArticleXmlToList(xml).AsQueryable(); 
        } 
 
        private List<Article> ConvertArticleXmlToList(XDocument xml)  
        { 
              List<Article> article = new List<Article>(); 
              var query = xml.Descendants("Article") 
                                .Select(node =>  
                node.ToString(SaveOptions.DisableFormatting));  
                foreach (var articleXml in query)  
                { 
 
                   article.Add(ObjectSerializer.DeserializeObject<Article>(articleXml));   
                } 
                return article;  
        }

  2.2 设计复合应用

    复合应用就是一个应用程序分布在多个地方。随着各种云的推广普及,这种方式已经开始流行了。

    有两种主要的复合模式

    ① 客户端中心模式:客户端负责决定在哪里调用服务。

      这种模式容易编码,同时失败率也高。客户端和服务耦合度高。

    ② 系统中心模式:采用面向服务的架构(SOA),包含一个service bus(比如 Windows AppFabric),由它负责分发服务请求。

    设计复合应用需要注意的事项:

    ① 弹性连接控制(Connection resiliency),要考虑连接中断后的恢复。

    ② 访问授权控制,需要管理多个域的访问控制。

    ③ 持久化和并发,需要考虑处理相继到来的消息及其生命周期。

  2.3 分布式应用中的session管理

    ASP.NET MVC4 是被设计为以无状态方式运行的。每次调用都可以传递所有需要的信息。

    IIS支持三种session存储模式:InProc、StateServer、SqlServer。

  2.4 Web Farms

    web farms 是用来分担web请求的一组服务器。几个好处:

    ① 提高稳定性。

    ② 提高响应速度。

    ③ 提高可伸缩性。

    需要注意的问题是,web farms 环境下,session存储要采用OutProc方式(StateServer or SqlServer)。

3. 总结

  ① web service 是一种通过Internet在多个系统间传递信息的传统架构。

    ASMX服务使用WSDL同订阅者通信,包括 终结点、协议 和 信息格式。

    WCF基于SOAP协议,是目前的主流。

    ASP.NET MVC4 Web API 可以使用 MVC 模式来处理http请求。

  ② 设计分布式应用是一项非常复杂的任务。尤其是各个独立部署的部分之间的通信问题。

  ③ 分布式应用中,状态管理是需要考虑的核心问题。

  ④ 分布式环境可以提高程序 可用性、稳定性 和 可伸缩性。可以使用web farms,用多个服务器并行处理用户请求。

posted @ 2015-06-24 18:05  stone lv  阅读(268)  评论(0编辑  收藏  举报