[DataContract]
public class Certification
{
public long CertificationId { get; set; }
[DataMember]
public virtual Domain.Entities.Company Company { get; set; }
[DataMember]
public long CompanyId { get; set; }
[DataMember]
public string Id { get; set; }
[DataMember]
public string Password { get; set; }
}
session类 如上图所示
类似所有接口调用
ClientState.Certification.Id = user.LoginId;
//ClientState.Certification.Password = user.UserPassword;
ClientState.Certification.Password = "test5";
ClientState.Company = CommonManager.GetCompany(ClientState.Certification, 1);
if (Settings.Default.IsLoginSound)
{
this._soundModule.PlayLoginSound();
}
if (client3.IsLogin(ClientState.Certification, user.UserId))
我看了一下服务端调用的时候 都传递上面的类
都传递了 ClientState.Certification
1.请问这么弄的话 服务端每次请求都要教研用户名和密码么?
2.如果真要每次调用 都去查数据库表的话 是不是很耗费性能呢?
有没有类似好的DEMO 告诉我一下 我要怎么实现这部分的服务端呢?
如果用缓存的话 有没有好的示例 可以参考一下呢?
你可以吧certification保存的nosql里面,
问下还有别的方法 领导要求用mysql 数据库
我发现每次验证用户和密码的 会访问很多数据次数据库
先说验证,这个不能说因为每次都要验证就不验证,这个是底线。
再说性能,一般场景下这种类似根据id去查询数据的只要有个索引性能都不低,你要真性能有问题的话那你可以在第一次查询后将用户信息缓存到cache再加个几分钟的过期,后面如果查不到再打到db验证及加载到缓存
最后说写法,wcf这块灵活性很高的,我印象中可以直接在wcf的那堆管道啥的那里直接把自己的校验逻辑给横进去,实在不行的话就直接aop拦你的方法或者承载service的对象,直接对每个方法中的参数做校验。