基于Silverlight的RIA架构及百度应用
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

基于Silverlight的RIA架构及百度应用

on

  • 5,572 views

 

Statistics

Views

Total Views
5,572
Views on SlideShare
4,791
Embed Views
781

Actions

Likes
4
Downloads
70
Comments
0

16 Embeds 781

http://www.cnblogs.com 545
http://chinese.catchen.me 113
http://chinese.catchen.biz 67
http://www.slideshare.net 13
http://blog.csdn.net 12
http://www.linkedin.com 5
http://blog.zdnet.com.cn 5
http://www.zhuaxia.com 4
http://xianguo.com 4
http://feeds.feedburner.com 3
http://www.6ideas.cn 2
http://zhuaxia.com 2
http://reader.youdao.com 2
https://www.linkedin.com 2
http://www.haogongju.net 1
http://222.92.117.56 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Browser-Based AuthN 如何在Silverlight中实现,有何缺陷
  • 跨域访问(Cross-Domain)默认是关闭的可以通过“cross-domain policy file”打开Browser-Based 认证只有以下场景才安全无跨域访问 或只访问有限的几个受信的域其他场景只有Message-Based认证才是安全的

基于Silverlight的RIA架构及百度应用 Presentation Transcript

  • 1.
  • 2. 基于Silverlight 的RIA架构及百度应用
    杨丹
    资深.NET架构师
    微软(中国)
    陈广琛
    Web前端工程师
    百度
  • 3. 议题
    RIA与应用平台趋势
    Silverlight 应用架构
    界面模型
    逻辑分层
    网络访问
    安全机制
    百度Silverlight应用
  • 4. RIA与应用平台趋势
    纯Web
    在Web上实现
    通过Web部署
    界面更美观
    像桌面应用
    动画 多媒体
    开发更高效
    面向对象语言
    美工技术协同
    Richness
    Web
    Desktop
    RIA
    Win Form
    HTML
    DHTML
    AJAX
    Silverlight
    WPF
    Plug-in
    Reach
  • 5. Silverlight 架构
    Silverlight Runtime
    纯Web
    界面更美观
    开发更高效
    PresentationCore
    DRM
    XAML
    Media
    Core CLR
    Small BCL
    Debugging
    Garbage Collector
    Security
    Exception
    Loader
  • 6. Silverlight应用架构
    逻辑分层
    安全机制
    界面模型
    Browser
    Web Server
    Silverlight
    B/L
    B/L
    Silverlight
    B/L
    网络访问
  • 7. 界面模型
    如何与HTML页面结合?
    三种选择
    RIA 与 HTML
    RIA 与 RIA
    单体 RIA
    模块粒度
    松散耦合
    本地通讯
    MVC/MVP
  • 8. RIA与RIA- 本地访问
    Silverlight与HTML对象:JavaScript接口
    Silverlight应用之间:本地消息
    Domain 1
    Domain 2
    本地消息接受者
    Local Message Receiver
    本地消息发送者
    Local Message Sender
    本地消息接受者
    Local Message Receiver
    本地消息发送者
    Local Message Sender
  • 9. 单体RIA- 按需加载
    Silverlight 应用
    应用 Package (.xap)
    In-Package 文件
    应用程序集 (.dll)
    Library 程序集
    Library 程序集
    Library 程序集
    Entry Point
    Application Class
    Application Class
    Application Class
    Application Class
    Application Class
    Application Class
    Application Class
    Application Class
    资源文件
    资源文件
    资源文件
    资源文件
    ExternalPart程序集
    On-Demand 程序集
    (缓存)
    (延后)
  • 10. 界面模型 -控制流转
    面向页面 vs. 面向GUI
    页面
    GUI
    • Silverlight 导航:相对于Application 的状态
    • 11. Navigation Framework:Frame, Page
    <HyperlinkButton
    TargetName = "MainContent“
    NavigateUri = "/Views/List/Products.xaml">
    </HyperlinkButton>
  • 12. 逻辑分层
    多层架构 VS. C/S 架构
    Silverlight应用定位
    逻辑写在何处?
    与 ASP.NET MVC的关系?
  • 13. 逻辑分层 – 与ASP.NET MVC结合
    SOAP
    REST
    ASP.NET MVC
    业务逻辑层
    仅传递用于显示的对象
    以REST调用为主
    与ASP.NET MVC 结合
    public class CategoryController : Controller{
    public ActionResult Products(int id){
    return Json(prods);
    // return View();
    }
  • 14. 网络访问
    Web Service
    访问方式不同
    资源/RESTvs. 调用/RPC
    REST 具象状态传输
    URI 资源的状态
    Http 标准操作Get/Post
    RPC 简单对象访问协议
    SOAP
    方法调用,复杂语义
    Http-Based
    Web Service
    SOAP
    REST
  • 15. 网络访问 - RPC/SOAP 方式
    服务端处理
    WCF 支持 SOAP
    客户端调用 - Proxy
    使用Visual Studio菜单工具
    AddService Reference
    命令行工具
    SLsvcutil.exe
    Silverlight 版本的 svcutil.exe
    基于Channel Model开发
    最灵活的方式
  • 16. 网络访问 - REST方式
    服务端处理
    WCF 支持 REST
    [OperationContract]
    [WebGet(UriTemplate ="Northwind/Order/{orderId}")]
    OrderInfoMsgGetOrderInfo(string orderId);
    客户端调用
    WebClient
    数据处理
    XML: XmlReader, Linq to XML, XmlSerializer
    JSON: Linq to JSON, DataContractJsonSerializer
    RSS/Atom Feeds: System.ServiceModel.Syndication
  • 17. 网络访问 - REST 与 SOAP 比较
  • 18. 安全机制
    认证 ( Authentication )
    授权 ( Authorization )
    身份传递 ( Credential )
    消息加密 ( Encryption )
  • 19. 安全机制 – 身份传递
    身份信息如何传递给后台服务?
    Browser-Based (自动)
    Windows Authentication
    ASP.NET Form Authentication/Cookies
    Message-Based (手工)
    URL 参数
    消息头包含Username/Password 或Token
  • 20. Browser-Based Authentication
    Example with Cookies + Forms Auth
    E.g.: ASP.NET loginUser:Password:
    Credentials
    YourDomain.com
    Auth info (cookie)
    Service calls + Auth info
    Browser
  • 21. Browser-Based Authentication
    Login through Silverlight
    YourDomain.com
    Call with credentials toASP.NET Auth Service
    User:Password:
    ASP.NET Auth Service
    Reply contains cookie
    Service calls + Auth info
    Browser
  • 22. Browser-Based Authentication
    Using Windows Authentication
    Windows loginUser:Password:
    YourDomain.com
    Service calls + Creds
    Browser
  • 23. Browser-Based Authentication: Cross-Domain Threat
    MyBank.com LoginUser:Password:
    Credentials
    MyBank.com
    Auth info (e.g. cookie)
    Could steal orchange dataif protection wasn’t in place
    恶意请求 + Auth info
    恶意程序
    恶意网站
  • 24. Message-Based Authentication
    Identity managed by Silverlight, not the Browser
    YourDomain.com
    User:Password:
    Creds are added by Silverlight, not browser
    No creds
    恶意网站
    Browser
  • 25. Message-Based Authentication:
    选择 1: 修改接口
    [OperationContract]
    public decimal GetActBal(intactID, string user, string pwd);
    选择 2: 通过WCF 的 WS-Security 在SOAP包头中自动插入身份信息
    <basicHttpBinding>
    <binding name="myBinding">
    <security mode="TransportWithMessageCredential">
    <message clientCredentialType="UserName"/>
    </security>
    <httpsTransport/>
    </binding>
    </basicHttpBinding>
  • 26. 安全机制 – 认证和授权
    服务端如何认证和授权?
    Message-Based 身份
    if(!OperationContext.Current.ServiceSecurityContext.
    PrimaryIdentity.IsAuthenticated)
    throw new SecurityException();
    // 标准 WCF方法
    Browser-Based 身份
    if(!HttpContext.Current.User.Identity.IsAuthenticated)
    throw new SecurityException();
    // ASP.NET Membership
  • 27. 安全机制 – 消息加密
    完整,真实,防篡改
    两种选择:传输层加密,消息层加密
  • 28. Silverlight 应用架构
    界面模型
    逻辑分层
    网络访问
    安全机制
  • 29. 百度应用
    Silverlight版百度Hi
  • 30. 界面模型
    选择单体RIA
    源自Web版的风格
    Silverlight 3.0暂时缺乏多窗口模型
    单体RIA的问题
    耦合度高,难以维护——来自Web版的经验
    利用MVC分离来解决
  • 31. Code-Behind
    ASPX/XAML
    (View)
    CS/VB
    (Code-Behind)
    从Win/Web Forms到MVC
    <Button OnClick=“…”>

    </Button>
    private void
    Button_OnClick(…)
    {

    }
  • 32. 从Win/Web Forms到MVC
    MVC
    ASPX
    (View)
    CS/VB
    (Controller)
    <form action=“…”>

    </form>
    public ActionResult
    Search(…)
    {
    ViewData = …;
    return View();
    }
    ViewData
  • 33. Silverlight MVC实践
    Binding
    XAML
    (View)
    CS/VB
    (Controller)
    <Button Click=“…”>

    </Button>
    private void
    Button_Click(…)
    {

    Counter.Value++;
    }
    Binding
  • 34. Silverlight MVC实践
    Builder
    XAML
    (View)
    CS/VB
    (Controller)
    <Button Click=“…”>

    </Button>
    private void
    Button_Click(…)
    {
    Counter.Value++;
    builder.Update();
    }
    Builder
  • 35. 逻辑分层
    统一调用百度IM API
    隐藏后端逻辑
    百度IM API
    Silverlight版
    百度Hi
    网页版百度Hi
    第三方客户端
    (计划支持)
  • 36. 异步模型
    调用单个异步函数
    RetrieveUserAsync(username) .AddCallback(user => ProcessUser(user));
    多个异步函数组成工作流
    Async.Chain() .Next(context => FirstStep(context)) .Next(context => SecondStep(context)) .Next(context => ThirdStep(context)) .Go(initialContext);
  • 37. 网络访问
    JSON-RPC
    JSON易于被不同的客户端解释
    JavaScript
    Silverlight
    IM接口更像是调用而非资源
  • 38. 安全机制
    百度Passport
    API式认证与授权
    认证令牌
    隐藏实现细节
    在线会话(Session)
    会话令牌
  • 39. 百度应用小结
    MVC模型
    Binding
    Builder
    API划分前后端
    异步工作流
    JSON-RPC
    Passport + Session
  • 40. 参考资源
    官方站点
    http://www.silverlight.net/
    免费空间
    http://silverlight.live.com/
    博客
    http://wpfe.cnblogs.com/
    http://dotnet.catchen.biz/
    http://silverlightrocks.com/
  • 41. 疑问和解答