文档介绍:文档来源为:
1
文档来源为:
4
只使用代码而不用配置文件的情况不适合 IIS为宿主的情况,IIS宿主必须使用配置文件
配置 WCF 的 ServiceHost 。
1、服务端
准备Contract 和实现 Contract 的服务
很简单的一个 Contract (Interface )和实现这个 Contract (实现这个接口的类)的
服务。
这是VS2005中使用add new item ,选 WCF Service 后自动生成的一个模板例子服 务代码。
[ServiceContract ()]
public interface IService
{
[ OperationContract ]
string MyOperation1( string myValue);
}
public class Service : IService
{
public string MyOperation1( string myValue) {
return "Hello: " + myValue;
}
}
建立 ServiceHost
——般使用 public ServiceHost( Type serviceType, params Uri [] baseAddresses) 构造 方法建立 ServicesHost 。
参数:
文档来源为:
5
文档来源为:
2
Type serviceType -- 为实现了某些 Contract的类的类型,为这个服务主机要 host的
服务。
params Uri [] baseAddresses -- 为任意数量的 baseAddress 。
Uri baseAddress = new Uri ("");
//Instantiate new ServiceHost
myServiceHost = new ServiceHost (typeof (Service ), baseAddress);
一个ServiceHost 内只能驻留一个 Service 类,但是这个 Service 类可以实现多个
Contract ,每个Contract 都能通过一个或多个(不同的 bind ) Endpoint 向客户端暴露。
进程、应用程序域和 ServiceHost
Dotnet出现之前,资源的分配是以进程为单位,进程是应用程序的安全边界,进程之 间不能直接访问,一个进程的崩溃也不会直接影响到别的进程。
但是,进程有个缺点,为了维护进城的安全上下文,耗费的资源很大。
后来引入了线程,一个进程中可以包含多个线程,同一进程里的线程共享资源、切换方 便,但是线程不具有隔离性,一个线程的崩溃将会影响到其他线程。
Dotnet引入了应用程序域,是介于进程和线程之间的逻辑概念,它既有进程的安全隔 离性的优点,又有线程轻巧快捷的特性。应用程序域跟进程一样,一个应用程序域不能直接 访问另一个应用程序域的资源, 一个应用程序域的崩溃