WCF-复杂配置
两种模式,一个契约两个实现,两个契约一个实现。
服务类库

宿主
static void Main(string[] args) { ServiceHost sh1 = new ServiceHost(typeof(WCFComplexLib.OneImpTowInt.People)); sh1.Open(); Console.WriteLine("一个实现两个接口服务开启"); ServiceHost sh2 = new ServiceHost(typeof(WCFComplexLib.OneIntTowImp.Student)); sh2.Open(); Console.WriteLine("一个接口两个实现 学生服务开启"); ServiceHost sh3 = new ServiceHost(typeof(WCFComplexLib.OneIntTowImp.Teacher)); sh3.Open(); Console.WriteLine("一个接口两个实现 老师服务开启"); Console.ReadKey(); }
服务端配置文件
<system.serviceModel>
<services>
<!--两个契约一个实现服务-->
<service behaviorConfiguration="customBehavior" name="WCFComplexLib.OneImpTowInt.People">
<host>
<baseAddresses>
<add baseAddress="http://localhost:6001/"/>
</baseAddresses>
</host>
<endpoint address="OneImpTowIntPeopleStudent" binding="basicHttpBinding" contract="WCFComplexLib.OneImpTowInt.IStudent"></endpoint>
<endpoint address="OneImpTowIntPeopleTeacher" binding="basicHttpBinding" contract="WCFComplexLib.OneImpTowInt.ITeacher"></endpoint>
</service>
<!--两个实现一个契约 学生服务-->
<service behaviorConfiguration="customBehavior" name="WCFComplexLib.OneIntTowImp.Student">
<host>
<baseAddresses>
<add baseAddress="http://localhost:6002/" />
</baseAddresses>
</host>
<endpoint address="OneIntTowImpStudent" binding="basicHttpBinding" contract="WCFComplexLib.OneIntTowImp.IPeople"></endpoint>
</service>
<!--两个实现一个契约 老师服务-->
<service behaviorConfiguration="customBehavior" name="WCFComplexLib.OneIntTowImp.Teacher">
<host>
<baseAddresses>
<add baseAddress="http://localhost:6003/" />
</baseAddresses>
</host>
<endpoint address="OneIntTowImpTeacher" binding="basicHttpBinding" contract="WCFComplexLib.OneIntTowImp.IPeople"></endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="customBehavior">
<serviceMetadata httpGetEnabled="True"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
客户端
static void Main(string[] args) { OneImpTwoIntPeople.StudentClient oitnps = new OneImpTwoIntPeople.StudentClient(); Console.WriteLine(oitnps.GetStudentName(1)); OneImpTwoIntPeople.TeacherClient oitnpt = new OneImpTwoIntPeople.TeacherClient(); Console.WriteLine(oitnpt.GetTeacherName(1)); OneIntTowImpStudent.PeopleClient oitisp = new OneIntTowImpStudent.PeopleClient(); Console.WriteLine(oitisp.GetPeopleName(1)); OneIntTowImpTeacher.PeopleClient oititp = new OneIntTowImpTeacher.PeopleClient(); Console.WriteLine(oititp.GetPeopleName(1)); Console.ReadKey(); }

浙公网安备 33010602011771号