wcf webservice服务

1.建一个类库Constracts,在内写接口:

   [ServiceContract(Name = "USService", Namespace = "http://www.new.net/")]    
    public interface IUSInfoServices
    {       
        //获取高管信息
        [OperationContract]
        string GetLeaderInfo(string symbol);
    }

2.再建一个类库Services,在里面写实现接口的方法:

    1)添加引用,添加Constracts的引用

    2)实现接口:

          /// <summary>
         /// 获取高管信息
         /// </summary>
         /// <param name="code">公司代码</param>
         /// <returns>返回一个json对象</returns>
        public string GetLeaderInfo(string symbol)
        {
            //获取高管信息的路径        
            XElement ele = XElement.Load("path.xml");
            string path = ele.Element("leader").Value;

            //首次读取缓存
            string jsoncache = HttpRuntime.Cache.Get(symbol) as string;
            if (jsoncache == null || jsoncache.Equals(""))
            {
                //读取数据
                XmlDocument doc = new XmlDocument();
                doc.Load(path);

                string strSearch = "root/高管信息[@代码='" + symbol + "']";

                XmlNode searchNode = doc.SelectSingleNode(strSearch);
                XmlElement element = (XmlElement)searchNode;
                xmltoJson json = new xmltoJson();
                jsoncache = json.XmlToJSON(element);
                //加缓存
                HttpRuntime.Cache.Insert(symbol, jsoncache, null, DateTime.UtcNow.AddMinutes(2), System.Web.Caching.Cache.NoSlidingExpiration);
             }
             return jsoncache;
         }

 3.然后再建一个控制台应用程序Hosting:

   1).添加引用,添加Constracts,services的引用

   2).添加命名空间System.ServiceModel;

   3). 在 static void Main(string[] args)
           {
             using (ServiceHost host = new ServiceHost(typeof(USInfoServices)))
             {
                host.Opened += delegate
                {
                    Console.WriteLine("USInfoServices已经启动,按任意键终止服务!");
                };
                host.Open();
                Console.Read();
               
             }
         }

   4).在Hosting中添加一个配置文件App.config:

       <?xml version="1.0"?>
         <configuration>
          <system.serviceModel>
            <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/><!--启用asp.net兼容模式-->
              <behaviors>
                 <serviceBehaviors>
                   <behavior name="metadataBehavior">
                       <serviceMetadata httpGetEnabled="true" />
                       <serviceDebug includeExceptionDetailInFaults="true"/>
                   </behavior>  
                </serviceBehaviors> 
             </behaviors>        
             <services>
                   <service behaviorConfiguration="metadataBehavior" name="Genesysinfo.USServices.Services.USInfoServices">
                     <endpoint address="" binding="basicHttpBinding" contract="Genesysinfo.USServices.Contracts.IUSInfoServices" />
                <endpoint address="" binding="netTcpBinding" contract="Genesysinfo.USServices.Contracts.IUSInfoServices" />
               <host>
                  <baseAddresses>
                     <add baseAddress="http://127.0.0.1:8181/usinfoservices" />
                      <add baseAddress="net.tcp://127.0.0.1:8000/usinfoservices" />
                  </baseAddresses>
                 </host>
                <endpoint address="mex" binding="mexTcpBinding" contract="IMetadataExchange" />
            </service> 
           </services> 
         </system.serviceModel>
       </configuration>

4.再添加一个控制台应用程序Client:

   1).运行Hosting.exe。如果权限过低,就用以管理员的身份打开。

   2).点击右键,添加服务器引用。地址就是app.config中的地址(即http://127.0.0.1:8181/usinfoservices).

   3).在

        static void Main(string[] args)
        {
         
            using (USServiceClient usserviceinfo = new USServiceClient("BasicHttpBinding_USService"))
            {

               string leader= usserviceinfo.GetLeaderInfo("A");

               Console.Write(leader);

               Console.Read();          
            }

        }

    4).运行Client。

posted @ 2011-07-20 11:11  xuebingz  阅读(1402)  评论(1编辑  收藏  举报