1

我有一个设计问题。我正在构建一个使用第三方服务的门户。

我已将此服务放入一个 DLL 中,当初始化一个 DLL 类时,我将一个服务的服务地址传递给其他服务(依此类推——其中一些具有不同的地址)

 public LogonService (string address)
        {
            EndpointAddress epA = new EndpointAddress ( address );
            proxyClient = new LogonServicePortTypeClient ( "LogonServicePort" , epA);
            //added this InspectorBehavior for logging and errrors
            proxyClient.Endpoint.EndpointBehaviors.Add ( new InspectorBehavior () );

        }

这是我的构造函数。然后在实例中,我公开了所有 LogonService 功能(登录、注销、刷新等 - 再次,这是一项服务的一个示例。其中很少)。

此 DLL 由 MVC 4 互联网应用程序使用。我想添加一个 BusinessLogic 文件夹来为每个 DLL 类保存一个类,这将如图所示启动服务并以控制器可以理解的方式将结果传达给控制器。(这是我的设计理念)

如果(再次如果)这种设计令人满意,我想知道初始化这些 DLL 类、存储它们以供重用等的最佳实践在哪里以及如何进行。

总结我的长问题:
1.这是一个有效的设计吗?
2. 我应该在应用程序生命的什么地方初始化这些 Dll 类?
3. 我将如何存储这些服务实例(性能方面)?
4. 最后,如果这个设计不合逻辑,那么推荐的设计是什么?

谢谢吉拉德

4

2 回答 2

2

我建议的第一件事是选择像 Castle 或 Unity 这样的 DI 框架。这将为类初始化消除很多麻烦,并使您的类更具可测试性。

此外,将您的端点配置外部化为 xml(在 system.serviceModel 部分下)。我觉得流畅的端点配置很让人分心。

于 2013-04-29T09:21:26.203 回答
0

几个月前我遇到了同样的问题,遗憾的是我没有机会花时间解决这个问题。据我所知,你的设计很好,这也是我采用的。

我更关心你的 3) 问题。最后,我为每个 WS 调用创建了一个服务实例(因为只有少数用户使用 Web 应用程序,而且并不经常使用,所以我不太关心性能)。但是,我会对某人对此的看法非常感兴趣。

我也同意 aquaraga 的评论。您应该尽可能多地使用配置文件。当开发人员将配置的一部分硬编码到他们的应用程序中时,我遇到了很多麻烦。

于 2013-04-29T09:45:15.933 回答