首页 / 软件开发 / .NET编程技术 / WCF系列(一) 完全不使用配置文件构建和使用WCF服务
WCF系列(一) 完全不使用配置文件构建和使用WCF服务2010-12-29 cnblogs chnking只使用代码而不用配置文件的情况不适合IIS为宿主的情况,IIS宿主必须使用配置文件配置WCF的ServiceHost。1、服务端1.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;
}
}
1.2.建立ServiceHost一般使用public ServiceHost(Type serviceType, params Uri[] baseAddresses)构造方法建立ServicesHost。参数:Type serviceType -- 为实现了某些Contract的类的类型,为这个服务主机要host的服务。params Uri[] baseAddresses -- 为任意数量的baseAddress。Uri baseAddress = new Uri("http://localhost:8080/WCFService/Service");
//Instantiate new ServiceHost
myServiceHost = new ServiceHost(typeof(Service), baseAddress);
一个ServiceHost内只能驻留一个Service类,但是这个Service类可以实现多个Contract,每个Contract都能通过一个或多个(不同的bind)Endpoint向客户端暴露。进程、应用程序域和ServiceHostDotnet出现之前,资源的分配是以进程为单位,进程是应用程序的安全边界,进程之间不能直接访问,一个进程的崩溃也不会直接影响到别的进程。但是,进程有个缺点,为了维护进城的安全上下文,耗费的资源很大。后来引入了线程,一个进程中可以包含多个线程,同一进程里的线程共享资源、切换方便,但是线程不具有隔离性,一个线程的崩溃将会影响到其他线程。Dotnet引入了应用程序域,是介于进程和线程之间的逻辑概念,它既有进程的安全隔离性的优点,又有线程轻巧快捷的特性。应用程序域跟进程一样,一个应用程序域不能直接访问另一个应用程序域的资源,一个应用程序域的崩溃也不会影响其他应用程序域。同时应用程序域占用的资源比进程少的多,应用程序直接的切换也很快捷。