CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  VB.NET

高分求C/S编程经验

楼主0412Rainbow(彩虹)2005-05-22 22:23:02 在 .NET技术 / VB.NET 提问

以前没写过C/S   的东西,现在想尝试一下,VB.net做Svr端都有什么劣势吗?还有如果做即时通讯系统,服务器端都要做些什么工作呢?还请有经验的高手给些提示,万分感谢!分数不够,可加!希望大家参与讨论! 问题点数:100、回复次数:25Top

1 楼50277(柳影随风)回复于 2005-05-22 23:11:13 得分 2

任何的语言都有他的优势和劣势!关键是看自己的掌握程度!做即时通信系统可以用TCP/IP   协议或UDP协议来做!Top

2 楼0412Rainbow(彩虹)回复于 2005-05-24 21:42:13 得分 0

我知道用UDP去做,楼上的可能是没有明白我的意思,我也知道每种语言都有它的优势,我说的是如果用VB.net做SVR都有哪些不好的地方,因为以前没有做过,是否能达到最好的性能.另外就是Svr端都需要做些什么工作,大家给点提示啊!谢.Top

3 楼0412Rainbow(彩虹)回复于 2005-05-28 22:01:12 得分 0

怎么还是没有回复啊~郁闷~大家给小弟说说啊~Top

4 楼50277(柳影随风)回复于 2005-05-31 22:12:20 得分 3

没仔细看楼主的问题!答偏了!道个谦!  
  但经验这个东西说不怎么出来!毕竟是一点一滴积累的,不是一天两天就能学到的!非要说传授经验的话就只能是多做,遇到问题在出来问声,做多了,经验就出来的!是做出来的!!!!!!!!Top

5 楼0412Rainbow(彩虹)回复于 2005-06-01 10:53:09 得分 0

楼上的大哥.客气了.我没做过C/S的东西,就是想知道S端大概都要做些什么样的工作.现在做S端,大部分人都用C去做吧~我想知道如果用Vb.net去做会在性能上有多大的劣势~嘿嘿~感谢50277(柳影随风)的关注.Top

6 楼zhanqiangz(闲云野鹤-Overriding)回复于 2005-06-01 11:07:14 得分 5

很希望有高手来指点c/s的开发技术!  
   
  一直做b/s的。Top

7 楼0412Rainbow(彩虹)回复于 2005-06-01 11:17:09 得分 0

B/s中,S端都大概要做些什么工作啊~应该和C/s中的S端类似吧~  
  工作的内容应该是一样的,实现的细节是不同的吧~Top

8 楼Snrmnm_sx(Ψ 踏雪无痕 Ω)回复于 2005-06-01 11:22:23 得分 15

本文将介绍如何创建一个三层应用程序,并且将介绍如何创建一个Web   Service服务。    
         
        ADO.NET创建Windows三层结构应用程序的体系架构如下图所示:    
         
         
         
      该结构分三个层次:表示层、业务层、数据层。    
         
      数据层:代表物理数据库。    
         
      业务层:负责数据层与表示层之间的数据传输。    
         
      表示层:应用程序的客户端,它通过业务层来访问数据库。    
         
      表示层所操作的是驻留在内存中的本地数据,当需要更新数据库数据时,要通过业务层提供的更新方法实现。这样可以大大提高应用程序的性能,而且,什么时候更新数据完全由你决定,提高了编程的灵活性。    
         
      2.实例:    
         
        这里我们具体做一个实例来看看如何用VB.NET创建三层结构的应用程序。    
         
      数据库:我们选择SQL   SERVER   的NorthWind数据库。    
         
      业务层:我们创建一个WebService作为中间层。(需要安装IIS服务)    
         
      表示层:我们写一个Windows   Form    
         
      第一步:创建WebService。    
         
      具体步骤如下:    
         
      1.   新建一个项目,选择ASP.NET   Web服务,命名为:”WebService   For   业务层”。    
         
      2.   添加两个Sql   DataAdapter,一个为Customer_da,它指向NorthWind数据库的Customers表,另一个为Order_da,指向Northwind数据库的Orders表。    
         
      3.   然后生成一个Typed   DataSet(选择“数据”菜单的“生成数据集”),命名为:Super_ds.    
         
      4.   数据库连接已经完成,下一步我们将考虑它与表示层之间的通信,这里我们定义两个方法。一个为:Get_DataSet,它返回一个Super_ds类型的数据集,另一个为:Update_DataSet,它负责更新数据库数据,   方法代码如下:    
         
      <WebMethod()>   Public   Function   Get_Dataset()   As   super_ds    
         
        customer_da.Fill(Super_ds1.Customers)    
         
        order_da.Fill(Super_ds1.Orders)    
         
        Return   Super_ds1    
         
        End   Function    
         
      <WebMethod()>   Public   Sub   Update_Dataset()    
         
        Super_ds1.AcceptChanges()    
         
      End   Sub    
         
      你可以运行测试一下你建立的这个WebService。它将提供两个方法。返回的DataSet是以XML表示的。    
         
      业务层的完整代码如下:    
         
      Imports   System.Web.Services    
         
      Public   Class   Service1    
         
      Inherits   System.Web.Services.WebService    
         
      ‘Web   Services   Designer   Generated   Code…….    
         
      <WebMethod()>   Public   Function   Get_Dataset()   As   super_ds    
         
        customer_da.Fill(Super_ds1.Customers)    
         
        order_da.Fill(Super_ds1.Orders)    
         
        Return   Super_ds1    
         
        End   Function    
         
      <WebMethod()>   Public   Sub   Update_Dataset()    
         
        Super_ds1.AcceptChanges()    
         
        End   Sub    
         
        '   WEB   SERVICE   EXAMPLE    
         
        '   The   HelloWorld()   example   service   returns   the   string   Hello   World.    
         
        '   To   build,   uncomment   the   following   lines   then   save   and   build   the   project.    
         
        '   To   test   this   web   service,   ensure   that   the   .asmx   file   is   the   start   page    
         
        '   and   press   F5.    
         
        '    
         
        '<WebMethod()>   Public   Function   HelloWorld()   As   String    
         
        '   HelloWorld   =   "Hello   World"    
         
        '   End   Function    
         
      End   Class    
         
      第二步:创建表示层    
         
      具体步骤如下:    
         
      1.   新建一个Windows应用程序,命名为:“Windows   Form   For   表示层”。    
         
      2.   在窗体上添加一个DataGrid,一个Button,Button1的text为“Load”,作用是:从业务层读取数据。    
         
      3.   在解决方案窗体中添加Web   引用,将我们自己建立的Web   Service   for   业务层引入到当前项目中。    
         
      4.   向Button1的Click事件添加如下代码:    
         
        Dim   Customer_Ds   As   New   localhost.super_ds()    
         
        Dim   ser1   As   New   localhost.Service1()    
         
        Customer_Ds.Merge(ser1.Get_Dataset)    
         
        DataGrid1.DataSource   =   Customer_Ds    
         
      这里我们调用了Web   Service的Get_DataSet函数,Update_DataSet方法的调用与此完全相同。    
         
      表示层的完整代码如下:    
         
      Imports   Data_Access_表示层    
         
      Public   Class   Form1    
         
        Inherits   System.Windows.Forms.Form    
         
      #Region   "   Windows   Form   Designer   generated   code   "    
         
        Public   Sub   New()    
         
        MyBase.New()    
         
        'This   call   is   required   by   the   Windows   Form   Designer.    
         
        InitializeComponent()    
         
        'Add   any   initialization   after   the   InitializeComponent()   call    
         
        End   Sub    
         
        'Form   overrides   dispose   to   clean   up   the   component   list.    
         
        Protected   Overloads   Overrides   Sub   Dispose(ByVal   disposing   As   Boolean)    
         
        If   disposing   Then    
         
        If   Not   (components   Is   Nothing)   Then    
         
        components.Dispose()    
         
        End   If    
         
        End   If    
         
        MyBase.Dispose(disposing)    
         
        End   Sub    
         
        Friend   WithEvents   Button1   As   System.Windows.Forms.Button    
         
        Friend   WithEvents   Button2   As   System.Windows.Forms.Button    
         
        Friend   WithEvents   Button3   As   System.Windows.Forms.Button    
         
        Friend   WithEvents   Client_DataSet   As   Data_Access_表示层.localhost.super_ds    
         
        Friend   WithEvents   DataGrid1   As   System.Windows.Forms.DataGrid    
         
        'Required   by   the   Windows   Form   Designer    
         
        Private   components   As   System.ComponentModel.Container    
         
        'NOTE:   The   following   procedure   is   required   by   the   Windows   Form   Designer    
         
        'It   can   be   modified   using   the   Windows   Form   Designer.    
         
        'Do   not   modify   it   using   the   code   editor.    
         
        <System.Diagnostics.DebuggerStepThrough()>   Private   Sub   InitializeComponent()    
         
        Me.Button1   =   New   System.Windows.Forms.Button()    
         
        Me.Button2   =   New   System.Windows.Forms.Button()    
         
        Me.Button3   =   New   System.Windows.Forms.Button()    
         
        Me.Client_DataSet   =   New   Data_Access_表示层.localhost.super_ds()    
         
        Me.DataGrid1   =   New   System.Windows.Forms.DataGrid()    
         
        CType(Me.Client_DataSet,   System.ComponentModel.ISupportInitialize).BeginInit()    
         
        CType(Me.DataGrid1,   System.ComponentModel.ISupportInitialize).BeginInit()    
         
        Me.SuspendLayout()    
         
        '    
         
        'Button1    
         
        '    
         
        Me.Button1.Location   =   New   System.Drawing.Point(88,   360)    
         
        Me.Button1.Name   =   "Button1"    
         
        Me.Button1.TabIndex   =   0    
         
        Me.Button1.Text   =   "load"    
         
        '    
         
        'Button2    
         
        '    
         
        Me.Button2.Location   =   New   System.Drawing.Point(232,   360)    
         
        Me.Button2.Name   =   "Button2"    
         
        Me.Button2.TabIndex   =   1    
         
        Me.Button2.Text   =   "update"    
         
        '    
         
        'Button3    
         
        '    
         
        Me.Button3.Location   =   New   System.Drawing.Point(376,   360)    
         
        Me.Button3.Name   =   "Button3"    
         
        Me.Button3.TabIndex   =   2    
         
        Me.Button3.Text   =   "clear"    
         
        '    
         
        'Client_DataSet    
         
        '    
         
        Me.Client_DataSet.DataSetName   =   "Client_DataSet"    
         
        Me.Client_DataSet.Locale   =   New   System.Globalization.CultureInfo("zh-CN")    
         
        Me.Client_DataSet.Namespace   =   "http://www.tempuri.org/CustomerDs.xsd"    
         
        '    
         
        'DataGrid1    
         
        '    
         
        Me.DataGrid1.DataMember   =   ""    
         
        Me.DataGrid1.Location   =   New   System.Drawing.Point(40,   56)    
         
        Me.DataGrid1.Name   =   "DataGrid1"    
         
        Me.DataGrid1.Size   =   New   System.Drawing.Size(480,   264)    
         
        Me.DataGrid1.TabIndex   =   3    
         
        '    
         
        'Form1    
         
        '    
         
        Me.AutoScaleBaseSize   =   New   System.Drawing.Size(6,   14)    
         
        Me.ClientSize   =   New   System.Drawing.Size(568,   429)    
         
        Me.Controls.AddRange(New   System.Windows.Forms.Control()   {Me.DataGrid1,   Me.Button3,   Me.Button2,   Me.Button1})    
         
        Me.Name   =   "Form1"    
         
        Me.Text   =   "Form1"    
         
        CType(Me.Client_DataSet,   System.ComponentModel.ISupportInitialize).EndInit()    
         
        CType(Me.DataGrid1,   System.ComponentModel.ISupportInitialize).EndInit()    
         
        Me.ResumeLayout(False)    
         
        End   Sub    
         
      #End   Region    
         
        Private   Sub   Button1_Click(ByVal   sender   As   System.Object,   ByVal   e   As   System.EventArgs)   Handles   Button1.Click    
         
        Dim   Customer_Ds   As   New   localhost.super_ds()    
         
        Dim   ser1   As   New   localhost.Service1()    
         
        Customer_Ds.Merge(ser1.Get_Dataset)    
         
        DataGrid1.DataSource   =   Customer_Ds    
         
        End   Sub    
         
      End   Class    
         
      总结:可见,表示层窗体上完全没有数据库连接控件,它与数据库的连接任务是通过业务层来完成的,这样,程序的结构更加清晰,当然业务层的实现也可以用其他方法,比如:写一个自己的类来完成与数据库的数据传输。    
  Top

9 楼Snrmnm_sx(Ψ 踏雪无痕 Ω)回复于 2005-06-01 11:24:13 得分 0

楼主希望楼上的例子能帮上你的忙!Top

10 楼50277(柳影随风)回复于 2005-06-01 12:09:01 得分 10

C/S结构   楼主可以想得简单点:每个客户端都必须安装一个应用程序,通常用于局域网内部,是企业内部的管理系统,优点是速度快,功能强大,缺点是如果系统有新版本产生,那就必须每个客户端都德重新安装(维护比较麻烦).Top

11 楼mozhmozl(暗夜精灵)回复于 2005-06-01 15:03:20 得分 2

初学帮顶一个Top

12 楼0412Rainbow(彩虹)回复于 2005-06-02 10:40:24 得分 0

感谢楼上的几位的回复,即时通讯系统应该是用的C/S的吧~偶现在想知道即时通讯系统的S端都要做些什么工作,希望大家继续参与讨论.分不够,开新帖加!Top

13 楼noway8881(老虎不发威,你当我是Hello Kitty)回复于 2005-06-02 13:00:53 得分 5

你可以下下tencent的S端看看。  
   
  性能上,.net版本的c/s要比java的c/s要好。其他的.......  
   
  下一个winXP总管,做什么优化时都特别慢。哎Top

14 楼50277(柳影随风)回复于 2005-06-02 13:33:50 得分 50

我有个例子,C/S结构的,不算严格意义上的三层,但还可以,楼主感兴趣的话留个油箱!Top

15 楼0412Rainbow(彩虹)回复于 2005-06-04 20:33:19 得分 0

感谢楼上的.我的邮箱是0412rainbow@163.com  
  tencent的S端可以下载吗?哪里有啊~Top

16 楼dengxw(威威)回复于 2005-06-04 21:59:29 得分 2

tencent的S端可以下载吗?哪里有啊~  
  我对这个感兴趣~呵呵~  
  有人提示下哪里有可以看看?~Top

17 楼50277(柳影随风)回复于 2005-06-05 11:58:19 得分 0

TO;0412Rainbow(彩虹)  
  收一下邮箱,刚发的!Top

18 楼0412Rainbow(彩虹)回复于 2005-06-07 13:11:28 得分 0

看到邮件了,呵呵,谢谢。大家继续讨论。参与就有分~Top

19 楼dingjuntm(大山)回复于 2005-06-07 21:37:06 得分 2

学习!Top

20 楼zeusvenus()回复于 2005-06-07 22:52:01 得分 2

其实这和VB.NET语言关系不大,是个普遍性的问题,做得好坏影响因素太多了。Top

21 楼pshy(无心)回复于 2005-06-08 00:31:37 得分 2

50277(柳影随风)    
  可以发一份给我参考下吗?  
  谢谢!  
  sgc_hy@163.comTop

22 楼50277(柳影随风)回复于 2005-06-08 12:02:00 得分 0

to   pshy(无心)    
  收一下!发了!Top

23 楼0412Rainbow(彩虹)回复于 2005-06-08 12:11:09 得分 0

50277我加你Q了啊`你接受了没啊~Top

24 楼50277(柳影随风)回复于 2005-06-08 13:03:11 得分 0

没得到信息!  
  316558530Top

25 楼0412Rainbow(彩虹)回复于 2005-07-08 16:09:47 得分 0

结贴了,说实在的,收获甚微,以至在结贴的之后都无法把分数分配出去,不过还是要感谢各位的热心支持,也很高兴能认识各位.希望大家以后有经验可以一起交流!谢谢.我的QQ:95794285   验证csdn  
  邮箱:0412rainbow@163.com       谢谢Top

相关问题

  • c/s编程的经验问题?
  • oracle&unix-c编程
  • 请推荐一本好一点的c++教材,最好是有过c语言编程经验的c++新手!
  • c++编程思想
  • C高级编程?
  • C++编程思想
  • c# 网络编程
  • C++编程问题!
  • C#的windows编程
  • 有多年c/c++编程经验,请教如何安排java的学习课程?

关键词

  • b/s
  • vb.net
  • 数据库
  • ds
  • 数据
  • 应用程序
  • me
  • 业务
  • 经验
  • 代码

得分解答快速导航

  • 帖主:0412Rainbow
  • 50277
  • 50277
  • zhanqiangz
  • Snrmnm_sx
  • 50277
  • mozhmozl
  • noway8881
  • 50277
  • dengxw
  • dingjuntm
  • zeusvenus
  • pshy

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo