多设备架构

ebb*_*ebb 5 c# asp.net-mvc wcf json mobile-website

我正在尝试为我的多设备项目组成一个"核心".

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

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

  • 个人计算机
  • 苹果手机
  • Android的
  • Windows Phone 7

现在你将如何构成核心?

  1. 你会使它成为一个返回JSON的WCF服务吗?

  2. 你会让它成为一堆返回JSON的控制器吗?

  3. 在查询核心时,您如何确保用户是他/她所说的?我应该每次传递facebook生成的accessToken吗?

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

提前致谢.

KMå*_*Mån 4

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

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

例如,在该核心上,您可以生成设备包装器(iPhone、PC 等),该包装器构建要发送到核心的查询。

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

例如,我立即能想到的是:

  1. 一个核心,执行核心操作 - 例如与数据层对话
  2. DeviceWrapperDeviceAndriod、DeviceIPhone、DeviceWeb 等),包装不同的设备。例如,工厂/建造者模式的混合。考虑Devices 工厂和视图类型的构建器。
  3. TextRenderer,根据设备设置呈现文本。

一种方法可能是,让我们决定:

,Core将是一个执行基本操作的“库”:

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

所以,

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

  • 步骤 2:基于用户代理调用 ICore.RenderView(agentType),这可能会返回要渲染的视图/html。

用户可以执行一个操作,您的控制器可以调用Core.PerformAction();例如,这反过来可能会返回到要重定向的页面的链接。

- 更新 -

此更新是为了回应您的评论。

现在,在这个(您的评论)案例中,您正在谈论客户端。

让我们澄清一下。有服务器端,也有客户端。

到目前为止,我们讨论的是服务器端,主要涉及:

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

客户端可以是:

  1. 网络浏览器,在这种情况下您不需要开发任何客户端应用程序
  2. 比如说,适用于 Windows Phone 的 Silverlight 应用程序
  3. 适用于 Android 手机的 Android 应用程序
  4. 如此等等。

决定这个“客户端应用程序”将做什么。例如,在你的情况下:

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

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

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