asp.net和winform程序上的区别都有哪些?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net和winform程序上的区别都有哪些?相关的知识,希望对你有一定的参考价值。

一个是b/s架构模式开发,即网页开发;一个是c/s架构模式开发,即窗体应用程序开发。两种开发可以采用相同的编程语言,例如C#、vB。网上一些软件既有窗体版也有网络版,便可以采用以上两种模式开发。
一、C/S模式与B/S模式的比较分析

  C/S模式主要由客户应用程序(Client)、服务器管理程序(Server)和中间件(middleware)三个部件组成。客户应用程序是系统中用户与数据进行交互的部件。服务器程序负责有效地管理系统资源,如管理一个信息数据库,其主要工作是当多个客户并发地请求服务器上的相同资源时,对这些资源进行最优化管理。中间件负责联结客户应用程序与服务器管理程序,协同完成一个作业,以满足用户查询管理数据的要求。
  B/S模式是一种以Web技术为基础的新型的MIS系统平台模式。把传统C/S模式中的服务器部分分解为一个数据服务器与一个或多个应用服务器(Web服务器),从而构成一个三层结构的客户服务器体系。
  第一层客户机是用户与整个系统的接口。客户的应用程序精简到一个通用的浏览器软件,如Netscape Navigator,微软公司的IE等。浏览器将HTML代码转化成图文并茂的网页。网页还具备一定的交互功能,允许用户在网页提供的申请表上输入信息提交给后台,并提出处理请求。这个后台就是第二层的Web服务器。
  第二层Web服务器将启动相应的进程来响应这一请求,并动态生成一串HTML代码,其中嵌入处理的结果,返回给客户机的浏览器。如果客户机提交的请求包括数据的存取,Web服务器还需与数据库服务器协同完成这一处理工作。
  第三层数据库服务器的任务类似于C/S模式,负责协调不同的Web服务器发出的SQ请求,管理数据库。

1. B/S模式的优势
  首先它简化了客户端。它无需象C/S模式那样在不同的客户机上安装不同的客户应用程序,而只需安装通用的浏览器软件。这样不但可以节省客户机的硬盘空间与内存,而且使安装过程更加简便、网络结构更加灵活。假设一个企业的决策层要开一个讨论库存问题的会议,他们只需从会议室的计算机上直接通过浏览器查询数据,然后显示给大家看就可以了。甚至与会者还可以把笔记本电脑联上会议室的网络插口,自己来查询相关的数据。其次,它简化了系统的开发和维护。系统的开发者无须再为不同级别的用户设计开发不同的客户应用程序了,只需把所有的功能都实现在Web服务器上,并就不同的功能为各个组别的用户设置权限就可以了。各个用户通过HTTP请求在权限范围内调用Web服务器上不同处理程序,从而完成对数据的查询或修改。现代企业面临着日新月异的竞争环境,对企业内部运作机制的更新与调整也变得逐渐频繁。相对于C/S,B/S的维护具有更大的灵活性。当形势变化时,它无须再为每一个现有的客户应用程序升级,而只需对Web服务器上的服务处理程序进行修订。这样不但可以提高公司的运作效率,还省去了维护时协调工作的不少麻烦。如果一个公司有上千台客户机,并且分布在不同的地点,那么便于维护将会显得更加重要。
  再次,它使用户的操作变得更简单。对于C/S模式,客户应用程序有自己特定的规格,使用者需要接受专门培训。而采用B/S模式时,客户端只是一个简单易用的浏览器软件。无论是决策层还是操作层的人员都无需培训,就可以直接使用。B/S模式的这种特性,还使 MIS系统维护的限制因素更少。
  最后,B/S特别适用于网上信息发布,使得传统的MIS的功能有所扩展。这是C/S所无法实现的。而这种新增的网上信息发布功能恰是现代企业所需的。这使得企业的大部分书面文件可以被电子文件取代,从而提高了企业的工作效率,使企业行政手续简化,节省人力物力。
  鉴于B/S相对于C/S的先进性,B/S逐渐成为一种流行的MIS系统平台。各软件公司纷纷推出自己的Internet方案,基于Web的财务系统、基于Web的ERP。一些企业已经领先一步开始使用它,并且收到了一定的成效。
  B/S模式的新颖与流行,和在某些方面相对于C/S的巨大改进,使B/S成了MIS系统平台的首选,也使人忽略了B/S不成熟的一面,以及C/S所固有的一些优点。下面让我们来看C/S相对于B/S的一些优势。
2. C/S模式的优势
  首先,交互性强是C/S固有的一个优点。在C/S中,客户端有一套完整的应用程序,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。B/S虽然由JavaScript、VBScript提供了一定的交互能力,但与C/S的一整套客户应用相比是太有限了。
  其次,C/S 模式提供了更安全的存取模式。由于C/S是配对的点对点的结构模式,采用适用于局域网、安全性比较好的网络协议(例如:NT的NetBEUI协议),安全性可以得到较好的保证。而B/S采用点对多点、多点对多点这种开放的结构模式,并采用TCP/IP这一类运用于Internet的开放性协议,其安全性只能靠数据服务器上管理密码的数据库来保证。现代企业需要有开放的信息环境,需要加强与外界的联系,有的还需要通过Internet发展网上营销业务,这使得大多数企业将他们的内部网与Internet相连。由于采用TCP/IP,他们必须采用一系列的安全措施,如构筑防火墙,来防止Internet的用户对企业内部信息的窃取以及外界病毒的侵入。
  再次,采用C/S模式将降低网络通信量。B/S采用了逻辑上的三层结构,而在物理上的网络结构仍然是原来的以太网或环形网。这样,第一层与第二层结构之间的通信、第二层与第三层结构之间的通信都需占用同一条网络线路。而C/S只有两层结构,网络通信量只包括Client与Server之间的通信量。所以,C/S处理大量信息的能力是B/S所无法比拟的。
  最后,由于C/S在逻辑结构上比B/S少一层,对于相同的任务,C/S完成的速度总比B/S快。使得C/S更利于处理大量数据。
  B/S模式的先进性和C/S模式的成熟性使人在现代企业MIS系统平台的选择上难定取舍。究竟应该选择哪种模式呢,有没有两种平台相结合的模式呢?

二、C/S模式与B/S模式相结合方案

  本文推荐一种较灵活的结合方式。系统分析员可以根据系统的特点,灵活地为不同的子功能采用不同的MIS系统平台,将两种模式交叉并行使用。
  首先,开发者根据一定的原则,将系统的所有子功能分类,决定哪些子功能适合采用C/S,哪些适合采用B/S。适合采用C/S的子功能应具备以下特点:1 安全性要求高;2要求具有较强的交互性;3使用范围小,地点固定;4要求处理大量数据。例如,仓库管理系统中的入库单、领料单的输入功能,财务系统中的凭证输入功能等等。而适合采用B/S的子功能应具备以下特点:1使用范围广,地点灵活;2功能变动频繁;3安全性、交互性要求不同。例如:企业内部信息发布功能,意见箱输入功能,公司财务分析表的查询功能,总裁决策支持系统中的查询功能等等。
  相对于单独采用C/S或B/S,这种方案的优点在于: 1保证敏感数据的安全性,特别是对数据库的修改和新增记录加强了控制;2经济有效地利用企业内部计算机的资源,简化了一部分可以简化的客户端;3既保证了复杂功能的交互性,又保证了一般功能的易用与统一;4系统维护简便,布局合理;5网络效率最高。
  如果系统开发者在系统设计阶段决定采用这种C/S与B/S相结合的模式,那么在系统开发生命周期的如下各个阶段相对这种新模式都应有所响应。
  在系统设计阶段主要考虑的是MIS系统平台选择问题。在详细设计阶段,系统开发者需要根据企业自身的业务特点,以及一定的选择原则,来决定各个子功能采用哪一种模式并在系统说明书上分别注明。在编码设计阶段,系统开发者需要针对采用不同模式的子功能,选用不同的编码方式(例如:C/S可以采用VB编程环境,而B/S采用ASP方法),然后编译生成不同的客户应用及Web服务程序。在安装调试阶段,其特点主要体现在系统的物理结构上,即特定的客户应用程序将被安装在特定的使用者的客户端上,Web服务程序需要被安装在Web服务器上,而每个客户端上都将被安装上浏览器,同时,客户应用的使用者必须接受一定的培训。在软件维护阶段,针对不同模式的子功能应采取不同维护方式。
参考技术A asp.net 开发网页的;
winform开发窗体应用程序的。
两种开发是采用相同的语言:C#和VB两种语言。
网上一些软件既有窗体版也有网络版,便可以采用以上两种模式开发本回答被提问者采纳
参考技术B 一个是窗体应用程序开发,一个是网页开发。。。

在 ASP.NET Core 中替换硬编码字符串都有哪些好的做法?

【中文标题】在 ASP.NET Core 中替换硬编码字符串都有哪些好的做法?【英文标题】:What are good practices for replacing hardcoded strings in ASP.NET Core?在 ASP.NET Core 中替换硬编码字符串有哪些好的做法? 【发布时间】:2022-01-11 02:13:32 【问题描述】:

首先让我说我是一名学生,但我的教育即将结束。

我正在开发一个 ASP.NET Core 应用程序作为我的期末考试项目,并且有一个关于在引用控制器和视图时使用硬编码字符串的问题。

一个例子是在我的视图中,我正在使用@URL 帮助器为特定视图创建 URL。这意味着我要给它两个字符串来寻找

@Url.Action("UploadVideo", "Practitioner")

我有拼写错误的习惯,这让 *** 很痛苦,启动应用程序却被告知视图不存在并意识到我错过了一封信。 我的想法是通过枚举类型来控制它。

我会注册一个名为 Controllers 的枚举

public enum Controllers

    AdminController,
    ClientController,
    HomeController,
    PractitionerController

并为每个具有相应视图的控制器注册一个枚举。

public enum AdminControllerViews

    Admin,
    CreateNewPractitioner,
    UpdatePractitioner

然后我将使用枚举来引用所有内容,就像前面的示例一样

@Url.Action(
   PractitionerControllerViews.UploadNewVideo.ToString(),
   Controllers.Practitioner.ToString()
)

这会是糟糕的代码吗? 我相信这将是强类型代码,如果我更改视图的名称,它会更容易。我没有在所有视图中摸索,而是在其中使用了它。

这样做的缺点是

不必要的代码 使用前需要在枚举中“注册”所有新视图

【问题讨论】:

使用带有字符串常量的类来代替枚举。那时不需要 ToString,但你仍然需要提供常量 @HansKesting 我明白你对只包含常量的静态类的意思。在我的示例中,我将其划分为每个控制器的视图。然后我应该为每个控制器创建一个类,并为控制器的名称创建一个类,还是将所有内容都放在一个类中,并使用预定义的 Enumerables? 使用类而不是枚举有什么好处?一般都是好奇的,因为我们的老师从来没有提到过,所有的例子都用了字符串。但我会向他发送一封包含我的问题的电子邮件,然后查看他的回复。 一个 const 可能有非常轻微的速度优势:该值将被直接包含而不是方法调用。 Const (or enum) over "magic string" : 编译器检查错别字和(值分布在好的类/枚举上)对可用值的一些智能帮助 在我短暂的研究时间里,我实际上遇到了一个解决方案,我认为这就是您的意思。我发现的帖子使用 T4 模板(尚未使用它)。 Using_T4_Templates_to_Create_Strongly_Typed_View_Names。但它不必自己编写,而是检查文件并为控制器和视图属性生成类。 【参考方案1】:

选项 1:

有一个实现源码生成器的nuget库

https://github.com/sleeuwen/UrlActionGenerator

它将扫描您的项目中的所有控制器和操作,并生成强类型扩展方法来生成链接。

选项 2:

使用nameof 运算符,如Url.Action(nameof(Controller.Method), nameof(Controller))

选项 3:

创建使用 lambda 表达式的自定义扩展方法,然后解析它们。 Url.Action<Controller>(c => c.Method())。您需要自己实现表达式解析器。

【讨论】:

我会研究选项。关于选项 1:我想在 URL 生成之外使用它,例如。在返回 RedirectToAction(method, controller) 的方法中。关于选项 2:我有默认的 HomeController。使用 nameof(HomeController) 时,它按预期返回“HomeController”。但是 ASP.NET 只想要“主页”。要么我需要一些功能来删除控制器部分,要么重写自定义路由。关于选项 3:如果我想在 Url 之外使用它,我需要为每个用例提供一个扩展方法。但我很欣赏你的回答。 您应该使用 nameof 命令。无需使用枚举并保持同步。要将“HomeController”映射到“Home”,只需编写一个扩展方法,将“Controller”替换为 string.Empty @citronas 是的,这将是一个简单的解决方案。我分为使用 nameof() 方法和静态类。但仔细想想,我找不到使用 nameof 的缺点,而类需要维护。

以上是关于asp.net和winform程序上的区别都有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

asp.net web应用程序和asp.net web窗体应用程序的区别?

在 asp.net 核心应用程序中存储需要经常查询的少量数据的选项都有哪些

.net 技术都有哪些主流框架应用?

ado.net和asp.net区别?

在 ASP.NET Core 中替换硬编码字符串都有哪些好的做法?

ASP.NETCore统一处理404错误都有哪些方式?