我将为一家拥有1000多个客户的公司开发实用程序,该程序必须通过.Net赢得申请,因为我的程序将与另一个程序一起使用。 您对app.config的位置有什么建议? 一个场景: 我们将app.config放在配置一次的服务器上,并为它编写一个Windows服务,通过TCP / IP套接字发布connectionString。
在Socket编程中,我们不需要任何东西,因为我们只使用一个空闲端口从服务器向客户端发送ConnectioString。我的场景基于这种方法。 (嵌入在应用程序中的默认端口)。
答案 0 :(得分:2)
阅读你的问题(我正在解读一下)我可以看到客户可能彼此分开,即使它只是在局域网中,以下解决方案也可行:
开发一个WebService,其唯一的工作是在调用时提供ConnectionString。
这使您能够以“简单”和健壮的方式执行此操作,并且只能在本地Intranet上实现它以确保安全。
无论如何,请确保您加密数据,甚至RSA签署它是一个很好的衡量标准。这将为您的问题提供安全,强大且耗时较少的解决方案。
答案 1 :(得分:1)
app.config属于客户端应用程序 - 我甚至不会尝试和其他东西一起破解。将其作为应用程序的一部分发送并安装。特别是连接字符串实际上不能在其他任何地方外包。
我们使用混合场景,我们在每个客户端上只有app.config中的连接字符串,而其他任何需要配置的东西都在每个人都读取的数据库表中。
但是连接字符串实际上不能集中在数据库中.....你如何连接数据库来读取连接字符串呢? :-)经典的“鸡与蛋”问题。
所以:只需使用app.config并将连接字符串放在那里(如果需要,加密<connectionStrings>
部分)。
唯一可行的选择是将连接字符串嵌入到应用程序本身 - 作为“Constants.cs”文件中的常量字符串。
马克
答案 2 :(得分:1)
理想的体系结构是提供充当数据层的服务 - 您的WinForms应用程序将调用此服务来执行与数据库的所有交互。这不仅为您的数据访问提供了一个抽象层,而且它将您的数据连接集中到一个区域(您的数据服务),因此您可以将您的连接字符串安全地存储在托管此数据服务的服务器上。
答案 3 :(得分:0)
如果您想要集中配置,我会将配置放在CN = Services,CN = Configuration节点下的Active Directory中。
答案 4 :(得分:0)
我使用自适应连接字符串,根据运行应用程序的网络和/或机器来配置自身。我前段时间写了blog post about this approach。关键是覆盖SettingsLoaded事件以重新配置烘焙的连接字符串。这适用于任何.NET Windows客户端应用程序或DLL。我甚至在DLL中使用这种技术来控制Web应用程序的连接字符串。它确实使部署变得轻而易举!
当然,这不是所有场景的最佳方法。一个缺点是用户和管理员无法使用配置文件更改连接字符串。
答案 5 :(得分:0)
在您的服务器上,您将拥有IIS,您可以定义一个网址http://myapp.myserver.com,您可以在其中放置一个xml页面,无论客户身在何处,一旦启动,他们就可以查询http://myapp.myserver.com/myapp-config.xml,以及在此文件上,您可以存储版本,连接字符串等。
并且你必须手动实例化你想要从这个xml而不是app.config加载的所有变量,但是在读取myapp-config.xml后启动的静态变量中将连接字符串存储到程序中并不困难/ p>
在客户端运送app.config并不好,因为如果您需要更改任何值,更改服务器或分配负载,将很难重新分配所有内容。
相反,您还可以检查xml的版本,如果版本更改,您可以通知从同一服务器下载新版本并升级其程序。