public AreaModel(Int64 AreaId)
{
CurrentAreaId = AreaId;
CurrentSet = true;
var c = Client;
}
private ManagementServiceClient Client
{
get
{
if (_client == null || _client.State == (CommunicationState.Closed | CommunicationState.Faulted))
{
_client = new ManagementServiceClient();
_client.Open();
}
var c = Areas;
return _client;
}
}
public Management_Area[] Areas
{
get
{
return Client.GetAreaHeaders();
}
}
这段代码是一个自定义模型的应用,它被传递到一个 MVC 视图中。
我们有一个开发人员在我们公司写了很多奇怪的(对我们来说)代码,然后有点突然离开。他的很多代码都是以一种特定的方式编写的,以至于我们很难知道他是否真的知道自己在做什么,或者根本不知道。
我问这个问题的原因是因为我看到他在这里做了什么,但我不确定它是否有效,或者它的真正意义是什么。
我的第一个问题是:调用 AreaModel 的构造函数时,是否调用了 Client.GetAreaHeaders()?因为我明白为什么会这样,但我并不完全相信它确实如此。我在服务端的 GetAreaHeaders 中放置了一个断点,如果它被调用应该会触发,所以我倾向于说“不,它没有被调用”......但我不确定我的断点实际上是正确的done 或 'hitting' (我只是在 IIS 中设置了这个服务,我之前没有理由调试它),所以我想从更熟悉的人那里知道,“它应该被调用吗?” 以及为什么,或者为什么不。因为我可以从这段代码中看出,编写它的人肯定希望它会被调用。
在我看来,他正在考虑实现某种服务调用结果的缓存的想法,但从未真正将其保存在任何有用的地方(因为当他尝试阅读它时,不是 GetAreaHeaders()只是要第二次打电话?)。因此,如果有人熟悉,我的第二个问题是,如果它完全正常工作,缓存这样的东西是否有意义?当模型在每次页面加载时重新创建时,为什么在模型创建时预先填充“区域”而不是在视图/控制器中访问一次并将其存储在范围内的某个变量中会更好页面的?对我来说,他们似乎需要同样多的时间。
我希望这个问题得到很好的解释并且有意义。请让我知道是否有任何方法可以编辑问题以对每个人都更有益。