多设备架构

时间:2011-06-07 08:59:47

标签: c# asp.net-mvc wcf json mobile-website

我正在尝试为我的多设备项目组成一个“核心”。

该项目是关于一个Web应用程序,它通过facebook登录验证用户,然后公开他们可以做的一系列新操作 - 例如。获取与其facebook id等相关的数据库中的所有记录。

核心应该通过以下设备来理解:

  • PC
  • iPhone
  • Android
  • Windows Phone 7

现在你将如何弥补核心?

  1. 您是否可以将其作为WCF服务 返回JSON?

  2. 你会成功吗? 返回JSON的控制器?

  3. 你怎么能确保 用户是他/她在查询时所说的人 核心?我应该通过 每次都是由facebook生成的accessToken?

  4. 你可能已经注意到了,我完全不知道如何做到这一点。

    提前致谢。

1 个答案:

答案 0 :(得分:4)

不确定我是否正确理解了您的问题,但是......

首先,你必须定义或者决定,“核心”是什么?或者应该的内容 - Core将执行的功能是什么。理想情况下,当我们说Core时,它实质上意味着一个层执行基本或原子操作

通过该Core,您可以生成设备包装器(IPhone,PC等),例如,构建要发送到核心的查询。

您可以使用WCF数据服务构成数据层。您的核心可以执行业务操作/等,并与数据服务进行通信。

例如,我立即想到的是:

  1. 一个执行核心操作的核心 - 用于与Datalayer交谈的isntance
  2. DeviceWrapper DeviceAndriod,DeviceIPhone,DeviceWeb等),包装不同的设备。例如,Factory / Builder模式的混合。考虑Device s的工厂和视图类型的构建器。
  3. TextRenderer,根据设备设置,呈现文字。
  4. 一种方法是,让我们决定:

    Core将成为执行基本操作的“库”:

    • 验证
    • 授权
    • 选择记录
    • 执行行动1
    • 执行行动2

    因此,

    • 第1步:编写一个提供身份验证/授权的控制器;例如,请致电Core.Authenticate()Authorize();

    • 第2步:基于user agent调用ICore.RenderView(agentType),这可能会返回要呈现的视图/ html。

    用户可以执行操作,您的控制器可以致电Core.PerformAction();例如,它可以返回指向要重定向的页面的链接。

    <强> - 更新 -

    此更新是对您的评论的回应。

    现在,在此(您的评论)案例中,您谈论的是客户端结束。

    让我们清理一下。有服务器,并且有客户端方。

    到目前为止,我们讨论的是服务器方面,主要关注的是:

    1. 服务器如何处理来自不同用户代理的请求。
    2. 如何针对不同的设备呈现文本。
    3. 客户端可能是:

      1. 网络浏览器,在这种情况下您不需要开发任何客户端应用
      2. A,比方说,Windows Phone的Silverlight应用程序
      3. 适用于Android手机的Android应用
      4. 等等。
      5. 决定这个“客户端应用”会做什么。例如,在您的情况下:

        • 用户应通过fb id。
        • 登录
        • 用户应能够执行某些操作。

        请注意,您可能需要考虑智能客户端(使用Web服务,而不是asp.net网页)。

        此外,WCF中的type hinting可能会在JSON响应中为大型集合添加大量不必要的开销。因此,如果您甚至远程认为可能想要在某个时间点使用多种类型的端点(SOAP等),那么WCF就是您的选择。