[转] 传说中的WCF
这个解决方案中包含两个项目,一个叫Server,另一个叫Client,天生一对。
1、启动VS 2010,推荐用2010以上版本(2012 RC版也行),因为越高版本越好用,最好Express的,不要钱,我天天用。
2、新建两个控制台项目,不用我教你了吧,建完后,你的VS应该和下图所示的差不多。
3、在“解决方案资源管理器”上,找到解决方案节点,在其上右击,从弹出的菜单中选择“属性”。
4、在弹出的窗口,在“启动项目”中选择“当前选定的内容”,如下图所示。
这样做,是为了在启动调试时更方便,你可以不设置。呵呵。
5、选中“Server”项目,不要弄错了,一般来说,我们是先完成服务器端。
在Server项目的“引用”上右击,从快捷菜单中选择“添加引用...”,在随后打开的窗口中,确认选定.NET选项卡,在列表中找到System.ServiceModel,然后,单击确定,这个不用我介绍了。
6、打开Server项目的Program.cs文件,首先,要引入几个可能要用到的命名空间。
- using System.ServiceModel;
- using System.ServiceModel.Description;
7、定义一个服务协定,其中包含一个TestMethod方法,服务协定是一个接口。
- [ServiceContract]
- public interface IService
- {
- [OperationContract]
- string TestMethod();
- }
我们看到,服务协定是一个接口,但附加了ServiceContractAttribute特性,而接口中的方法也附加了OperationContractAttribute特性,作为服务操作,可以供客户端程序调用,如果不加OperationContractAttribute特性,就不向客户端公开该方法。
8、定义一个类,并实现上面定义的服务协定。
- public class MyService : IService
- {
- public string TestMethod()
- {
- return "信春哥,考本科。";
- }
- }
9、在Main入口点中定义服务器相关的参数,并启动服务。
- static void Main(string[] args)
- {
- // 基址URI,必须,HTTP方案
- Uri baseURI = new Uri("http://localhost:8008/Service");
- using (ServiceHost host = new ServiceHost(typeof(MyService),baseURI))
- {
- // 向服务器添终结点
- WSHttpBinding binding = new WSHttpBinding();
- // 这里不需要安全验证
- binding.Security.Mode = SecurityMode.None;
- host.AddServiceEndpoint(typeof(IService), binding, "my");
- // 为了能让VS生成客户端代码,即WSDL文档,故要添加以下行为
- ServiceMetadataBehavior mdBehavior = new ServiceMetadataBehavior()
- {
- HttpGetEnabled = true
- };
- host.Description.Behaviors.Add(mdBehavior);
- //如果服务顺利启动,则提示,处理Opened事件
- host.Opened += (sender, e) => Console.WriteLine("服务已启动。");
- // 启动服务器
- try
- {
- host.Open();
- }
- catch (Exception ex)
- {
- Console.WriteLine(ex.Message);
- }
- // 为了让程序不往下执行而结束,故加上这句
- Console.ReadKey();
- // 关闭服务器
- host.Close();
- }
- }
这时候,先确认Server项目是当前选定项目,然后运行,如果成功,你会看到如下图所示的内容。
好了,服务器端我们就完成了,下面轮到客户端。
这个就简单了,先找到Server所在的 \bin\debug 目录,运行Server.exe,确保服务成功启动。
选定Client项目,在“引用”上右击,从快捷菜单中选择“添加服务引用”
在弹出的窗口中输入刚才定义的基址,即http://localhost:8008/Service,记住,一定要用基址,就是创建ServiceHost实例时用的那个,不要用终结点地址。
单击“前往”按钮,服务读取正确后,输入你要的命名空间名字,单击确定。
这时候,我们就可以在客户端写代码了,
- static void Main(string[] args)
- {
- WS.ServiceClient client = new WS.ServiceClient();
- Console.WriteLine(client.TestMethod());
- Console.ReadKey();
- }
运行一下,我们的第一个WCF应用程序就完成了。
相关文章
- VIsual Studio2017中创建WCF服务时找不到问题
- .NET/ASP.NET/C#/WCF/SQL Server/My SQL/Java/JSP/JDBC/Spring/Spring MVC/PHP/Python/Ruby/Shell/Agile/CSS/HTML/HTTP/Unix/Linux大量PDF书籍/电子书籍下载, Effective Java 下载详解编程语言
- 多用途的Linux下的WCF应用(linuxwcf)
- 让WCF支持Linux环境(wcflinux)
- 微软开源了WCF框架
- Nginx搭建高可用,高并发的WCF集群教程
- 使用 WCF 和 Oracle 搭建企业数据服务的实现(wcf oracle)
- WCF与Redis的联系挖掘共赢的可能性(wcf和redis的联系)
- jquery调用wcf并展示出数据的方法
- C#一个WCF简单实例
- 在IIS8服务器添加WCF服务支持的方法
- WinForm窗体调用WCF服务窗体卡死问题
- IIS8中添加WCF支持几种方法小结[图文]
- 关于.NET/C#/WCF/WPF打造IP网络智能视频监控系统的介绍
- 解析Silverlight调用WCF/Rest异常的解决方法
- IIS7配置大全(ASP.NET2.0,WCF,ASP.NETMVC,php)
- jQueryajax调用WCF服务实例
- 在WCF数据访问中使用缓存提高Winform字段中文显示速度的方法