私はWCFを初めて使用しており、DBへのAPIを作成したいと考えています。WCFの多くのインターフェイスを返します
DB ormはEntityFrameworkによって構築されています。取得する関数、取得する関数、保存する関数、および各エンティティで実装する必要があるすべての関数をラップしました。
WCFサービスは1つのインターフェイスしか読み込めないことがわかりましたが、多くのインターフェイスがあり、各インターフェイスは複数のクラスによって実装されています。
私の主なインターフェース:
[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が見つかりましたが、リンクが壊れています。正確には問題はありません。
ありがとうございました。
サービス契約とデータ契約が混乱していますか?前者はワイヤを介して送信するデータの定義で、後者は公開するものを定義します。基本的には、あなたのサービスを実装する方法は無料です。それは1つかもしれないし、20になるかもしれない、それは私が本当に理解できないあなたの状況に依存する。データベースからデータを公開する場合は、WCF Data Servicesを検討してみませんか? – hbulens
または、おそらくあなたはSOAPサービスとインターフェイスを混乱させるでしょうか? A *サービス*には、データ型と操作の明確なセットがあります。 .NETインターフェイスは、他の言語を使用する代わりにメタデータを定義する便利な方法です。 "サブサービス"のようなものはないので、サブインターフェースのようなものはありません –
複数のインターフェースを(継承を介して)1つのインターフェースに「連鎖」して、1つのサービスで実装することができます。すなわち、 'public class Service:IServiceA'、' IServiceA'は 'IServiceB'、' IServiceC'などを継承/実装します。 – Tim