【发布时间】:2010-05-21 15:17:39
【问题描述】:
我已经使用 Winforms 编写客户端/服务器应用程序大约六年了,但我还没有涉足 Web 领域(ASP.NET 和 Web 服务都没有)。考虑到就业市场的发展方向已经有一段时间了,而且我有一个基本的好奇心,我想参与编写 Web 服务,但我不知道从哪里开始。
我已经阅读了各种选项(XML/SOAP 与 JSON,REST 与...嗯,实际上我不知道它叫什么,等等),但我不确定是什么样的标准在决定使用其中一个时发挥作用。显然,我想利用我拥有的工具(Visual Studio、.NET 框架等),而不是束缚自己只针对特定的受众(即以难以使用的方式编写服务)例如,来自 Windows Mobile/Android/iPhone 客户端)。
郑重声明,我的计划——目前——是使用 WCF 进行 Web 服务开发,但如果可以的话,我愿意使用另一种 .NET 方法。
我意识到这个问题非常开放,所以它可能会被关闭,但这里有一些我想知道的事情:
- 在选择我打算编写的 Web 服务类型(REST 等)时需要考虑哪些事项?从一种方法转向另一种方法是否有可能(如果有,是否可行)?
- 能否以事件驱动的方式编写 Web 服务?正如我所说,我是一名 Winforms 开发人员,所以我习惯于对象引发事件让我做出反应。例如,如果我有两个客户端连接到我的服务,有没有办法让我将信息“推送”到其中一个作为另一个操作的结果?如果这是可能的,这是可取的还是我没有正确考虑它?
- 哪种身份验证机制似乎最适合面向公众的服务?如果我打算让不同类型的操作系统和客户端连接到该服务怎么办?是否存在普遍接受的与平台无关的方法?
- 在身份验证行中,这是我应该自己做的事情(对管理会话进行身份验证等)还是应该在框架级别处理,我只是准确地定义它应该如何工作?如果是这种情况,我如何知道请求者的身份验证是谁?
我开始在我的服务中编写身份验证机制(存储在数据库中的简单用户名/密码组合以及带有 GUID 键的相应会话表),并且只要求每次操作(除了登录之外)都传递该键当然),但我想确保我没有在这里重新发明轮子。但是,我也不想仅仅为了使用基本身份验证而用一堆机器用户帐户弄乱服务器。我还认为 Digest(当然还有 Windows)身份验证需要机器(或 AD)用户帐户。
【问题讨论】:
-
如果你把它分解成单独的问题,你可能会得到更多的运气......
标签: .net wcf web-services authentication