今天的题目,对一些高手来说可能只是小菜一碟吧,我记下一些我不太会的题目,1.说说remoting和webservice的区别?2.你的三层架构中,数据层和业务层是怎么和表现层通信的?
我汗,我的回答是remoting,不太懂,因为我平时自己写的三层架构都是在一台服务器上的,原来他要求把数据层和业务层放一台服务器上,表现层放在另外一台服务器上。那个技术面试官说我说的那些还不是真正的MVC三层架构。3.session的生命周期到什么时候结束? 我晕,我真不懂,我以为session是不会结束的,但是还是说是整个应用程序关闭的时候,他说我对asp.net还不是很熟悉。汗,还是很菜,加紧补习基础知识中。4.写一个简单的委托类,公司饮水机没水时候,小王、小李或者公司其他同时给引水机加水。
我汗,我的回答是remoting,不太懂,因为我平时自己写的三层架构都是在一台服务器上的,原来他要求把数据层和业务层放一台服务器上,表现层放在另外一台服务器上。那个技术面试官说我说的那些还不是真正的MVC三层架构。3.session的生命周期到什么时候结束? 我晕,我真不懂,我以为session是不会结束的,但是还是说是整个应用程序关闭的时候,他说我对asp.net还不是很熟悉。汗,还是很菜,加紧补习基础知识中。4.写一个简单的委托类,公司饮水机没水时候,小王、小李或者公司其他同时给引水机加水。
解决方案 »
- 没分了,再问一问题,textbox1中输入多关键字用空格分开,怎么分别一个一个的读出来啊??
- 调试sock程序时发生错误。。不够,在加分,急救!!!
- datagridview_CellValidating问题?
- 和墨C#根据文件扩展名显示相应的图标问题
- 各位好,我用的系统是XP,请问如何安装SQL2000企业版??急急急!谁先告诉我,愿以20分相送!!!
- 大家看看呀,是不是.net的bug;还是我缺了什么东西
- 一个TextBox怎么只限定它只能输入数字,又或怎么判断它的值是一个数字.
- 请教高手几个问题
- checkbox 问题
- 求教!如何解决Graphics缺少 using 指令或程序集引用以及如何通过PictureBox显示图像
- C# 设置软件试用期?
- 帮我看看代码那里有问题
public void DoWater(object water)
{
//...加水
}
WaterHandler XiaoWang = new WaterHandler(DoWater);
XiaoWang(water);
不知道委托这题是不是这样的
1. Remoting 和 Web service 使用的都是SOAP 通信。 不同处为:
Web Service Remoting
1. 只能是HTTP。 可以是HTTP, TCP,SMTP, 和其它的。
2. 只支持XSD类型的Ojbect. 使用的是Binary通信, 那么几乎全部的类型都为可能。
3. 因为是通过HTTP, 所以理论上只要支持HTTP 只能是使用.NET的客户端。
的系统都可以得到支持。
4. 因为是使用IIS或者其他(JAVA...)所以对于 如果是通过IIS, 也和Web Service 一样, 如果没用IIS,
安全性, 可信赖性是很高的。 那安全性和可信赖性是取决于软件本身。
5. 简单,易用 比较繁琐一点。还有其他的一些。。2. 一般来说, 你的数据层(数据库),业务层(Middle Tier) 放在一台服务器里, 而你的表现层(网页:IIS....; 桌面程序)放在别的地方可以更安全。
在表面层和数据层的通信可以为Remoting, Socket, COM 等等...3. ASP .NET的Session的Life Time 一般来说是20分钟,20分后, 如果Session没有Activities的话, 那么这个Session就会被Abandon。
但是Session的生命周期是可以设置的。4. 一个饮水机是不可能让那么多个人同时加水的。 虽然可以看作同时, 其实也是不同时的。
public delegate void FillWaterHandler(int amount);void FillWater(int amount)
{
if(WaterTank.InvokeRequired)
{
FillWaterHandler fwh = FillWater;
Invoke(fwh,new object[]{amount});
}else
{
WaterTank.Fill(amount);
}
}
void 小李线程()
{
FillWater(20);
}
void 小王线程()
{
FillWater(30);
}
public delegate void WaterEventHandler(bool Isfull,string people); //定义事件的类
public class Watch
{
public Watch(Water water)
{
water.Water_Change+=new WaterEventHandler(Water_Change);
}
private void Water_Change(bool Isfull,string people)
{
if(!Isfull)
{
if(people="小李")
{
//加水去
}
if(people="小王")
{
//加水去
}
}
}
}
//产生事件的类
public class Water
{
public event WaterEventHandler WChange;
int s;
public string S
{
get
{
return s;
}
set
{
if(s!=value)
{
bool Isfull=false;
ScoreChange(value,Isfull);
if(!Isfull)
{
s=value;
}
}
}
}
}
static void Main(string[] args)
{
Water w=new Water ();
Watch r=new Watch(w);
w.S="小李";
}写个大概,意思就是这样,未经测试
public partial class 饮水机题目_Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
WaterMechine aWater = new WaterMechine(100);
aWater.NoWater += new WaterMechine.NoWaterEventHandle(this.aWater_NoWater);
aWater.UseWater(50);
Response.Write(aWater.WaterNum.ToString() + "</br>");
aWater.UseWater(50);
Response.Write(aWater.WaterNum.ToString() + "</br>");
aWater.UseWater(80);
Response.Write(aWater.WaterNum.ToString() + "</br>");
aWater.UseWater(21);
Response.Write(aWater.WaterNum.ToString() + "</br>");
} private void aWater_NoWater(Object sender, EventArgs e)
{
WaterMechine aWater = (WaterMechine)sender;
People p = new People("小王");
p.AddWaterNum(100, aWater);
}
}
//定义一个饮水机
public class WaterMechine
{
public int WaterNum; public WaterMechine(int waterNum)
{
this.WaterNum = waterNum;
} public delegate void NoWaterEventHandle(Object sender,EventArgs e); public event NoWaterEventHandle NoWater; protected virtual void OnNoWater(EventArgs e)
{
if (this.NoWater != null)
{
NoWater(this,e);
}
} public void UseWater(int useWaterNum)
{
if (WaterNum - useWaterNum <= 0)
{
OnNoWater(new EventArgs());
}
WaterNum = WaterNum - useWaterNum;
} public void AddWaterNum(int addWaterNum)
{
this.WaterNum = WaterNum + addWaterNum;
}
}
//定义一个人
public class People
{
private string name;
public People(string name)
{
this.name = name;
} public void AddWaterNum(int addWaterNum, WaterMechine waterMechine)
{
waterMechine.WaterNum = waterMechine.WaterNum + addWaterNum;
}
}
public delegate void FillWaterHandler(int amount); void FillWater(int amount)
{
if(WaterTank.InvokeRequired)
{
FillWaterHandler fwh = FillWater;
Invoke(fwh,new object[]{amount});
}else
{
WaterTank.Fill(amount);
}
}
void 小李线程()
{
FillWater(20);
}
void 小王线程()
{
FillWater(30);
}
{
public delegate void OnTankEmptyHandler(object person, int last_amount);
public delegate void OnFillHandler(int filled_value, int current_value);
public delegate void OnGetWaterHandler(int out_value, int current_value);
const int max = 100;
public int m_water_amount;
public string m_name;
public object m_FillLock;
public event OnTankEmptyHandler OnTankEmpty;
public event OnFillHandler OnFill;
public event OnGetWaterHandler OnGetWater;
private WaterTank(){}
public WaterTank(string name, int amount)
{
m_name = name;
m_water_amount = amount;
m_FillLock = new ojbect();
}
public void Get(Person who, int value)
{
if(value < 0)
return;
if(value > m_water_amount)
return;
lock(m_FillLock)
{
m_water_amount -=value;
if(OnGetWater != null)
OnGetWater(value,m_water_amount);
if(m_water_amount == 0)
if(OnTankEmpty != null)
OnTankEmpty(who,value);
}
}
public void Fill(int value)
{
if((value+m_water_amount) > max)
throw new Exception("Too much!");
if(value < 0)
throw new Exception(".................");
lock(m_FillLock)
{
m_water_amount +=value;
if(OnFill != null)
OnFill(value,m_water_amount);
}
}
}
外网用webservice就是在内网或外网服务器做个类,让你可以在其他项目里引用和使用它里面的方法,用xml传输。做中间件一类的东西会用得比较多。