我应该将哪个开发平台用于桌面Windows应用程序?

时间:2020-12-06 11:22:25

After doing web development for quite a while, I am faced with a new client who wants a simple database application to run outside the interweb.

在进行Web开发很长一段时间后,我面临着一个新的客户端,他希望在interweb之外运行一个简单的数据库应用程序。

He is quite adamant about using Microsoft products. "We don't want no steenking open sources" was his stance.

他非常坚持使用微软产品。 “我们不希望没有开放的开源”是他的立场。

It's been quite a while since I actually did desktop development, and most of my tools are rusty, out of licence, or just plain lost. I have been concentrating lately on L.A.M.P. applications, but that doesn't quite transfer back to the desktop environment.

自从我实际进行桌面开发以来已经有一段时间了,我的大多数工具都是生锈的,没有许可证,或者只是丢失了。我最近一直专注于L.A.M.P.应用程序,但这并没有完全转移回桌面环境。

Some options:

database:  MySql (my fav), Access, MSSql
language:  C++, VB, PHP, Java, C#

I have been gravitating towards Access/VisualBasic, not because I like it very much, but because it is simple to set up and deploy. A database server (MySql, MsSql) would probably be too hard to deploy/maintain for the novice computer user. Even though from a purist point of view, C++ is the better language, it would take too much effort to bootstrap an application (IMHO). Java is too cumbersome (again IMHO).

我一直倾向于Access / VisualBasic,不是因为我非常喜欢它,而是因为它很容易设置和部署。对于新手计算机用户来说,数据库服务器(MySql,MsSql)可能太难以部署/维护。尽管从纯粹主义的角度来看,C ++是更好的语言,但引导应用程序(恕我直言)需要花费太多精力。 Java太麻烦了(再次恕我直言)。

The other consideration is cost. Although I can convince him to acquire proper software runtime licences, I probably won't be able to get him to purchase necessary development tools, and certainly the project isn't paying enough to justify substantial purchases which will probably not be used again.

另一个考虑因素是成本。虽然我可以说服他获得适当的软件运行时许可证,但我可能无法让他购买必要的开发工具,当然该项目还没有足够的费用来证明可能不会再次使用的大量购买。

I would appreciate your input on platform selection, development tools and application frameworks, thanx muchly.

我非常感谢您对平台选择,开发工具和应用程序框架的意见。

Edit 23-May-09

Thank you everyone for your excellent advice.

谢谢大家的好建议。

I have settled on C# Express. So far, I've avoided learning C#, but what's another language?; and I have a whole week to get up to speed.

我已经选择了C#Express。到目前为止,我已经避免学习C#了,但是另一种语言是什么?我有一整周的时间来加快速度。

I am waffling on whether to go with Access or MSSql (Express) database. With Access, I can deploy the database as a stand-alone file, but MSSql requires that the database server be installed. (AFAIK)

我对是否使用Access或MSSql(Express)数据库感到困惑。使用Access,我可以将数据库部署为独立文件,但MSSql要求安装数据库服务器。 (据我所知)

The client requires that the application be installed in multiple locations, some of which are mobile and not connected to the interweb. The dicey part is reconciling all the copies of the database, and determining which is the connonical version.

客户端要求将应用程序安装在多个位置,其中一些位置是移动的,而不是连接到interweb。冒险的部分是协调数据库的所有副本,并确定哪个是非常规版本。

10 个解决方案

#1


I'd go with the Express editions of C# and MSSQL. Free and easy to use/set up/deploy. Here's a deeper link to some general material specifically about using VS Express editions for Windows applications.

我会使用C#和MSSQL的Express版本。免费且易于使用/设置/部署。这里是一些关于使用VS Express版本的Windows应用程序的一般材料的更深层链接。

#2


I suggest: Just use Access. It works for small, simple, single user databases. It's not "just a database" it's also a "database application" and "database application development environment" in it's own right. That is: It's ridiculously quick and easy to throw together a db, CRUD forms, and simple reports; and the built-in VBA is handles most business logic, and you can allways call-out to C# dll's if you need to do anything "interesting".

我建议:只需使用Access。它适用于小型,简单的单用户数据库。它不仅仅是一个“数据库”,它本身也是一个“数据库应用程序”和“数据库应用程序开发环境”。那就是:将db,CRUD表单和简单报告放在一起是非常快速和容易的。并且内置的VBA处理大多数业务逻辑,如果你需要做任何“有趣”的事情,你总是可以调用C#dll。

Just tell the customer they need to loan you the production box for the duration of development (fair enough), and that Access (no need to mention which version) is about $200.00.

只需告诉客户他们需要在开发期间(生产公平)向您借用生产箱,而Access(无需提及哪个版本)约为200.00美元。

Customers who don't pay get they get what they ask for, not what they need.

不付钱的顾客可以得到他们所要求的东西,而不是他们需要的东西。

#3


C# + MSAccess/MSSql(express) = Profit.

C#+ MSAccess / MSSql(express)=利润。

I don't know exactly your requirements, but I would suggest the following:

我不确切知道你的要求,但我建议如下:

If you had the budget:

如果您有预算:

  • Visual Studio Professional
  • Visual Studio Professional

  • MS SQL or Access
  • MS SQL或Access

  • DevExpress Components for forms and database persistence.
  • DevExpress组件用于表单和数据库持久性。

If you don't have the budget

如果你没有预算

  • Visual Studio Express
  • Visual Studio Express

  • MySql
  • NHibernate or Linq2Entities
  • NHibernate或Linq2Entities

  • WPF or Windows Forms
  • WPF或Windows窗体

#4


I don't know why you think another database engine would be easier to administer than MS SQL. There's a free-as-in-beer edition of MS SQL called 'Express' that might suit. It supports all the same DDL and SQL features as the full database engine: in case you need them; it's just limited in size and number of CPUs.

我不知道为什么你认为另一个数据库引擎比MS SQL更容易管理。有一个名为'Express'的免费啤酒版MS SQL可能适合。它支持与完整数据库引擎相同的所有DDL和SQL功能:如果您需要它们;它的大小和CPU数量都有限。

Likewise there are free/express edition of the developer tools, which aren't missing much functionality (most notably perhaps the ability to write an installation program, but there are other free ways to do that). I don't know PHP or Java but if I were given a choice between C++ and C# (I'm familiar with both), I'd say that C# is virtually as capable for most applications except perhaps soft-real-time, and is quite a bit easier and more pleasant.

同样,还有开发人员工具的免费/快速版本,这些版本不缺少太多功能(最值得注意的可能是编写安装程序的能力,但还有其他免费方法可以做到这一点)。我不知道PHP或Java,但如果我在C ++和C#之间做出选择(我对两者都很熟悉),我会说C#几乎可以用于大多数应用程序,除了软实时,以及更轻松,更愉快。

#5


My preference would be C# with MSSQL Express. You can use the visual studio express edition for your development environment.

我的偏好是使用MSSQL Express的C#。您可以将visual studio express版用于您的开发环境。

#6


Have you considered Delphi or C++Builder there are free versions available.

您是否考虑过Delphi或C ++ Builder可用的免费版本。

#7


Microsoft Visual Studio has express editions which are either cheap or free. That said, the choice is obvious: Winforms with C# or Visual Basic .Net (it's just a syntax question) talking to a MySql backend (for cost issues).

Microsoft Visual Studio具有廉价或免费的快速版本。也就是说,选择是显而易见的:使用C#或Visual Basic .Net进行Winforms(它只是一个语法问题)与MySql后端进行通信(针对成本问题)。

Microsoft Winforms is awesome but limited to Windows (Mono notwithstanding). Enjoy the project. It's way more fun than LAMP in my opinion, but not nearly as universal.

Microsoft Winforms非常棒但仅限于Windows(尽管Mono)。享受这个项目。在我看来,这比LAMP更有趣,但并不像普遍那样普遍。

Edit: If you have the extra time and patience (of course you would have to eat the hours and not bill the learning time), though C# is brilliant and very mature (even in .Net 1.1 it was :), you may want to write the app in one of the Python variants for .Net. That's what I would do... Python has a huge following and will probably come up sometime in your non-Microsoft future. C# on the other hand... well, if you Mono it could come up, but otherwise, it's like learning Italian: good in Italy, but useless otherwise. (I should know, I'm writing this from my place in Venice...)

编辑:如果你有额外的时间和耐心(当然你必须吃掉时间,而不是花费学习时间),虽然C#非常出色并且非常成熟(即使在.Net 1.1它是:),你可能想要在.Net的Python变体之一中编写应用程序。这就是我要做的...... Python拥有巨大的追随者,可能会在你的非微软未来的某个时候出现。另一方面C#......好吧,如果你单声​​道它可能会出现,但除此之外,它就像学习意大利语:在意大利很好,但在其他方面没用。 (我应该知道,我是从威尼斯的地方写的......)

#8


C# or VB.Net with SQLite.Net for the database. Pretty much cross platform across the board.

C#或VB.Net与SQLite.Net用于数据库。几乎是跨平台的跨平台。

#9


If you need a database local, one file (.dat) or the suggested from one's IDE (berkeleydb) or Sphinxsearch() Relevance sort order with pivot tables are often what users want and no database required only i/o according to document or graphics type.

如果你需要一个本地数据库,一个文件(.dat)或一个IDE的建议(berkeleydb)或Sphinxsearch()带有数据透视表的Relevance排序顺序通常是用户想要的,根据文档或图形,只有i / o不需要数据库类型。

#10


If you are developing application on desktop. I would say

如果您正在桌面上开发应用程序。我会说

  • Scripting Language:ASP.NET(C#)
  • Database: MS SQL 2005
  • 数据库:MS SQL 2005

  • Server: Windows Server 2003 with IIS 6
  • 服务器:带有IIS 6的Windows Server 2003

#1


I'd go with the Express editions of C# and MSSQL. Free and easy to use/set up/deploy. Here's a deeper link to some general material specifically about using VS Express editions for Windows applications.

我会使用C#和MSSQL的Express版本。免费且易于使用/设置/部署。这里是一些关于使用VS Express版本的Windows应用程序的一般材料的更深层链接。

#2


I suggest: Just use Access. It works for small, simple, single user databases. It's not "just a database" it's also a "database application" and "database application development environment" in it's own right. That is: It's ridiculously quick and easy to throw together a db, CRUD forms, and simple reports; and the built-in VBA is handles most business logic, and you can allways call-out to C# dll's if you need to do anything "interesting".

我建议:只需使用Access。它适用于小型,简单的单用户数据库。它不仅仅是一个“数据库”,它本身也是一个“数据库应用程序”和“数据库应用程序开发环境”。那就是:将db,CRUD表单和简单报告放在一起是非常快速和容易的。并且内置的VBA处理大多数业务逻辑,如果你需要做任何“有趣”的事情,你总是可以调用C#dll。

Just tell the customer they need to loan you the production box for the duration of development (fair enough), and that Access (no need to mention which version) is about $200.00.

只需告诉客户他们需要在开发期间(生产公平)向您借用生产箱,而Access(无需提及哪个版本)约为200.00美元。

Customers who don't pay get they get what they ask for, not what they need.

不付钱的顾客可以得到他们所要求的东西,而不是他们需要的东西。

#3


C# + MSAccess/MSSql(express) = Profit.

C#+ MSAccess / MSSql(express)=利润。

I don't know exactly your requirements, but I would suggest the following:

我不确切知道你的要求,但我建议如下:

If you had the budget:

如果您有预算:

  • Visual Studio Professional
  • Visual Studio Professional

  • MS SQL or Access
  • MS SQL或Access

  • DevExpress Components for forms and database persistence.
  • DevExpress组件用于表单和数据库持久性。

If you don't have the budget

如果你没有预算

  • Visual Studio Express
  • Visual Studio Express

  • MySql
  • NHibernate or Linq2Entities
  • NHibernate或Linq2Entities

  • WPF or Windows Forms
  • WPF或Windows窗体

#4


I don't know why you think another database engine would be easier to administer than MS SQL. There's a free-as-in-beer edition of MS SQL called 'Express' that might suit. It supports all the same DDL and SQL features as the full database engine: in case you need them; it's just limited in size and number of CPUs.

我不知道为什么你认为另一个数据库引擎比MS SQL更容易管理。有一个名为'Express'的免费啤酒版MS SQL可能适合。它支持与完整数据库引擎相同的所有DDL和SQL功能:如果您需要它们;它的大小和CPU数量都有限。

Likewise there are free/express edition of the developer tools, which aren't missing much functionality (most notably perhaps the ability to write an installation program, but there are other free ways to do that). I don't know PHP or Java but if I were given a choice between C++ and C# (I'm familiar with both), I'd say that C# is virtually as capable for most applications except perhaps soft-real-time, and is quite a bit easier and more pleasant.

同样,还有开发人员工具的免费/快速版本,这些版本不缺少太多功能(最值得注意的可能是编写安装程序的能力,但还有其他免费方法可以做到这一点)。我不知道PHP或Java,但如果我在C ++和C#之间做出选择(我对两者都很熟悉),我会说C#几乎可以用于大多数应用程序,除了软实时,以及更轻松,更愉快。

#5


My preference would be C# with MSSQL Express. You can use the visual studio express edition for your development environment.

我的偏好是使用MSSQL Express的C#。您可以将visual studio express版用于您的开发环境。

#6


Have you considered Delphi or C++Builder there are free versions available.

您是否考虑过Delphi或C ++ Builder可用的免费版本。

#7


Microsoft Visual Studio has express editions which are either cheap or free. That said, the choice is obvious: Winforms with C# or Visual Basic .Net (it's just a syntax question) talking to a MySql backend (for cost issues).

Microsoft Visual Studio具有廉价或免费的快速版本。也就是说,选择是显而易见的:使用C#或Visual Basic .Net进行Winforms(它只是一个语法问题)与MySql后端进行通信(针对成本问题)。

Microsoft Winforms is awesome but limited to Windows (Mono notwithstanding). Enjoy the project. It's way more fun than LAMP in my opinion, but not nearly as universal.

Microsoft Winforms非常棒但仅限于Windows(尽管Mono)。享受这个项目。在我看来,这比LAMP更有趣,但并不像普遍那样普遍。

Edit: If you have the extra time and patience (of course you would have to eat the hours and not bill the learning time), though C# is brilliant and very mature (even in .Net 1.1 it was :), you may want to write the app in one of the Python variants for .Net. That's what I would do... Python has a huge following and will probably come up sometime in your non-Microsoft future. C# on the other hand... well, if you Mono it could come up, but otherwise, it's like learning Italian: good in Italy, but useless otherwise. (I should know, I'm writing this from my place in Venice...)

编辑:如果你有额外的时间和耐心(当然你必须吃掉时间,而不是花费学习时间),虽然C#非常出色并且非常成熟(即使在.Net 1.1它是:),你可能想要在.Net的Python变体之一中编写应用程序。这就是我要做的...... Python拥有巨大的追随者,可能会在你的非微软未来的某个时候出现。另一方面C#......好吧,如果你单声​​道它可能会出现,但除此之外,它就像学习意大利语:在意大利很好,但在其他方面没用。 (我应该知道,我是从威尼斯的地方写的......)

#8


C# or VB.Net with SQLite.Net for the database. Pretty much cross platform across the board.

C#或VB.Net与SQLite.Net用于数据库。几乎是跨平台的跨平台。

#9


If you need a database local, one file (.dat) or the suggested from one's IDE (berkeleydb) or Sphinxsearch() Relevance sort order with pivot tables are often what users want and no database required only i/o according to document or graphics type.

如果你需要一个本地数据库,一个文件(.dat)或一个IDE的建议(berkeleydb)或Sphinxsearch()带有数据透视表的Relevance排序顺序通常是用户想要的,根据文档或图形,只有i / o不需要数据库类型。

#10


If you are developing application on desktop. I would say

如果您正在桌面上开发应用程序。我会说

  • Scripting Language:ASP.NET(C#)
  • Database: MS SQL 2005
  • 数据库:MS SQL 2005

  • Server: Windows Server 2003 with IIS 6
  • 服务器:带有IIS 6的Windows Server 2003