2011-03-23 58 views
0

我正在研究設計一個可以在多個平臺上運行的應用程序(即windows,macintosh,android,iphone),但它們都與在一臺中央服務器上存儲和處理的數據交互。設計用於處理平臺獨立數據的C#服務器?

基本上: 服務器託管着全球的狀態 - 包括活動客戶端,它們在世界中的實體以及從該實體的角度渲染世界的規則。 客戶端持有對該實體的引用,並向服務器發送請求以更新其狀態並根據其實體檢索呈現。

我最強烈的語言是C#,所以我寧願寫這個服務器。

我知道我需要開發自己的命令語法,可以由服務器解釋並且對所有客戶端都是通用的。我不知道的是關於編碼服務器的實際實現的很多內容,只是關於必要的高級概念。

.Net套接字API是否可以與非.Net套接字客戶端一起使用?這甚至是一個有效的問題嗎?

基本上我想知道如何以結構化的方式發送和接收數據,但是一種獨立於平臺的方式。

需要的請求中的數據的樣本會是這樣的

實體:[實體名稱]
的RequestType:[請求類型](比方說其動作命令)
操作類型:操作類型]
ActionProp1:[動作屬性]

實體:[實體名稱]
的RequestType:[請求類型](比方說請求呈現)
RenderDimX:[X維度的渲染]
RenderDimY:[渲染的Y尺寸]

我沒有真正策劃出來的請求的語法呢,所以不要批評:)

這正是我想要從客戶端發送到服務器的消息種類。

那麼,如何設置一個C#服務器來處理將發送這些類型的消息的客戶端?或者,我是否全力以赴?

謝謝!

回答

0

我結束了使用套接字。標準化的協議使其相當容易。

2

爲什麼不做基於REST的服務並通過這些服務獲得一切可用?作爲HTML/XML /等等,任何客戶端都應該能夠連接,查詢和使用發回的數據。對於聽起來像軟件作爲服務模型的套接字級別編程似乎有點多。

+0

圖像將作爲byte []在內存中生成,並且永遠不會保留到文件系統,這會影響REST的任何內容嗎? – FlyingStreudel 2011-03-23 14:32:28

+0

本質上,服務器的初始狀態是由一些設置的資源決定的,但從這一點開始,所有內容都存儲在內存中。目標是將其設置爲僅用於一個實例的臨時或即時服務器。 (如果這改變了什麼) – FlyingStreudel 2011-03-23 14:41:40

+0

我相信你可以序列化圖像並將它們提供爲base-64編碼的字符串。您將達到默認郵件大小的上限,因此請注意web.config中的限制。很容易改變,由於它引發的錯誤說明了文件大小需要增加的簡單和簡單。 – Josh 2011-03-23 14:42:11