WCF多个服务实例
来源:互联网 发布:python的入门书推荐 编辑:程序博客网 时间:2024/05/22 09:45
一、对于一个WCF服务,经常举例说明的,一般WCF服务里面都是只有一个方法,比如HelloWorld,比如:
public string HelloWorld(string name)
{
return name +" Say:Hello World! Now Time At "+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff");
}
对于宿主(服务器)端来说,承担着发布WCF服务到IIS上,或者提供接口供客户端调用的职责,那么实现也相对比较简单
首先引用WCF服务的命名空间,再在app.config中配置service和behavior,再调用
Console.WriteLine("开始启动服务。。。");
ServiceHost host1 = new ServiceHost(typeof(HelloTimeService.Service1));
host1.Open();
Console.WriteLine("服务已经启动");
Console.ReadLine();
即可。
在客户端调用直接引用service中配置的baseAddress即可。
二、对于WCF服务中有多个服务的情况,可能更加的符合一般要求一些。
首先引用WCF服务的命名空间,再在app.config中配置service和behavior
Console.WriteLine("开始启动服务。。。");
ServiceHost host1 = new ServiceHost(typeof(HelloTimeService.Service1));
host1.Open();
ServiceHost host2 = new ServiceHost(typeof(HelloTimeService.Hello));
host2.Open();
Console.WriteLine("服务已经启动");
Console.ReadLine();
来一个一个的打开
虽然这种方法很不好,但是完全可以符合要求,当然,你也可以通过接口来实现,即定义IService1和IHello来定义方法,再创建一个类来实现这两个接口,那么再通过
Console.WriteLine("开始启动服务。。。");
ServiceHost host = new ServiceHost(typeof(HelloTimeService.Service));
host.Open();
Console.WriteLine("服务已经启动");
Console.ReadLine();
也可以实现,但是这也有一个确定,那就是,实现的这个Service方法的内容将会异常庞大。
所以可以这样实现
/// <summary>
/// 批量启动服务
/// </summary>
public static void StartService()
{
try
{
Configuration myConfiguration = ConfigurationManager.OpenExeConfiguration(Assembly.GetEntryAssembly().Location);
ServiceModelSectionGroup myServiceModelSectionGroup = (ServiceModelSectionGroup)myConfiguration.GetSectionGroup("system.serviceModel");
Console.WriteLine("开始启动服务。。。");
string AssemblyStr = ", Version=1.0.0.0, Culture=neutral, PublicKeyToken=null";
foreach (ServiceElement element in myServiceModelSectionGroup.Services.Services)
{
Type mytype = Type.GetType(element.Name + ","+ element.Name.Split('.')[0] + AssemblyStr, true, true);
if (mytype == null)
{
throw new Exception("没发现服务:" + element.Name);
}
ServiceHost host = new ServiceHost(mytype);
host.Open();
_hosts.Add(host);
}
Console.WriteLine("服务已经启动");
Console.ReadLine();
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// 批量关闭服务
/// </summary>
public static void CloseService()
{
foreach (ServiceHost host in _hosts)
{
host.Close();
}
}
虽然不是很理想,但是功能差不多都可以实现,如果以后有方法再改
- WCF多个服务实例
- 引用WCF热门问题编程示例(2)多个实例调用一个WCF服务
- WCF热门问题编程示例(2)多个实例调用一个WCF服务操作,需要等待服务响应吗
- WCF热门问题编程示例(2)多个实例调用一个WCF服务操作,需要等待服务响应吗
- WCF - 服务实例管理模式
- WCF - 服务实例管理模式
- WCF并发(Concurrency)的本质:同一个服务实例上下文(InstanceContext)同时处理多个服务调用请求(转)
- WCF并发(Concurrency)的本质:同一个服务实例上下文(InstanceContext)同时处理多个服务调用请求
- WCF学习--WCF服务实例模式
- WCF - 释放服务对象实例
- WCF服务创建实例说明
- 创建第一个WCF服务
- 创建第一个WCF服务
- WCF 第一个服务练习
- 创建第一个WCF服务
- wcf自主host多个服务的问题
- WCF中服务继承多个契约的使用
- WCF HOST多个服务遇到的问题
- 更改J2ME的默认设备
- 三国杀技术支持(内含数学建模)
- 框架的概念及用反射技术开发框架的原理
- 一些平常需要注意的浏览器JS差异。
- 内省->了解JavaBean
- WCF多个服务实例
- 五种方法促成IT精英
- 项目经理如何管理不同类型员工的扯皮攻略
- 了解注解及java提供的几个基本注解(JDK1.5的新特性)
- 使用rapidxml解析xml
- java -version时出现could not open D:/java/jre1.6.0_22/lib/i386/jvm.cfg
- 理解 LINUX 的处理器负载均值
- 体验泛型(JDK1.5新特性)
- joomla