客户机服务器模式有哪些?

客户机服务器模式有哪些?,第1张

如电子邮件交换,Web访问和数据库访问功能,是建立在客户服务器模式。用户访问银行服务,从他们的电脑使用Web浏览器客户端发送请求到Web服务器在银行。该方案可能反过来请求转发给它自己的数据库客户端程序,在另一家银行的计算机发送一个请求到数据库服务器检索帐户信息。该余额返回到银行的数据库客户端,这反过来又服务于它的回Web浏览器客户端显示结果给用户。客户机服务器模式已成为网络计算的核心思想之一。许多商业应用程序被写入今天使用客户服务器模型。所以,做互联网的主要应用协议,如的>客户端程序和服务器之间通信用这是网络传输层的问题,在传输层上主要就是两种数据包,即为TCP(可靠连接)、UDP(不可靠连接),这个其实与你想要做的服务器和程序设计没有大的关系,不知道你要搭建什么服务器,是windows还是linux 服务器,在windows下面一般是ASPnet +SQL server (很多人现在也在windows下做apacha+php+mysql); 在linux下面是apacha+php+mysql;网站使用的是>进程间通信机制
1 文件映射
文件映射(Memory-Mapped Files)能使进程把文件内容当作进程地址区间一块内存那样来对待。因此,进程不必使用文件I/O *** 作,只需简单的指针 *** 作就可读取和修改文件的内容。
Win32 API允许多个进程访问同一文件映射对象,各个进程在它自己的地址空间里接收内存的指针。通过使用这些指针,不同进程就可以读或修改文件的内容,实现了对文件中数据的共享。
应用程序有三种方法来使多个进程共享一个文件映射对象。
(1)继承:第一个进程建立文件映射对象,它的子进程继承该对象的句柄。
(2)命名文件映射:第一个进程在建立文件映射对象时可以给该对象指定一个名字(可与文件名不同)。第二个进程可通过这个名字打开此文件映射对象。另外,第一个进程也可以通过一些其它IPC机制(有名管道、邮件槽等)把名字传给第二个进程。
(3)句柄复制:第一个进程建立文件映射对象,然后通过其它IPC机制(有名管道、邮件槽等)把对象句柄传递给第二个进程。第二个进程复制该句柄就取得对该文件映射对象的访问权限。
文件映射是在多个进程间共享数据的非常有效方法,有较好的安全性。但文件映射只能用于本地机器的进程之间,不能用于网络中,而开发者还必须控制进程间的同步。
2 共享内存
Win32 API中共享内存(Shared Memory)实际就是文件映射的一种特殊情况。进程在创建文件映射对象时用0xFFFFFFFF来代替文件句柄(HANDLE),就表示了对应的文件映射对象是从 *** 作系统页面文件访问内存,其它进程打开该文件映射对象就可以访问该内存块。由于共享内存是用文件映射实现的,所以它也有较好的安全性,也只能运行于同一计算机上的进程之间。
注意点: 要控制同步,而且CString、list、arry、map等的collect class都不能安全的使用于共享内存中
不要把拥有虚函数之C++类放到共享内存中
不要把CObject派生类之MFC对象放到共享内存中
不要使用"point within the shared memory"的指针
不要使用"point outside of the shared memory"的指针
使用"based"指针是安全的,但要小心使用
3 匿名管道
管道(Pipe)是一种具有两个端点的通信通道:有一端句柄的进程可以和有另一端句柄的进程通信。管道可以是单向-一端是只读的,另一端点是只写的;也可以是双向的一管道的两端点既可读也可写。
匿名管道(Anonymous Pipe)是 在父进程和子进程之间,或同一父进程的两个子进程之间传输数据的无名字的单向管道。通常由父进程创建管道,然后由要通信的子进程继承通道的读端点句柄或写 端点句柄,然后实现通信。父进程还可以建立两个或更多个继承匿名管道读和写句柄的子进程。这些子进程可以使用管道直接通信,不需要通过父进程。
匿名管道是单机上实现子进程标准I/O重定向的有效方法,它不能在网上使用,也不能用于两个不相关的进程之间。
4 命名管道
命名管道(Named Pipe)是服务器进程和一个或多个客户进程之间通信的单向或双向管道。不同于匿名管道的是命名管道可以在不相关的进程之间和不同计算机之间使用,服务器建立命名管道时给它指定一个名字,任何进程都可以通过该名字打开管道的另一端,根据给定的权限和服务器进程通信。
命名管道提供了相对简单的编程接口,使通过网络传输数据并不比同一计算机上两进程之间通信更困难,不过如果要同时和多个进程通信它就力不从心了。
5 邮件槽
邮件槽(Mailslots)提 供进程间单向通信能力,任何进程都能建立邮件槽成为邮件槽服务器。其它进程,称为邮件槽客户,可以通过邮件槽的名字给邮件槽服务器进程发送消息。进来的消 息一直放在邮件槽中,直到服务器进程读取它为止。一个进程既可以是邮件槽服务器也可以是邮件槽客户,因此可建立多个邮件槽实现进程间的双向通信。
通过邮件槽可以给本地计算机上的邮件槽、其它计算机上的邮件槽或指定网络区域中所有计算机上有同样名字的邮件槽发送消息。广播通信的消息长度不能超过400字节,非广播消息的长度则受邮件槽服务器指定的最大消息长度的限制。
邮件槽与命名管道相似,不过它传输数据是通过不可靠的数据报(如TCP/IP协议中的UDP包)完成的,一旦网络发生错误则无法保证消息正确地接收,而命名管道传输数据则是建立在可靠连接基础上的。不过邮件槽有简化的编程接口和给指定网络区域内的所有计算机广播消息的能力,所以邮件槽不失为应用程序发送和接收消息的另一种选择。
6 剪贴板
剪贴板(Clipped Board)实质是Win32 API中一组用来传输数据的函数和消息,为Windows应用程序之间进行数据共享提供了一个中介,Windows已建立的剪切(复制)-粘贴的机制为不同应用程序之间共享不同格式数据提供了一条捷径。当用户在应用程序中执行剪切或复制 *** 作时,应用程序把选取的数据用一种或多种格式放在剪贴板上。然后任何其它应用程序都可以从剪贴板上拾取数据,从给定格式中选择适合自己的格式。
剪贴板是一个非常松散的交换媒介,可以支持任何数据格式,每一格式由一无符号整数标识,对标准(预定义)剪贴板格式,该值是Win32 API定义的常量;对非标准格式可以使用Register Clipboard Format函数注册为新的剪贴板格式。利用剪贴板进行交换的数据只需在数据格式上一致或都可以转化为某种格式就行。但剪贴板只能在基于Windows的程序中使用,不能在网络上使用。
7 动态数据交换
动态数据交换(DDE)是使用共享内存在应用程序之间进行数据交换的一种进程间通信形式。应用程序可以使用DDE进行一次性数据传输,也可以当出现新数据时,通过发送更新值在应用程序间动态交换数据。
DDE和剪贴板一样既支持标准数据格式(如文本、位图等),又可以支持自己定义的数据格式。但它们的数据传输机制却不同,一个明显区别是剪贴板 *** 作几乎总是用作对用户指定 *** 作的一次性应答-如从菜单中选择Paste命令。尽管DDE也可以由用户启动,但它继续发挥作用一般不必用户进一步干预。DDE有三种数据交换方式:
(1) 冷链:数据交换是一次性数据传输,与剪贴板相同。
(2) 温链:当数据交换时服务器通知客户,然后客户必须请求新的数据。
(3) 热链:当数据交换时服务器自动给客户发送数据。
DDE交换可以发生在单机或网络中不同计算机的应用程序之间。开发者还可以定义定制的DDE数据格式进行应用程序之间特别目的IPC,它们有更紧密耦合的通信要求。大多数基于Windows的应用程序都支持DDE。
8 对象连接与嵌入
应用程序利用对象连接与嵌入(OLE)技术管理复合文档(由多种数据格式组成的文档),OLE提供使某应用程序更容易调用其它应用程序进行数据编辑的服务。例如,OLE支持的字处理器可以嵌套电子表格,当用户要编辑电子表格时OLE库可自动启动电子表格编辑器。当用户退出电子表格编辑器时,该表格已在原始字处理器文档中得到更新。在这里电子表格编辑器变成了字处理器的扩展,而如果使用DDE,用户要显式地启动电子表格编辑器。
同DDE技术相同,大多数基于Windows的应用程序都支持OLE技术。
9 动态连接库
Win32动态连接库(DLL)中的全局数据可以被调用DLL的所有进程共享,这就又给进程间通信开辟了一条新的途径,当然访问时要注意同步问题。
虽然可以通过DLL进行进程间数据共享,但从数据安全的角度考虑,我们并不提倡这种方法,使用带有访问权限控制的共享内存的方法更好一些。
10 远程过程调用
Win32 API提供的远程过程调用(RPC)使应用程序可以使用远程调用函数,这使在网络上用RPC进行进程通信就像函数调用那样简单。RPC既可以在单机不同进程间使用也可以在网络中使用。
由于Win32 API提供的RPC服从OSF-DCE(Open Software Foundation Distributed Computing Environment)标准。所以通过Win32 API编写的RPC应用程序能与其它 *** 作系统上支持DEC的RPC应用程序通信。使用RPC开发者可以建立高性能、紧密耦合的分布式应用程序。
11 NetBios函数
Win32 API提供NetBios函数用于处理低级网络控制,这主要是为IBM NetBios系统编写与Windows的接口。除非那些有特殊低级网络功能要求的应用程序,其它应用程序最好不要使用NetBios函数来进行进程间通信。
12 Sockets
Windows Sockets规范是以UCBerkeley大学BSD UNIX中流行的Socket接口为范例定义的一套Windows下的网络编程接口。除了Berkeley Socket原有的库函数以外,还扩展了一组针对Windows的函数,使程序员可以充分利用Windows的消息机制进行编程。
现在通过Sockets实现进程通信的网络应用越来越多,这主要的原因是Sockets的跨平台性要比其它IPC机制好得多,另外WinSock 20不仅支持TCP/IP协议,而且还支持其它协议(如IPX)。Sockets的唯一缺点是它支持的是底层通信 *** 作,这使得在单机的进程间进行简单数据传递不太方便,这时使用下面将介绍的WM_COPYDATA消息将更合适些。
13 WM_COPYDATA消息
WM_COPYDATA是一种非常强大却鲜为人知的消息。当一个应用向另一个应用传送数据时,发送方只需使用调用SendMessage函数,参数是目的窗口的句柄、传递数据的起始地址、WM_COPYDATA消息。接收方只需像处理其它消息那样处理WM_COPY DATA消息,这样收发双方就实现了数据共享。
WM_COPYDATA是一种非常简单的方法,它在底层实际上是通过文件映射来实现的。它的缺点是灵活性不高,并且它只能用于Windows平台的单机环境下。

ftp:文件传输协议,主要功能是文件的共享,比方说,你自己的电脑上有个软件,但是因为体积过大,无法用一般的比如qq等工具发给别人,那么你可以使用ftp,让需要的人,主动来你的电脑上下载,相当于使用ftp以后,你的电脑就是服务器,来下软件的人就是客户端,有专业的ftp软件,你可以去试下。很简单。

在默认网站属性的常规属性中选择配置--然后单击调试选项卡--起用那里的两个ASP和ASPNET的调试环境就可以了
其他配置我就不说了你应该知道如果不知道的话我下面提供了一个详细的调试环境文章以供参考
大家知道,Microsoft为了更好地预防恶意用户和攻击者的攻击,在默认情况下,没有将 IIS60 安装到 Windows Server 2003 家族的成员上。而且,当我们最初安装 IIS60 时,该服务在高度安全和"锁定"模式下安装。在默认情况下,IIS60 只为静态内容提供服务即,诸如 ASP、ASPNET、在服务器端的包含文件、WebDAV 发布和 FrontPage Server Extensions 功能只有在启用时才工作。在windows 2003 IIS 60中安装部署ASPnet环境,我们首先要了解一下IIS60 新的特点,在windows 2003 Server下如何安装IIS60,在IIS60的配合下我们如何来安装和部署ASPnet环境,以及它们之间关系,下面的内容将给大家一个解答。
1、使用"配置您的服务器向导"安装 IIS60
1)从"开始"菜单,单击"管理您的服务器"。
2)在"管理您的服务器角色"下,单击"添加或删除角色"。
3)阅读"配置您的服务器向导"中的预备步骤,然后单击"下一步"。
4)在"服务器角色"下,单击"应用程序服务器 (IIS,ASPNET)",然后单击"下一步"。
5)阅读概要信息,然后单击"下一步"。
6)单击"完成"。
2、使用控制面板安装 IIS、添加组件或删除组件
1)从"开始"菜单,单击"控制面板"。
2)双击"添加或删除程序"。
3)单击"添加/删除 Windows 组件"。
4)在"组件"列表框中,单击"应用程序服务器"。
5)单击"详细信息"。
6)单击"Internet 信息服务管理器"。
7)单击"详细信息"以查看 IIS 可选组件的列表。
8)选择要安装的所有可选组件。
9)单击"确定",直到返回到"Windows 组件向导"。
10)单击"下一步",然后完成"Windows 组件向导"。
三、在Windows 2003 Server 安装 ASPNET
Windows Server 2003 家族利用 ASPNET 和 IIS 集成改善了开发人员体验。ASPNET 识别大多数 ASP 代码,同时为创建可作为 Microsoft NET Framework 的一部分工作的企业级 Web 应用程序提供更多的功能。使用ASPNET 允许我们充分利用公共语言运行库的功能,如类型安全、继承、语言互 *** 作性和版本控制。IIS 60 还为最新的 Web 标准,包括 XML、简单对象访问协议 (SOAP) 和 Internet 协议版本 60 (IPv60),提供支持。
ASPNET 是一个统一的 Web 开发平台,它提供开发人员创建企业级 Web 应用程序所需的服务。尽管 ASPNET 的语法基本上与 ASP 兼容,但是它还提供了一个新的编程模型和基础结构以提高应用程序的安全性、缩放性和稳定性。通过逐渐向现有的 ASP 应用程序增加 ASPNET 功能,我们可以自由地使其增大。ASPNET 是一个编译的、基于 NET 的环境;我们可以用任何 NET 兼容的语言(包括 Microsoft Visual BasicNET,Microsoft Visual C# 和 Microsoft JScript NET)创作应用程序。另外,整个 Microsoft NET Framework 可用于任何 ASPNET 应用程序。开发人员可以很容易地从这些技术受益,这些技术包括管理的公共语言运行库环境、类型安全、继承等。
ASPNET的优点如下:
1)可管理性: ASPNET 使用基于文本的、分级的配置系统,简化了将设置应用于服务器环境和 Web 应用程序的工作。因为配置信息是存储为纯文本的,因此可以在没有本地管理工具的帮助下应用新的设置。配置文件的任何变化都可以自动检测到并应用于应用程序。
2)安全: ASPNET 为 Web 应用程序提供了默认的授权和身份验证方案。开发人员可以根据应用程序的需要很容易地添加、删除或替换这些方案。
3)易于部署: 通过简单地将必要的文件复制到服务器上,ASPNET 应用程序即可以部署到该服务器上。不需要重新启动服务器,甚至在部署或替换运行的已编译代码时也不需要重新启动。
4)增强的性能: ASPNET 是运行在服务器上的已编译代码。与传统的 Active Server Pages (ASP) 不同,ASPNET 能利用早期绑定、实时 (JIT) 编译、本机优化和全新的缓存服务来提高性能。
5)灵活的输出缓存: 根据应用程序的需要,ASPNET 可以缓存页数据、页的一部分或整个页。缓存的项目可以依赖于缓存中的文件或其他项目,或者可以根据过期策略进行刷新。
6)国际化: ASPNET 在内部使用 Unicode 以表示请求和响应数据。可以为每台计算机、每个目录和每页配置国际化设置。
7)移动设备支持: ASPNET 支持任何设备上的任何浏览器。开发人员使用与用于传统的桌面浏览器相同的编程技术来处理新的移动设备。
8)扩展性和可用性: ASPNET 被设计成可扩展的、具有特别专有的功能来提高群集的、多处理器环境的性能。此外,Internet 信息服务 (IIS) 和 ASPNET 运行时密切监视和管理进程,以便在一个进程出现异常时,可在该位置创建新的进程使应用程序继续处理请求。
9)跟踪和调试: ASPNET 提供了跟踪服务,该服务可在应用程序级别和页面级别调试过程中启用。可以选择查看页面的信息,或者使用应用程序级别的跟踪查看工具查看信息。在开发和应用程序处于生产状态时,ASPNET 支持使用 NET Framework 调试工具进行本地和远程调试。当应用程序处于生产状态时,跟踪语句能够留在产品代码中而不会影响性能。
10)与 NET Framework 集成: 因为 ASPNET 是 NET Framework 的一部分,整个平台的功能和灵活性对 Web 应用程序都是可用的。也可从 Web 上流畅地访问 NET 类库以及消息和数据访问解决方案。ASPNET 是独立于语言之外的,所以开发人员能选择最适于应用程序的语言。另外,公共语言运行库的互用性还保存了基于 COM 开发的现有投资。
11)与现有 ASP 应用程序的兼容性: ASP 和 ASPNET 可并行运行在 IIS Web 服务器上而互不冲突;不会发生因安装 ASPNET 而导致现有 ASP 应用程序崩溃的可能。ASPNET 仅处理具有 aspx 文件扩展名的文件。具有 asp 文件扩展名的文件继续由 ASP 引擎来处理。然而,应该注意的是会话状态和应用程序状态并不在 ASP 和 ASPNET 页面之间共享。
安装 ASPNET
在 Windows Server 2003 家族、Windows 2000 (Professional、Server 和 Advanced Server)以及 Windows XP Professional 上的客户端和服务器应用程序都支持 ASPNET。
运行 Microsoft Windows Server 2003 家族成员的服务器可以配置为应用程序服务器,并将 ASPNET 作为在配置应用程序服务器角色时可以启用的选项。要向产品服务器部署 ASPNET Web 应用程序,在分发应用程序之前,必须确保在产品服务器中启用了 ASPNET 和 IIS 角色。
1、使用"配置您的服务器"向导在运行 Windows Server 2003 的服务器中安装 ASPNET
1)从"开始"菜单中,单击"管理您的服务器";在"管理您的服务器"窗口中,单击"添加或删除角色"。
2)在"配置您的服务器向导"中,单击"下一步",并在"服务器角色"对话框中,选中"应用程序服务器 (IIS、ASPNET)",然后单击"下一步"。
3)在"应用程序服务器选项"对话框中,选中"启用 ASPNET"复选框,单击"下一步",然后再单击"下一步"。
4)如有必要,请将 Windows Server 2003 安装 CD 插入 CD-ROM 驱动器,然后单击"下一步"。
5)当安装完成时,单击"完成"。
2、在运行 Windows Server 2003 的服务器中使用"添加或删除程序"安装 ASPNET
1)从"开始"菜单中,指向"控制面板",然后单击"添加或删除程序"。
2)在"添加或删除程序"对话框中,单击"添加/删除 Windows 组件"。
3)在"Windows 组件"向导中的"组件"中,选中"应用程序服务器"复选框,然后单击"下一步"。
4)当在"Windows 组件"向导中完成对 Windows Server 2003 的配置时,单击"完成"。
3、在运行 Windows Server 2003 的服务器中的 IIS 管理器中启用 ASPNET
1)从"开始"菜单中,单击"运行"。
2)在"运行"对话框中的"打开"框中,键入 inetmgr,然后单击"确定"。
3)在 IIS 管理器中,展开本地计算机,然后单击"Web 服务扩展"。
4)在右侧窗格中,右键单击"ASPNET"然后单击"允许"。ASPNET 的状态变为"允许"。
ASPNET Web 应用程序的布局
ASPNET 应用程序被定义为可从 Web 服务器上的虚拟目录及其子目录中调用的所有文件和可执行码。其中可以包含网页(html 文件)、Web 表单页面(aspx 文件)、Web 表单用户控件(ascx 文件)、XML Web 服务(asmx 文件)、>服务器就是一个程序,时刻准备接收网络上其他计算机(或本机)上的某些程序发出的指令(字符串),然后按照指令完成某些工作。例如,你做了一个程序,准备接收字符串(sell,001A,5,3),这个串表示:销售001A编号的商品,单价5元,卖了3个,然后把这个信息以某种格式存入文件,以便以后作为统计依据。那么给这个服务器发串的大概就是一个收银台的pos机,上面运行着图形界面,在收款员的确定按钮按下时,发出了这笔交易串。这个pos机运行的就是客户端程序。
服务器程序需要时刻运行,时刻准备接收各种类型请求并处理。客户端程序随便一些,随时运行一次也可以。
如果客户端非常多时,服务器程序就忙不过来了,就需要进程池、线程池等排队算法缓解压力,也可以把各个请求以某种分类发送给不同服务器来缓解压力,总之方法有很多,都是服务器开发的重点。

你不能指望WM_COPYDATA 在两台计算机直线传数据。
通信的方式主要是几个层面的:
1) 传输层面的通信,这里主要是指TCP/UDP , 你可以在服务程序上开一个Socket 端口进行侦听,然后客户端程序开Socket端口去连接服务器程序。 这么做的话,你什么数据都可以传,但是不好的地方就是需要自己定义传输控制协议。
2) 架构在现有应用层协议上的通信。 典型的如在>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13348797.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-19
下一篇 2023-07-19

发表评论

登录后才能评论

评论列表(0条)

保存