我是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