2010-05-21 58 views
2

我已经用Winforms编写客户机/服务器应用程序六年了,但我还没有冒险进入网络空间(既不是ASP.NET也不是Web服务)。鉴于就业市场走向一段时间的方向和我基本好奇的事实,我想参与编写Web服务,但我不知道从哪里开始。WinForms开发者的Web服务入门?

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

为了记录在案,我的计划 - 现在 - 是使用WCF为我的Web服务的发展,但我愿意用其他.NET方法,如果这是不可取的。

我意识到这个问题是相当开放式的,因此可能会关闭,但这里有一些事情我想知道:

  1. 什么是有些事情在选择网络服务的类型时,需要考虑( REST等)我打算写?是否有可能(并且如果可行的话)从一种方法转移到另一种方法?
  2. Web服务可以以事件驱动的方式编写吗?正如我所说我是Winforms开发人员,所以我习惯于提高事件对象来响应。例如,如果我有两个客户端连接到我的服务,那么我是否有办法通过另一个客户的操作将信息“推”到其中一个客户端?如果这个可能,这是可取的,还是我只是没有正确思考它?
  3. 什么认证机制似乎最适合面向公众的服务?如果我打算让不同类型的操作系统和客户端连接到该服务,怎么样?是否有一个普遍接受的平台不可知的方法?
  4. 在认证的线,这是一些我应该做我自己(认证的管理会话等),或者这个东西应该在框架层面来处理,我只是准确定义应该是如何工作的?如果是这样的话,我该如何分辨请求者是谁认证的?

我开始了我的服务内,以书面的认证机制(存储在数据库中简单的用户名/密码组合和一个GUID键对应的会话表),只是要求关键,与每一个操作传递(除记录等当然),但我想确保我不会在这里重新发明轮子。但是,我也不想用大量的机器用户帐户混淆服务器,只是使用基本身份验证。我也觉得Digest(当然还有Windows)认证需要一台机器(或AD)用户帐户。

+0

如果你把它分解成单独的问题,你可能会得到更多的运气...... – 2010-06-08 08:53:13

回答

0

1 - > REST比SOAP快的(我认为)使用HTTP它nativly,但我不认为它是安全的。 SOAP是更重的重量,发送SOAP数据包报头左右,有效载荷等

2 - >使用可以使用asyncronous电话,但你可以像对待其他任何类,尽管没有任何状态。

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

4 - >请参阅3.虽然我确定必须有一些框架gubbins供您使用。如果每个人都在你的域名上,我敢肯定你可以配置IIS来验证这些用户。

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