2016-12-10 56 views
0

說我有在IEmployService.cs指定爲這樣的服務合同:WCF-指定服務名稱和合同類型的冗餘?

namespace MyNamespace { 
    [ServiceContract] 
    public interface IEmployeeService { 
     /* ... */ 
    } 
} 

和EmployeeService.svc實現文件:

namespace MyNamespace { 
    public class EmployeeService: IEmployeeService { 
     /* implements IEmployeeService fully */  
    } 
} 

現在,當我在網站指定我的終點。配置文件,我看到每個人都這樣做:

<system.serviceModel> 
<services> 
    <service name="MyNamespace.EmployeeService"> 
    <endpoint 
     address="basic1" 
     binding="basicHttpBinding" 
     contract="MyNamespace.IEmployeeService" 
     ></endpoint> 
    </service> 
</services> 
<!-- other tags --> 
<system.serviceModel> 

好像WCF奧特能夠推斷出的合同類型是什麼,而不必指定contract="MyNamespace.IEmployeeService",因爲它已經有一個對EmployeeService的引用(誰實現了指定服務契約的IEmployeeService接口)。我的端點中的這個契約是否屬於絕對必要的?如果是這樣,我很想知道爲什麼。

+0

這個契約屬性是否必要,因爲EmployeeService可能實現MULTIPLE契約?那麼我可以看到那是必要的。 – Ian

回答

0

這至少部分是因爲我的類EmployeeService不限於實現單個服務契約接口。說我指定一個新的合同ISuperContract.cs:

namespace MultipleEndpointSample 
{ 
    [ServiceContract] 
    interface ISuperService 
    { 
     [OperationContract] 
     void GetEmployeeName(); 
    } 
} 

那麼合同屬性在我的web.config:端點定義是非常必要的,我現在用它來區分的EmployeeService(實現兩個哪個子服務服務)這個端點將迎合。