c# - 架构设计帮助

标签 c# iphone wcf sql-server-2008 windows-server-2008

我正在寻找有关我当前项目架构的一些意见。共有三个组件:服务器、桌面和移动设备。

我有两个目标:

1) 从桌面(在 windows XP/Vista/7 和 Mac OS X 上运行的多平台客户端应用程序)向服务器(Windows Server 2008、IIS 7)发送数据(大约不超过 100 KB 的文本) , WCF RESTful 服务) 保存在数据库 (Sql Server) 中。这些服务需要可扩展,因为桌面设备的数量和它们发送数据的频率是未知的。

2) 从数据库 (Sql Server) 检索数据并发送到移动设备(Iphone 和 Android 应用程序。消息大小不超过 100 KB 的文本)的服务。服务需要可扩展,因为移动设备的数量和它们连接的频率是未知的。

我提出的解决方案:

服务器端(Sql Server 和 Windows Server 2008): 我正在寻找一个 WCF RESTful JSON 服务来与桌面应用程序和移动应用程序进行通信。我喜欢 WCF,因为我最精通 C#,有一些实现 WCF 的经验,在做了一些研究之后,似乎所有用于平台(Windows XP/Vista/7 和 Mac OS X)的技术都可以轻松地与 WCF RESTful 服务通信。

  • 在这种情况下,WCF 服务是否存在任何高级基本问题?
  • 我只在 Windows Server 2003 机器上实现了 WCF,每 15 分钟连接约 800 台设备。该服务器是在专用网络上运行的内部物理服务器。我需要托管和扩展此解决方案。对托管 Windows Server 2008 有什么建议吗?有没有更好的技术来托管服务? (我不太熟悉云的工作原理)

服务将从 SQL 服务器保存和检索数据。我想使用 LINQ to SQL 作为我的数据访问层。据我了解,与 SQL Server 相关的许可费用很高,因此我现在可能需要使用 SQL Server Express。

  • 我更愿意将 WCF 服务和数据库分开托管(2 台不同的机器)。对托管 sql server(或 express)有什么建议吗?是否有可以更好地扩展我的数据库的托管服务?将它们保存在 2 台 diff 机器上是否有意义?

桌面(客户端) 我需要为 Windows XP/Vista/7 和 Mac OS X 开发。我计划编写一个 .net 应用程序以在 Windows 机器上运行。如果我要编写(和学习 :P)XCode 或尝试 mono,我仍然悬而未决。有什么跨平台的想法吗?

  • 在让桌面应用程序与我的 WCF RESTful 服务对话时,我是否应该会遇到任何基本问题?

移动应用 我需要开发 iPhone 和 Android。有许多使用 Objective C 和 Android SDK 进行 WCF RESTful 服务调用的示例。我正在考虑尝试跨平台(即 Appcelerator)。从高层次上看,这些移动跨平台似乎构建了一个 Java 脚本层,可以同时在 iPhone 和 Android 上运行!

  • 有没有想过使用跨平台技术来编写一个在 iPhone 和 Android 上运行的移动应用程序?

  • 在 javascript 中调用 WCF RESTful 服务有任何基本问题吗?

抱歉,帖子有点长。我从未设计过这种规模的解决方案。感谢所有反馈。

谢谢!

最佳答案

由于您显然想使用 Microsoft 技术 - 关于 Mono 的建议可能对您有意义,并且肯定会让事情变得更容易。

但是我认为您可能会发现您折衷了 Mac 和 iPhone 用户的用户体验元素,这并不理想,因为这些用户往往对出色的用户体验抱有最高期望。

我知道我们并不生活在理想世界中,但如果我们做到了,您会为每个平台开发一个单独的客户端 - 针对每个平台的需求进行优化。除非您的应用程序正在执行大量数据操作,否则数据层现在通过您的 JSON 接口(interface)被抽象到服务器,因此您不会从跨实现共享数据对象中获益太多。

您似乎是在一个小团队(您自己?)中实现该项目,那么我建议您考虑使用通过 JSON 与服务器通信的 HTML javascript 实现 Web 解决方案。

另一种选择是在 windows 和 mac 上使用 flex/air 客户端,在 android 上使用 flash 和 Adob​​e 的解决方案将 flex/air 编译成 iPhone 代码。

祝你好运。

关于c# - 架构设计帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2172323/

相关文章:

ios - 应用程序被拒绝 - iPhone 应用程序还必须在 iPhone 分辨率和 2X iPhone 3GS 分辨率下未经修改地在 iPad 上运行

iphone - 如何正确使用Oauth

c# - C# 中的机器学习用于预测

C# 查找文件名中的特殊字符

c# - 非空接口(interface)代码契约的实现——default(T) vs throw NotImplementedException

ios - iOS 中的手机号码验证问题

c# - 将 Miniprofiler 集成到控制台 WCF 自宿主

wcf - 如何修复在 Amazon EC2 上运行的 .Net WCF 服务的 'Access Denied' 错误?

c# - WCF 协议(protocol)异常 : Bad Request 400 (related to http message size)

c# - 在 Sitecore 页面编辑器中验证