• jquery 直接调用 wcf,面向服务的SOA架构 ( 第二天)


       在前面的基础上,我们来开始第二天编写 客户端 的东西,不过讲之前,我想告诉大家的是:

        这个简单的SOA的架构,我们直接通过wcf 调用到 后台的方法, 而中间没有使用 C#代码,大大减少我们客户端的代码,

        同时比传统的三层架构 更加灵活,更加方便。

       别人肯定会说?前台 完全不使用C#代码也能调用到 后台的服务,这在以前 是不可能 想象的。但是现在我实现了它!!!

       大家来看看吧!

        第一步:

            我们要导添加 server的引用(重要),接下来我们要修改我们的配置文件了

         如下图:

           

    <?xml version="1.0" encoding="utf-8"?>
    
    <!--
      有关如何配置 ASP.NET 应用程序的详细信息,请访问
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    
    <configuration>
        <system.web>
          <compilation debug="true" targetFramework="4.5" />
          <httpRuntime targetFramework="4.5" />
        
        </system.web>
      
           <connectionStrings>
             <add name="vbk" connectionString="Data Source=192.168.2.227;database=Vbk;uid=sa;pwd=vosung"/>
           </connectionStrings>
        <system.serviceModel>
            <behaviors>
              <serviceBehaviors>
                <behavior name="WCFService.WCFServiceBehavior">
              <serviceMetadata httpGetEnabled="true" />
              <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
              </serviceBehaviors>
              
                <endpointBehaviors>
                    <behavior name="Client.WebServiceAspNetAjaxBehavior">
                      <webHttp />
                 
          
                    </behavior>
              
                </endpointBehaviors>
            </behaviors>
            <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
                multipleSiteBindingsEnabled="true" />
            <services>
                <service name="Server.webService" behaviorConfiguration="WCFService.WCFServiceBehavior">
                    <endpoint address="operate" behaviorConfiguration="Client.WebServiceAspNetAjaxBehavior"
                        binding="webHttpBinding" contract="Server.IService" />
                <endpoint address="mex"  binding="mexHttpBinding" contract="IMetadataExchange" />
                </service>
            </services>
        </system.serviceModel>
    </configuration>
    

     可能看到我的博客的人是对WCF完全不懂的人,但是我现在有必要对我的配置进行说明:

      1. 看到  这个节点了吗?<system.serviceModel>,没错 ,这里面的所有配置都是WCF的所有配置。

          大家在仔细看,在这个节点下,有三个比较大的 子节点   <behaviors>(可有可无),  <services>(必须有),

          其实还有一个是<binding>(可有可无),这里我们可能没有看到。

    2.大家来重点看下 服务的配置:

            <services>    --服务配置的开始
                 <service  name="Server.webService"     --(必须配置)Server表示 命名空间,webService表示对应的类

             (而这个类必须带有 [ServiceContract]属性,或者 实现 带有[ServiceContract]属性的接口)

          behaviorConfiguration="WCFService.WCFServiceBehavior"  --这个可以在行为中配置看到

              >
                      <endpoint address="operate"       -- 表示终结点配置(必须配置),name 表示终结点的名字,用来区分不同的终结点

            behaviorConfiguration="Client.WebServiceAspNetAjaxBehavior"       --这个可以在行为配置中可以找到
                        binding="webHttpBinding"      --(必须配置) 这个是绑定,如果使用web 访问,必须要 使用webHttpBinding 方法的绑定

                    contract="Server.IService" />    ---(必须配置) 契约,其实是配置  接口的位置, 也是  命名空间.接口名
                <endpoint address="mex"        ---表示元数据, 如果不配置,访问时将不能 得到数据源 ,元数据的所有配置 都是 这个写的

           binding="mexHttpBinding"           --绑定根据前面的绑定选择

        contract="IMetadataExchange" />     ---必须的,只能写IMetadataExchange
                </service>
            </services>

    绑定看完之后 ,我们来看待行为 配置:

       <behaviors>    --行为配置的开始
              <serviceBehaviors>   --开始配置服务的行为
                <behavior name="WCFService.WCFServiceBehavior">--

          配置一个服务行为,这里的行为可以在  <service >通过behaviorConfiguration 中被调用,请看上面的服务的行为配置
              <serviceMetadata httpGetEnabled="true" />-- 表示元数据,表示我们可以直接通过访问地址得到得到 数据源
              <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
              </serviceBehaviors>-- 服务行为配置介绍
              
                <endpointBehaviors>    --终结点 行为配置的开始
                    <behavior name="Client.WebServiceAspNetAjaxBehavior">  --与上面的的终结点行为一致
                      <webHttp />                   --这个表示允许 通过 web  的HTTP的请求进行访问,不过不配置则不能访问              
                    </behavior>          
                </endpointBehaviors>         --终结点行为配置结束
            </behaviors>

    到这里位置,wcf 服务配置 就只差 最后一步了,我们打开WebService.svc,我们可以看到

    修改如下Service="Server.webService"  这里跟你刚才配置的 <Service> 的 name 属性一致(重要)

    同时去掉 codebehind ,结果如下:

      <%@ ServiceHost Language="C#" Debug="true" Service="Server.webService" %>

    然后 我们来 直接通过 浏览器直接浏览WebService.svc  ,

     表示已经成功了,下来我们来分别访问

    localhost:30543/WebService.svc/operate  (如果出现 没有找到终结点表示成功)

    localhost:30543/WebService.svc/operate/select(如果出现没有 找到此方法 也表示 配置都是成功的)

    VS2012版本源码下载:

    http://files.cnblogs.com/files/liujing379069296/Vs2012Client.rar

    vs2010 源码下载

    http://files.cnblogs.com/files/liujing379069296/VS2010Client.rar 

      

  • 相关阅读:
    献给需要购买 阿里云产品的朋友
    当硬件没问题的时候,提升电脑运行速度
    IIS网页GZIP压缩
    前端优化-如何计算白屏和首屏时间
    Javascript 思维导图
    总结get和post区别---面试用
    点击切换样式、以及点击自身移除样式效果
    各行换色
    计算器
    无缝轮播图
  • 原文地址:https://www.cnblogs.com/liujing379069296/p/4425820.html
Copyright © 2020-2023  润新知