有没有对此有所考虑?就个人而言,我认为在配置文件中管理端点是一件痛苦的事情。是否有任何优势/缺点做另一个?端点与web/app.config的编程配置
回答
只有赞成从我配置文件。
管理配置文件中的端点意味着,如果端点发生更改(或者应该说),则不必更新应用程序。
您还可以使用不同端点运行应用程序的多个实例。
副手,配置文件中的端点在更改时不需要重新编译。这也意味着,当将应用程序从开发移植到UAT到生产时,您只需更新您的配置文件。
如果你只是在家里使用自己的代码,那就没有真正的区别。但是,在商业环境中,在配置文件中定义开发点可以节省各种麻烦。
这只是你需要多少灵活性的问题。 通常我更喜欢配置文件的方法。
当使用app.config时,您的应用程序不需要重新编译以适应变化。它也可以在多种情况下用完全相同的代码重新使用。最后,对你的端点进行硬编码(或者任何可能发生变化的东西)都是糟糕的编码习惯。不要害怕配置文件,它是声明式编程。你说,“我想用这个端点。”它为你做了工作。
我自己也喜欢配置方法,除了配置文件可以变得非常大。
有一件事我与WCF配置注意到的是,有很多的东西,你可以从代码,您无法在XML配置做离不开添加自定义的扩展。换句话说,在代码中进行配置会带来更大的灵活性,当然你也可以编写自己的扩展并使用配置中的那些扩展。
但是,请注意,我认为在Visual Studio中会有一个'错误',如果您开始制作自己的扩展并将它们包含在XML中,那么VS将不再喜欢您的配置文件,并将标记他们作为错误,然后如果尝试通过向导添加新服务,它将无法将端点添加到配置中。
这是不大不小的随访,以我自己的答案:
后具有xml配置的一切,我改变一切,构建端点和绑定代码的几个月。我在代码中发现了一个非常好的例子;
当您想拥有包含WCF客户端的可部署/可共享的.dll。
因此,例如,如果您有一个CommonClients.dll,其中包含您的所有WCF界面以及与某些远程服务器进行通信的合同,则您不想也说“这里有100行xml,您还必须放入您的app.config为每个客户端使其工作“。在这种情况下,使用代码构造出来的效果会更好。
还有一个.NET 3.5的“功能”,如果您有一些wcf扩展名,则必须指定完全限定的程序集名称。这意味着如果包含扩展名的程序集更改了版本号,则必须更改配置文件中的程序集名称。据推测,它在.NET 4中使用一个简短的程序集名称,而不需要全名。
我通常做编程配置,因为我不想公开我的应用程序内部结构的用户。我唯一可以配置的是服务地址,但即使如此,我仍保留在userSettings部分,而不是system.ServiceModel。
我更喜欢和推荐配置文件的方法。它允许对服务器进行更改而不需要重新编译应用程序,从而具有很大的灵活性。 如果您需要安全性,您可以加密配置文件。
使用纯文本配置文件最大的担心可能是它可能被意外(或故意)由最终用户修改而导致应用程序崩溃。为了克服这个问题,你可以在代码中进行一些测试来检查配置文件中的配置是否正确,如果没有,则以编程方式将其初始化为某些默认值。我提出了如何在this问题的另一个答案中做到这一点。
查看.NET StockTrader app。它使用存储库来存储配置数据,并有一个单独的应用程序来管理配置。设置和结构非常先进,并且对于像我这样的只有WCF配置基础知识的人来说,有一点点头疼,但我认为值得一看。
- 1. 配置端点编程
- 2. WCF:编程设置端点
- 3. 如何编写WCF端点配置编程C#
- 4. 如何以编程方式设置WCF端点标识配置?
- 5. 如何以编程方式更改端点的标识配置?
- 6. Spring.Net编程与XML配置
- 7. Vuejs端点配置
- 8. WCF端点配置
- 9. WCF端点配置
- 10. FBX RTB的端点配置
- 11. WSO2以编程方式更新端点配置
- 12. WCF端点配置问题
- 13. 如何配置端点
- 14. 如何配置wcf端点?
- 15. jsPlumb端点编辑位置
- 16. 服务织物端点端口配置
- 17. WCF:编程与证书配置服务
- 18. 编程方式配置Log4j2与ConfigurationBuilder
- 19. 如何以编程方式过滤与API端点匹配的用户名?
- 20. 以编程方式验证Web引用与.NET 3.5中的端点匹配
- 21. 访问TFS端点编程
- 22. Elasticsearch编程配置
- 23. Prettyfaces编程配置
- 24. Apache CXF Spring JAXWS端点的Java配置
- 25. 重复的端点WCF服务配置
- 26. WCF服务的多个端点配置
- 27. WSO2ESB入站端点的动态配置
- 28. 其他配置文件中的端点
- 29. 使用CRest的可配置端点
- 30. API端点的Django子域配置