WCF从理论到实践(14):WCF解决方案模板

正所谓磨刀不误砍柴工,虽然VS2008为我们提供了WCFServiceLibrary项目模板,但在实际开发的时候,我们通常更喜欢按照自己的方式来建立WCF项目,通常情况下,我们将服务契约(通常是接口)数据契约,消息契约等契约单独作为一个项目,而将服务的实现作为另外一个项目,除此之外,还包括WCF服务的宿主程序,服务代理项目,客户端程序.我按照这种方式,作了一个WCF解决方案的通用模板.项目列表如下:

项目名称

说明

Wcf.Contracts

契约项目,用于定义服务契约,数据契约,错误契约,消息契约等

Wcf.ServiceLib

服务实现项目

Wcf.Host

一个Console的服务的宿主

Wcf.WebServiceHost

一个IIS宿主

Wcf.Proxys

服务代理项目

Wcf.Client

客户端项目

 

在Console宿主中,有三种托管方式

  1. 适用于局域网的NetTcpBinding
  2. 和Xml Web Service相似的BasicHttpBinding
  3. 和WSE相似,且带有回调支持的WsDualHttpBinding

并且指定了解决方案的起始项目为多个启动项目为Wcf.Host 和 Wcf.Client,这更利于WCF项目的调试.

运行效果:


模板文件下载: /Files/jillzhang/WcfProjects.rar

作者:jillzhang
出处:http://jillzhang.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
标签: WCF
posted @ 2008-04-13 16:35 Robin Zhang 阅读(7481) 评论(32) 编辑 收藏

 回复 引用 查看   
#1楼 2008-04-13 16:46 秋千      
兄弟周末也不休息呀
 回复 引用 查看   
#2楼 2008-04-14 08:53 李战      
路过
 回复 引用 查看   
#3楼 2008-04-14 09:19 winzheng      
呵呵,好敬业啊
 回复 引用   
#4楼 2008-04-14 11:05 空 格[未注册用户]
总觉得你产量很惊人...
 回复 引用 查看   
#5楼[楼主] 2008-04-14 12:03 jillzhang      
@空 格
以后我会逐渐发慢速度,提高质量,:)

 回复 引用 查看   
#6楼 2008-04-14 17:38 陈旭85      
楼主的WPF系列怎么没了,一直在期待中!
 回复 引用 查看   
#7楼 2008-04-15 12:22 生鱼片      
支持
 回复 引用   
#8楼 2008-05-06 13:56 meko[未注册用户]
感谢楼主,学到了很多的东西
 回复 引用   
#9楼 2008-05-31 11:16 织诗_恒[未注册用户]
支持 支持 ~~~~
 回复 引用 查看   
#10楼 2008-06-18 15:17 flank.chen      
有质量,有速度更好。
 回复 引用   
#11楼 2008-06-27 08:36 Xboy[未注册用户]
Wcf.Proxys
如何生成?谢谢

 回复 引用   
#13楼 2008-06-27 10:30 Xboy[未注册用户]
楼主您真是大好人呀!!!
谢谢啦,我又有问题了...我想请你吃饭...
要是选MS MVP 我一定支持你.
我在用jillzhang WCF例子 改动了一下服务类,返回一个Mydata结构,可是为什么客户端收到不返回值呢? 详如下:

项目名称 说明
Wcf.Contracts 契约项目,用于定义服务契约,数据契约,错误契约,消息契约等
Wcf.ServiceLib 服务实现项目
Wcf.Host 一个Console的服务的宿主
Wcf.WebServiceHost 一个IIS宿主
Wcf.Proxys 服务代理项目
Wcf.Client 客户端项目
URL:http://www.cnblogs.com/jillzhang/archive/2008/04/13/1151342.html

原Wcf.ServiceLib 类为:

namespace Wcf.ServiceLib
{
public class Service:Contracts.IService
{
public MyData GetData(int filed)
{
Console.WriteLine("服务执行!");
return new Mydata();
}
}
}
我改为:
public MyData GetData(int filed)
{
Console.WriteLine("服务执行!");
MyData xxx = new MyData();
xxx.Data1 = 8888;
Console.WriteLine(xxx.Data1.ToString() );
return xxx; /// <---------------------xxx的值返回不到客户端
}

客户端为:
NetTcpBinding bind = new NetTcpBinding();
EndpointAddress address = new EndpointAddress("net.tcp://127.0.0.1:6547/Service");
Proxys.IService ws = new Proxys.ServiceClient(bind, address);
Wcf.Proxys.MyData myData = ws.GetData(10);
Console.WriteLine(myData.Data1.ToString()); <---------这里显示一直是0
Console.Read();


 回复 引用   
#14楼 2008-06-27 11:37 Xboy[未注册用户]
我知道了...重做代理.cs 就行了

谢谢

 回复 引用 查看   
#15楼[楼主] 2008-06-27 14:12 jillzhang      
@Xboy
:)
做服务,一定要记住,服务更改之后,大多数情况下要更改代理的。这在以后做服务与客户端交互的双方协作中是一个非常重要的问题,不可忽视

 回复 引用 查看   
#16楼 2009-02-24 13:37 咸鱼翻身      
重做代理咋做的啊?
谢谢

 回复 引用 查看   
#17楼 2009-02-24 13:53 咸鱼翻身      
这个也不算服务更改
只是函数体发生了变化吧

 回复 引用 查看   
#18楼 2009-02-24 14:14 咸鱼翻身      
您好,在使用这个WcfProjects时候发现一点小问
题?请问怎么生成本地代理类,谢谢。

 回复 引用   
#19楼 2009-03-19 18:35 windfly01[未注册用户]
请教楼主一个问题
net2008中+sp1,framework3.5+sp1新建web项目时候,找不到ajax-enabled wcf service项目模板,请问需要安装什么component?哪里有下载?

 回复 引用   
#20楼 2009-03-19 18:37 windfly01[未注册用户]
请教楼主一个问题
net2008中+sp1,framework3.5+sp1新建web项目时候,找不到ajax-enabled wcf service项目模板,请问需要安装什么component?哪里有下载?

期待您的指点

 回复 引用   
#21楼 2009-11-17 17:39 DK__[未注册用户]
博主你好,刚刚开始学习wcf,
请问以HOST为宿主发布的服务,能被silverlight调用吗?
我怎么试了很多方法都不成功.
希望博主帮忙来个DEMO.
谢谢.

28029360@163.com

 回复 引用   
#22楼 2009-12-01 11:32 joph[未注册用户]
大型应用项目,业务很复杂,服务很多。
前端就要产生大量的代理。感觉有点不舒服。

能不能通过一个代理,动态调用。
让写业务的人不需要很熟悉wcf。

 回复 引用 查看   
#23楼[楼主] 2009-12-02 18:22 Robin Zhang      
@joph
两种办法
1.后台集中成1个服务
2.前段做个代理适配器

 回复 引用   
#24楼 2009-12-04 16:53 Joph[未注册用户]
谢谢 Robin Zhang。

能不能给开一片文章讲讲,便于交流。

 回复 引用 查看   
#25楼 2010-09-13 15:15 破-恶      
先研究 研究 哈哈
 回复 引用 查看   
#26楼 2010-10-12 14:31 jdmei520      
好好向你学习
楼主,我用IIS作为宿主,第一次访问WCF服务比较慢,之后就快了,请问怎么优化,还是我的配置有误,楼主推荐用那种作为宿主呢?