简单的WCF实现

     我注册CNBlogs已经一年了,这是我的第一篇Blog,想要通过Blog写出自己的想法,得到大家的建议和批评来提高自己。所以请大家拍砖啊。

什么是WCF

          WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。

          WCF能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。

          WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net RemotingASMXWSEMSMQ。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于Internet

          WCF可以运行在ASP.NETEXEWPFWindows FormsNT ServiceCOM+上面。

          WCF支持的协议包括TCPHTTP,跨进程以及自定义,安全模式则包括SAML KerberosX509,用户/密码,自定义等多种标准与模式。

     也就是说,在WCF框架下,开发分布式系统变得容易了,微软将所有与此相关的技术要素都包含在内。

WCF的优势:

  统一性:

          WCF是对于ASMX.Net RemotingEnterprise ServiceWSEMSMQ等技术的整合。

  互操作性:

     于WCF最基本的通信机制是SOAP,这就保证了系统之间的互操作性,即使是运行不同的上下文中。

     可以跨进程、跨机器甚至于跨平台的通信,只要支持标准的Web Service,例如J2EE应用服务器(如WebSphereWebLogic)。应用程序可以运行在Windows操作系统下,也可以运行在其他的操作系统,如Sun SolarisHP UnixLinux等等。

  安全与可信赖:

          WS-SecurityWS-TrustWS-SecureConversation均被添加到SOAP消息中,以用于用户认证,数据完整性验证,数据隐私等多种安全因素。

  兼容性:

          WCF充分的考虑到了与旧有系统的兼容性。安装WCF并不会影响原有的技术如ASMX.Net Remoting 

WCF简单实现:

     WCF管理的是服务器端与客户端的通信,因此要完成基本结构需要构建服务器端和客户端。

     1.首先构建WCF服务端,包括Host(宿主)-HostMain,契约(接口)-IWCFService,实现-WCFService

     1.1 编写接口IWCFService,在接口中标注[ServiceContract](类)和[OperationContract]属性(方法)。

 

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;

namespace WCFHelloWorld
{
    [ServiceContract]
    
interface IWCFService
    {
        [OperationContract]
        
void SayHello();
    }
}

    

     1.2 编写WCFService类继承IWCFService,由于已经在接口中标注属性,所以在这里就不用写了

 

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections.Generic;
using System.Text;

namespace WCFHelloWorld
{
    
class WCFService: IWCFService
    {
        
#region IWCFService 成员

        
public void SayHello()
        {
            Console.WriteLine(
"Hello ,You!");
        }

        
#endregion
    }
}

 

          1.3 一个WCFService必须要有Host(宿主)作为他的运行环境,ASP.netWinFormcmd程序都可以成为宿主,这里的示例我们用控制台应用程序来作为Host

 

 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections.Generic;
using System.Text;
using System.ServiceModel;

namespace WCFHelloWorld
{
    
public  class HostMain
    {
        
static void Main(string[] args)
        {
            
//创建一个Host对象
            ServiceHost host = new ServiceHost(typeof(WCFService), new Uri("http://localhost:8080/HelloToYou"));
            host.AddServiceEndpoint(
typeof(IWCFService), new BasicHttpBinding(), "Svc");
            host.Open();
            Console.WriteLine(
"I'am Here.");
            Console.ReadKey();
            host.Close();
        }
    }
}

 

     

          1.4  启动调试,成功,将localhost:8080/HelloToYou输入浏览器地址,出错提示当前已禁用此服务的元数据发布

 

     

     1.5 解决方法:将生成页面最下面的示例配置文件代码拷贝后,项目新建配置文件App.config,将代码拷贝到App.config<configuration>节点下。修改<services>节点下service name="MyNamespace.MyServiceType"service name="WCFHelloWorld.WCFService",保持behaviorConfiguration属性与<behaviors>节点下的behaviorConfiguration属性的内容相同,再次运行

 

     1.6 成功。

     2.构建WCF客户端,包括Client对象、服务器代理类

     2.1 首先启动调试服务器端。

     2.2 C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin下找到svcutil.exe

     2.3运行cmd,输入" CD  C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin "

            2.4   输入 "svcutil.exe http://localhost:8080/HelloToYou"

            2.5 Cmd提示在C:"Program Files"Microsoft SDKs"Windows"v6.0A"Bin下生成两个文件

 

          2.6 创建WCFClient项目,将之前生成的两个文件包含到WCFClient项目中,重命名output.configapp.config。

          2.7 添加WCFClientApp.cs

 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
using System;
using System.Collections.Generic;
using System.Text;

namespace WCFClient
{
    
public class WCFClientApp
    {
        
static void Main(string[] args)
        {
            
using( WCFServiceClient clientProxy = new WCFServiceClient() )
            {
                    clientProxy.SayHello();
            }
            Console.ReadKey();
        }
    }
}

 

          编译成功。

          2.8 运行服务器端,然后运行客户端。

 

 

     到这里,我们就创建了一个简单的WCF服务。

     感谢《 Windows Communication Foundation 入门 》这篇文章。

转载于:https://www.cnblogs.com/gy02564107/archive/2009/03/18/1415658.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值