客户端服务器安装包.NET
我猜这是Client-Server每个初学者都在寻找的基本问题:我开发了一个C#.NET
Client
- Server
软件。
应用程序的基本概述
应用程序包含一个内置的数据库,以便如果服务器不可用,用户可以使用可用于其本地系统的数据库。 如果数据库在服务器上可用,则将使用服务器数据库。 只需点击一下按钮,数据库就会彼此synchronize
。 所以我有两个连接字符串,一个是本地系统,另一个是服务器。 它们都是动态创建的。
对于:客户端安装 - >现在我正在使用Click One应用程序
问题1 :
我有一个基于SQL Server Express的数据库部署。 我创建了一个像SQL Server 2008一样的先决条件的clickone应用程序。当我安装我的clickone时,我的应用程序正确安装,没有任何错误,但是在启动应用程序时,它给了我错误,我的应用程序无法在C:UsersXnorAppDataLocalApps2.0DataN24R9574.9H1V0Q1MX0C.0X9....
我冲浪了stackoverflow,发现复制我的.mdf
到这个位置将解决我的问题。 但为什么会发生这种情况。 为什么不复制它自己?
是否有任何方法将数据库永久附加到我的应用程序,以便我可以避免这种手动工作?
无处不在,只需将.mdf
文件复制到该位置即可。 那么有没有什么办法可以工作,也许如果可能的话,并且暗示.mdf
会附加在资源中并且可以从那里使用。 寻找专家意见,实现它的最好方法。
对于服务器:
我用来安装Microsoft SQL Server Management Studio Express
,然后使用它为我的服务器创建数据库,然后使用它与我的应用程序一起工作。
问题2
我该如何采取这些措施。 正在告诉非IT人员并教他们在Microsoft SQL Server Management Studio Express
上安装Microsoft SQL Server Management Studio Express
,然后在其上创建数据库,然后将其连接字符串提供给应用程序以使其工作带来许多问题。
所以我的基本要求就是在安装时为用户提供流畅的体验。 当做装置的人不是一个高大的极客。 他们可以做Next
Next
Next
但他们不喜欢做这么多配置。 有没有这样做的专业方式。 我猜这是客户端 - 服务器软件最重要的,我从来没有见过这样的软件要求你做这么多配置。
我不愿意使用Click-one Deployment,因为它看起来非常不专业,我觉得它的功能非常有限。 所以请提出一些其他可以满足此要求的替代方案。
此外,我想知道这是一件非常重要的事情,并且没有现成的教程,我可以在谷歌和YouTube上找到,而且我无法找到如何自动化此事的正确方向,或者可能是这样我就可以减少步骤。
我准备部署两个设置:一个用于客户端,另一个用于服务器
请让我知道是否需要其他信息。 期待着很大的支持。 问候。
为了在客户端进行部署,我会重新考虑其本地数据库的策略。 问题在于,正如我所理解的那样,您在每台客户端上都使用SQL Server,并使用本地.mdf文件,而我认为这不仅仅是解决方案,更像是一个问题,因为它像任何普通的数据库服务器一样工作,伴随着它产生的所有头痛。 而且由于客户端不应该接收外部连接(如果我在这里错了,请纠正我),一个完整的服务器将是一个矫枉过正的问题。 我的想法是为客户端选择一个不同的数据库引擎:
对于客户端数据库本身,我根本不会包含在安装程序中。 相反,当程序运行时,首先需要使用它,它会尝试打开它,如果找不到,则从头开始创建它。 这可以通过将数据库创建脚本捆绑到应用程序本身中来完成,它将依次运行所有脚本以创建一个空的数据库(基本上发送一堆CREATE TABLE
/ CREATE VIEW
/ CREATE PROCEDURE
/创建任意数据)。 有些ORM甚至可以自动执行该步骤(但我怀疑这是一个好主意)。因为这只会发生一次,所以它不应该对性能产生很大的影响,并且如果DB以某种方式被删除,也会使程序具有抵抗性。 所有这些都必须在每台客户端计算机上完成,但我认为可能会创建一个非常愚蠢的next / next / next安装程序。
现在用于服务器端。 无需干预即可轻松安装服务器,这实际上更加困难。 问题的根本在于有许多配置远远超出了你的系统,但仍然可以影响它。 数据库引擎本身就是其中之一,因为它需要配置权限,设置数据库,允许外部远程连接,启用协议和配置自动备份。 此外,服务器可能包括需要打开端口以接受传入连接的防火墙,也可能包含防止网络活动的杀毒软件等。
这就是我认为超出你的应用程序所能做到的和应该做的事情,即使这意味着IT人员需要手动执行此操作(这不是什么负担,因为它只会执行一次) 。 在这里我没有太多的好建议, Sharpeye500
的建议很好,因为它允许无人值守的SQL Server安装,但Sharpeye500
是正确的条件存在,但情况可能并非总是如此。
你可以自动化的是创建服务器端数据库。 您可以使用与我为客户端提出的相同的“安装程序”,即发送CREATE DATABASE / CREATE TABLEs语句从头开始构建空数据库。 唯一需要的参数是服务器名称/数据库名称/用户/密码。 安装程序可以从那里建立连接字符串。 客户端应用程序可能使用类似的方法来定位服务器数据库,并且这些参数也可能包含在客户端安装程序中。
问题1:将SQL数据库添加到应用程序 - 应该使用visual studio解决方案。
点击使用数据库的项目(或者更好的,首先创建一个文件夹),Ctrl + Shift + A> Data> Local Database / Service-Based Database。
那么你应该填充数据库,更改连接字符串等。
该项目将为您提供一个连接字符串,可以调整并在安装中进行更改,因为文件路径可能有所不同。
这样,它将使用clickonce将数据库复制到项目安装中。
注意:选择数据库类型(SDF vs. MDF)并不是一个很难回答的问题。
如果您可以使用MDF,因为它具有更好的性能,更好的功能,但需要本地安装SQLExpress。
问题2:不需要SSMS(Menegment Studio)或类似的东西。
现在,我倾向于认为您正在运行应用程序的服务器上安装数据库 - 您不应该那样做。 为数据库使用专用服务器。
然而,对于你的答案,你可以做两件事情来改善它:
1.您可以创建一个名为model的SQL数据库 - 它非常适合数据库创建,因为它将自身复制到新的数据库中,并使事情更轻松。
然后,您的应用程序可以运行(在安装部分中)SQLConnection.CreateDatabase,它将复制模型并为您的需要创建数据库。
2. Yoy可以迁移到一个更新的解决方案,比如使用EntityFramework,在那里开发你的类并且EF负责存储。
我没有使用过Clickonce一段时间,但我知道你可以使用你的文本,你的徽标来定制它的版本...如果你想自动化,其中一个步骤是运行你的代码,如果你提供它。 你可以创建安装文件。 只需创建(Ctrl-Shift-A)安装文件(其中有),您可以在其中覆盖方法并运行您想要的(文件复制,调整,需求检查..)
我想建议您的客户端和服务器端平稳安装inno setup (next> next> next) 。 目前我正在为我的客户端安装使用inno安装程序安装程序。
参考:1.如何使用inno安装程序构建安装程序2.用于.NET应用程序的Inno安装程序
问题1: - 您可以使用SQL Server附加数据库(解决方案资源管理器>添加新项目> SQL Server数据库(OR))您可以在客户端系统中安装SQL Server(Standard / Express),并通过Inno Setup创建数据库和数据库对象。
请按照以下步骤创建客户端安装程序。
下载Inno Setup>创建项目>参考路径>创建inno设置
注意:您可以在inno setup文件夹中包含其他先决条件,您可以订购安装步骤,例如1.NET Framework,2. Windows App EXE,3. SQL Server Express,4.数据库脚本恢复
一旦建立inno设置,您将只有一个客户端安装的设置。 您可以为服务器端安装创建另一个设置。
链接地址: http://www.djcxy.com/p/73663.html