2011-06-07 75 views
5

我正在努力爲我的多設備項目組成一個「核心」。多設備架構

該項目是關於一個Web應用程序,通過Facebook登錄認證用戶,然後公開他們可以做的一組新操作 - 例如。獲取所有記錄在關係到他們的Facebook ID數據庫,多數民衆贊成等

核心應該由以下設備來理解:

  • PC
  • IPhone
  • 的Android
  • 的Windows Phone 7

現在你將如何彌補核心?

  1. 你讓一個WCF服務, 返回JSON?

  2. 你會讓它成爲一堆 返回JSON的控制器?

  3. 如何確保在查詢 核心時 用戶是誰?我應該每次傳遞由facebook產生的 accessToken嗎?

正如你可能已經注意到的,我完全不知道如何做到這一點。

在此先感謝。

+1

[如何看待多設備架構的統一設計?](http://izlooite.blogspot.com/2011/07/how-to-think-unified-design-for-multi.html) – 2011-07-06 18:13:12

回答

4

不知道如果我正確地理解你的問題,但是...

首先,你必須定義,或可能決定,什麼是「核心」是什麼?或者核心應該是是什麼 - Core將執行的功能是什麼。理想情況下,當我們說Core時,它實質上意味着執行基本或原子操作的圖層

通過該Core,您可以派生設備包裝器(IPhone,PC等),例如構建查詢以發送到核心。

您可以使用WCF數據服務構成數據層。您的核心可以執行業務操作/等,並與數據服務進行通信。

舉例來說,我立刻能想到的是:

  1. 核心,執行核心業務 - 爲isntance交談數據層
  2. DeviceWrapperDeviceAndriod,DeviceIPhone,DeviceWeb等)包裝不同的設備。例如,Factory/Builder模式的混合。考慮Device s的工廠,以及針對各種視圖的Builder。
  3. TextRenderer基於設備設置呈現文本。

的一種方法是,讓我們決定:

Core,將是一個 「圖書館」,將執行基本操作:

  • 認證
  • 授權
  • 選擇記錄
  • 執行操作1
  • 執行操作2

因此,

  • STEP 1:寫控制器,其將提供認證/授權;例如,撥打Core.Authenticate()Authorize();

  • STEP 2:基於該user agent呼叫ICore.RenderView(agentType),這可能會返回視圖/ HTML中呈現。

用戶可能會執行一個操作,您的Controller可能會調用Core.PerformAction();例如,這又可以將鏈接返回到被重定向的頁面。

--UPDATED--

此更新響應您的評論。

現在,在這個(你的評論)的情況下,你正在談論客戶端結束。

讓我們澄清一下。有服務器和有客戶端雙方。

到現在爲止,我們都在談論服務器一面,這主要涉及:

  1. 如何從不同的用戶代理請求將由服務器進行處理。
  2. 文本如何針對不同的設備呈現。

客戶端可以是:

  1. Web瀏覽器,在這種情況下你不需要任何客戶端應用程序被開發
  2. A,可以說,對Silverlight應用程序Windows Phone
  3. 適用於Android手機的Android應用程序
  4. 等等等等。

決定這個「客戶端應用程序」會做什麼。例如,在你的情況下:

  • 用戶將通過fb id登錄。
  • 用戶應能夠執行某些操作。

請注意,您可能要考慮智能客戶端(使用web服務,而不是asp.net網頁)。

此外,WCF中的type hinting可能會在大型集合的JSON響應中添加大量不必要的開銷。因此,如果您甚至遠程相信可能在某個時間點需要多種類型的端點(SOAP等),那麼WCF就是要走的路。

+0

看起來像我錯過了一篇很重要的文章。 iPhone,Android和WP7應該是針對特定移動平臺的應用程序。所以基本上我想爲每個移動平臺製作一個應用程序,另一個用於個人電腦。我的想法是首先組成一堆MVC控制器,它將按我的需要做,然後以JSON的形式返回結果,以便每個應用都可以根據需要進行格式化。 – ebb 2011-06-07 10:48:49

+0

請參閱我的編輯以迴應您的評論。 – 2011-06-08 05:54:41