选择什么体系结构(WCF服务、服务器端逻辑)

本文关键字:服务器端 服务 什么 体系结构 WCF 选择 | 更新日期: 2023-09-27 18:22:46

我正在开发服务器端逻辑,以处理请求并用数据响应前端服务器以及移动应用程序的直接连接。

我已经实现了SessionContext类,它基本上确保在DB中为每个被调用的服务都有匹配的会话记录(忘记密码的情况除外,等等)。

我现在正在尝试实现事件日志记录。我想有一个通用的逻辑,这样我可以记录所有的请求,异常,数据,等等

我已经想出了这个代码,但不知怎么的,我感觉不太好——每个服务方法都有太多的代码。有没有什么聪明的技巧可以让它变得更短、更容易阅读/编码?

当前的实现将使用EventLogic类将事件记录到事件表中。在某个时刻,一些事件可能与会话有关,所以我将eventLog作为参数传递给SessionContext(以创建事件和会话之间的链接)。SessionContext在成功处置时保存实体数据。。。我有一种直觉,我的设计出了问题。

public Session CreateUser(string email, string password, System.Net.IPAddress ipAddress)
{
    using (var eventLog = new EventLogic())
    {
        try
        {
            eventLog.LogCreateUser(email, password, ipAddress);
            using (var context = SessionContext.CreateUser(eventLog, email, password, ipAddress))
            {
                return new Session()
                {
                    Id = context.Session.UId,
                    HasExpired = context.Session.IsClosed,
                    IsEmailVerified = context.Session.User.IsEmailVerified,
                    TimeCreated = context.Session.TimeCreated,
                    PublicUserId = CryptoHelper.GuidFromId(context.Session, context.Session.UserId, CryptoHelper.TargetTypeEnum.PublicUser),
                    ServerTime = context.Time
                };
            }
        } 
        catch (Exception e)
        {
            eventLog.Exception(e);
        }
    }
}

选择什么体系结构(WCF服务、服务器端逻辑)

您应该考虑使用类似SLF4J+LogBack的东西(例如)进行日志记录。

如果您的类遵循SRP,则每个应用程序的调用类型(如LogCreateUser)不应超过一个。这意味着,不需要将日志记录逻辑提取到一个新的类中。