using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;namespace ConsoleApplication50
{ //自定义一个消息类
[Serializable]
class Message
{
public string State; //一个标志,代表Message中有用的数据要发往哪个窗体 public DataSet ReturnDataSet() //for Example,查询服务器数据,返回DataSet给客户端
{
}
}
}一个ERP的C/S;
For example
Client:发送比如查询订单.
Server:执行查询订单,序列化Message类,发送给客端
Client:接收数据反序列化,然后根据Message.State,然判断那个窗体需要这些数据,发送给这个窗体。
上面是一个构思而以。是可以实现的.
我想问一下大家都是用什么主法?我想看看我的方法是不是主流方法,还是菜。
解决方案 »
- 将程序集添加到缓存失败:拒绝访问
- Dictionary <TKey, TValue>.Keys添加值是如何实现的????
- 请问C#如何查看某一进程的上下行流量?
- VS2008 报package load failure 错
- 用C#开发一个Ftp服务器,与网络抓拍机进行Ftp传输的时候老是出现“目标机器积极拒绝,无法连接”的错误。
- c# winform 的GraphicsPath一个类怎么用,我画的路径怎么显示不出来??
- VC to C#的问题
- c#中用web.config文件控制对目录的访问
- plinq可以指定最大线程数吗?
- 请教一个安装FrameWork的问题
- ReportView代码绑定
- 讨论:nat一定要通过服务器中转吗?
完全不需要这个,而是通过事件来触发的,你不可能知道哪个窗体需要数据,就像观察者所讲的,只定义接口,只定义数据接口和依赖接口,具体谁关心服务器发送过来的数据,你不可能知道,你也没有必要知道;
Switch(Message.State)
{
case Form1:
触发Form1事件
break;
case Form2:
触发Form1事件
break;
}
我的大体思路如上.可行性如何?
哪有什么Message.State?哪有什么“Form事件”?看来你既不了解.net的Socket(或者TcpClient)异步编程,也不了解事件机制。两个概念全都正好满拧了。
如果走野路子,你可以就这样走下去,等知道自己错的时候再回头不晚,如果知道错了还不回头那么就一直走吧
问题是,服务器怎么知道客户端Form的名称?而且,仅仅一个string就能区分所有的消息吗?
再扯远点,通过返回值来得到消息是不够的。你的程序客户端应该不止一个吧?那一个客户端更改了数据怎么通知到其他客户端呢?需要有个后台线程监听或者轮询得到消息,然后通知UI更新。
服务器要做的,就是在数据更改的操作发生时,生成类似下面的消息,然后通知给客户端。至于客户端怎么处理,那是客户端的事。
[Serializable]
public class EntityChangedEventArgs : EventArgs
{
public EntityChangeType ChangedType { get; set; }
public Type EntityType { get; set; }
public object Entity { get; set; }
} [Serializable]
public enum EntityChangeType
{
Add,
Update,
Delete,
ListChanged
}
public class EntityChangedEventArgs : EventArgs
{
public EntityChangeType ChangedType { get; set; }
public Type EntityType { get; set; }
public object Entity { get; set; }
}//CSocket类,也就是接收信息用的类public delegate void Msg(EntityChangedEventArgs e);
//public delegate void Msg(string text);//定义一个委托 接收聊天信息
public static event Msg myevent1;
//在主窗体中
CSocket.myevent1+=new CSocket.Msg(CSocket_myevent1);
public void CSocket_myevent1(EntityChangedEventArgs e)
{
在这里收到
e.EntityType
====
}
是否像这样啊。
还有Message是个类我自定义的。事件也是自定义的。