我是WCF的新手,我想創建一個API到數據庫。返回WCF中的很多接口
DB orm是由EntityFramework構建的,我包裝了所有獲取一個的功能,找到許多並保存每個實體必須實現的接口和接口。
我發現WCF服務只能加載一個接口,但我有很多接口,每個接口都由多個類實現。
我的主界面:
[DataContract]
public enum Entity
{
[EnumMember]
Branch,
[EnumMember]
Category,
[EnumMember]
Client,
[EnumMember]
ClientInterest,
[EnumMember]
Condition,
[EnumMember]
Event,
[EnumMember]
EventType,
[EnumMember]
Floor,
[EnumMember]
GlobalSettings,
[EnumMember]
Operation,
[EnumMember]
Picture,
[EnumMember]
Price,
[EnumMember]
Rate,
[EnumMember]
RealEstate,
[EnumMember]
Role,
[EnumMember]
Sale,
[EnumMember]
Status,
[EnumMember]
User
}
[DataContract]
public enum Hierarchy
{
[EnumMember]
Realtor,
[EnumMember]
Branch,
[EnumMember]
Chain,
[EnumMember]
NonRelevant
}
[ServiceContract]
public interface IBL
{
[OperationContract]
Dictionary<string, string> AuthenticateUser(string username, string password);
[OperationContract]
string GetLoggedUserUsername();
[OperationContract]
string GetLoggedUserBranchName();
[OperationContract]
void DisconnectUser();
[OperationContract]
IBLManage GetBLManage(Entity entity);
[OperationContract]
IBLReport GetBLReport(Entity entity);
[OperationContract]
IBLSearch GetBLSearch(Entity entity);
[OperationContract]
List<string> GetRoles(Dictionary<string, string> errorsDict);
[OperationContract]
List<string> GetEventTypes(Dictionary<string, string> errorsDict);
[OperationContract]
List<string> GetConditions(Dictionary<string, string> errorsDict);
[OperationContract]
List<string> GetStatuses(Dictionary<string, string> errorsDict);
[OperationContract]
List<string> GetOperations(Dictionary<string, string> errorsDict);
[OperationContract]
List<string> GetCategories(Dictionary<string, string> errorsDict);
}
一個子接口:
[ServiceContract]
public interface IBLManage
{
[OperationContract]
Dictionary<string, string> Save(Dictionary<string, object> entityDict, bool isNewEntity = true);
[OperationContract]
object GetEntity(Dictionary<string, object> entityDict, Dictionary<string, string> errorsDict);
}
我怎樣才能使它在一個單一的服務? 或者我必須創建許多服務? (這將是約20) 如果我創造了很多,我可以在同一個exe中運行它們嗎?
我發現this question關於接口的返回值,但鏈接被破壞,並不完全是我所有的問題。
非常感謝。
您是否將數據合同與服務合同混淆?前者是定義您將通過電線發送的數據,而後者定義您將要公開的內容。所以基本上你可以自由地實現你的服務。它可能是一個,也可能是20個,這取決於我不瞭解的情況。如果你想公開數據庫中的數據,你爲什麼不考慮WCF數據服務? – hbulens
或者您可能會讓SOAP服務和接口混淆?一個*服務*有一套明確定義的數據類型和操作。 .NET界面是定義該元數據而不是使用其他語言的便捷方式。沒有「子接口」這樣的東西,因爲沒有「子服務」這樣的東西。 –
您可以將多個接口(通過繼承)「鏈接」成一個接口,然後由一個服務實現。即公共類Service:IServiceA',其中'IServiceA'繼而繼承/實現'IServiceB','IServiceC'等。 – Tim