WinForms开发人员的Web服务入门?

时间:2010-05-21 15:17:39

标签: .net wcf web-services authentication

我用Winforms编写客户端/服务器应用程序已有六年了,但我还没有进入Web领域(ASP.NET和Web服务)。鉴于就业市场已走过一段时间的方向以及我有一个基本的好奇心,我想参与编写网络服务,但我不知道从哪里开始。

我已经阅读了各种选项(XML / SOAP与JSON,REST vs ......好吧,实际上我不知道它叫什么,等等),但我不确定是什么类型的标准在决定使用其中一个时发挥作用。显然,我想利用我拥有的工具(Visual Studio,.NET框架等),而不是将自己束缚到仅针对特定受众(即以难以消费的方式编写服务)例如,来自Windows Mobile / Android / iPhone客户端。

为了记录,我的计划 - 目前 - 是使用WCF进行我的Web服务开发,但是如果可取的话,我愿意使用另一种.NET方法。

我意识到这个问题非常开放,所以它可能会被关闭,但这里有一些我想知道的事情:

  1. 在选择我打算写的Web服务类型(REST等)时需要考虑哪些事项?从一种方法转向另一种方式是否有可能(如果可行的话)?
  2. Web服务可以用事件驱动的方式编写吗?正如我所说我是一个Winforms开发人员,所以我习惯于提出事件让我做出反应。例如,如果我有两个客户端连接到我的服务,有没有办法让我将信息“推送”到其中一个由于另一个的操作?如果 可能,这是可取的还是我没有正确考虑它?
  3. 哪些认证机制似乎最适合面向公众的服务?如果我打算让不同类型的操作系统和客户连接到服务怎么办?是否存在普遍接受的平台无关的方法?
  4. 在身份验证方面,这是我自己应该做的事情(对管理会话进行身份验证等),还是应该在框架级别处理这个问题,我只是确定它应该如何工作?如果是这种情况,我该如何判断请求者已将自己认证为谁?
  5. 我开始在我的服务中编写一个身份验证机制(存储在数据库中的简单用户名/密码组合以及带有GUID密钥的相应会话表),并且只需要在每次操作时传递该密钥(除了登录之外)当然),但我想确保我不是在这里重新发明轮子。但是,我也不想使用一堆机器用户帐户来混乱使用基本身份验证。我也认为Digest(当然还有Windows)身份验证需要一台机器(或AD)用户帐户。

1 个答案:

答案 0 :(得分:0)

1 - > REST比SOAP更快(我认为)它使用HTTP本身,但我不认为它是安全的。 SOAP更重,在头,有效负载等周围发送SOAP数据包。

2 - >使用可以使用异步调用,但您可以像任何其他类一样对待它们,尽管没有任何状态。

3 - >由于我们面向公众的服务的性质,我们拥有自己的自定义安全Web服务,并将用户信任对象传递给每个方法,以确保用户经过身份验证,并具有权限。 (这是一个相当简单的解决方案,但是一个项目都是自己的)

4 - >请参阅3.虽然我确信必须有一些框架gubbins供您使用。如果每个人都在您的域中,我非常确定您可以将IIS配置为仅对这些用户进行身份验证。

对不起,这不是一个大规模详细的答案,就像我说的,如果你把问题分成4个部分,你可能会得到更好的答案。