您的位置:首页 > 其它

wcf webservice服务

2011-07-20 11:11 169 查看
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。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: