首页 新闻 赞助 找找看

C# WCF 所有接口调用都有 Certification 类

0
悬赏园豆:15 [待解决问题]

[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 告诉我一下 我要怎么实现这部分的服务端呢?

 

 如果用缓存的话 有没有好的示例 可以参考一下呢?

愤青愤青的主页 愤青愤青 | 初学一级 | 园豆:4
提问于:2017-09-25 11:36
< >
分享
所有回答(2)
0

你可以吧certification保存的nosql里面,

聆听的风声 | 园豆:137 (初学一级) | 2017-09-25 13:42

问下还有别的方法 领导要求用mysql 数据库

我发现每次验证用户和密码的 会访问很多数据次数据库

支持(0) 反对(0) 愤青愤青 | 园豆:4 (初学一级) | 2017-09-25 13:44
0

先说验证,这个不能说因为每次都要验证就不验证,这个是底线。

再说性能,一般场景下这种类似根据id去查询数据的只要有个索引性能都不低,你要真性能有问题的话那你可以在第一次查询后将用户信息缓存到cache再加个几分钟的过期,后面如果查不到再打到db验证及加载到缓存

最后说写法,wcf这块灵活性很高的,我印象中可以直接在wcf的那堆管道啥的那里直接把自己的校验逻辑给横进去,实在不行的话就直接aop拦你的方法或者承载service的对象,直接对每个方法中的参数做校验。

Daniel Cai | 园豆:10424 (专家六级) | 2017-09-25 17:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册