刚学WCF,发表 一下自己的看法
WCF是一种基于SOA的架构建立,即理解 总是存在客户端和服务端,他们可以在同一个程序中,也可以分开。
我个人理解,一个Web客户端 等同于 一个WinForm客户端(或其他)。由于ASP.NET的限制只能使用HTTP绑定,即Web Services。那么可以借此,直接AJAX来应用这个。(值得说的是在VS2008中,提供了一个专门供AJAX的WCF服务)
至于你说的,API我的理解是和服务放在一个机器上,这样做的话,有个问题是很难理解那个Web是服务端,还是客户端。 这方面,你还是参考一下使用Web Serivces的系统,看看。
对于服务契约来说,没有什么,可以通过配置发布元数据,来获取信息,那个Svcutil也是通过这个元素据而生成的代理类,实际上,也可以动态的生成代理和使用。(不过就是有点复杂而已).
对于服务契约来讲,一旦发布,将不能更改,这个即是限制也是规则。
至于数据层来说,这个虽然是逻辑上的,但实质是类库,没有实体的。所以,都是编译到服务中的。(也许有特例,但我目前了解到的都是这个样子)
对于部署,也是一个大话题,有很多总方式,不过,一般这种服务,都是可以分开部署,然后可以设置服务矩阵,来应用负载平衡。
一般,轻量的,可以部署在同一个机器上,而大量的话,可以通过分开部署,来提高吞吐量。(可以看看Team Foundation Server 这个使用 Web Services,并支持单机部署和多机部署)
对于在同一个机器上的客户端,可以考虑,使用不同的绑定,比如:对公网使用HTTP,对内网使用TCP等。 这样就可以获得很好的效率。但机制还是一样的。
当然,这些都给通过配置实现,这是WCF的提点, 可以通过修改配置文件,更改使用的协议。
至于楼主说的新服务契约,可以看看SOA的说法,在SOA中,允许为2个服务包装生成新的服务。因此,你是否建立新的服务契约,看你的需求了。
提问者对于答案的评价:真诚感谢两位的回答.有机会请多交流.再次感谢.