用.NET做过企业级系统的大哥们请进

EricHxy 2003-09-14 05:14:43
我们现在采用这样的结构部署系统:
客户端调用Remoting,Remoting调用COM+

而我们的服务器(即Remoting Server)只是一个很简单的Windows服务,
里面最重要的一句话就是
RemotingConfiguration.Configure("Host.config");
其他都是一些出错处理的代码。

不过,这样的Server好像承受能力不强,经常莫名其妙的死掉,
请各位大哥分析原因,并请提出解决办法。
...全文
50 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
qimini 2003-09-18
  • 打赏
  • 举报
回复
TO EricHxy(龙真) :
你的问题我也爱莫能助了,建议自己再检查检查。
EricHxy 2003-09-18
  • 打赏
  • 举报
回复
to iamafrog(我是青蛙) :
我接触.NET确实不久,从5月份才开始学习.NET,所以对很多东西都不了解。但是,这是一个跟Microsoft合作的项目,所以我们学习得还是比较快。但是,这段时间Mircosoft的工程师不在,才想到让大家帮忙解决问题的。
希望各位尽量帮忙分析,谢谢大家。
EricHxy 2003-09-18
  • 打赏
  • 举报
回复
TO qimini(循序渐进) :

下面是我们Remotinig组件的一个方法,而
SaveHelper是一个COM+组件。
public int SaveTerritory(ref Territory oTerritory)
{
#if DEBUG
SecurityHelper.DebugMessage("TerritoryManager.SaveTerritory Invoked");
#endif
Init(false);
SaveHelper saveProxy = new SaveHelper();
return saveProxy.SaveTerritory(sh,ref oTerritory);
}
EricHxy 2003-09-18
  • 打赏
  • 举报
回复
非常感谢大家的关心和帮助。

这几天服务器倒是还没有死,谢天谢地!

结贴咯。
junqiang 2003-09-17
  • 打赏
  • 举报
回复
to EricHxy(龙真) :
如果你的程序是因为内存耗尽而死的话,我估计可能是由于在配置文件中公布的原因。如果你没有别的方法的话,改为直接在程序中公布对象也不是不可行。

端口变化或增减组件就重新编译程序好的,因为代码很少,所有修改和维护也很方便,不会引入bug。

当然若能通过别的更的方法解决当然更好。

祝你好运,现在你先要定位是remoting server的问题或是com+的问题。
hhhorace 2003-09-17
  • 打赏
  • 举报
回复
我们的系统开始是用COM+的,性能测试时,发现缓冲池满了COM+服务器就死掉了,于是我们改造,Remoting做分布式计算,MTS或者数据库事务保证分布式事务,性能能有2-4倍的提高,从不停服务。COM+就是垃圾
qimini 2003-09-17
  • 打赏
  • 举报
回复
那么在Remoting 中是如何调用COM+的?

贴段代码出来,以确定问题是出在COM+上还是Remoting上
i_am_a_frog 2003-09-17
  • 打赏
  • 举报
回复
你的先确定问题的所在。监测服务器性能确定瓶口(当然如果你的代码没错的话),修改方式就行了。
你给的问题太粗了,网上很难判断。看你的回答,你对Net不熟,你这么问问题是解决不了问题的。你的找个懂的人,现场测试才行。
EricHxy 2003-09-17
  • 打赏
  • 举报
回复
to qimini(循序渐进):
没错,我们的数据访问层是作为一个COM+组件在被调用,他的每一个方法都会跟数据库建立连接,然后调用完成之后释放连接,以防止程序员忘记释放数据库的连接。所有代码都是用C#写的。

非常感谢您的帮忙。
qimini 2003-09-17
  • 打赏
  • 举报
回复
按照你的说法,数据连接是封装在COM+中的?
那么现在你的Remote Server和COM+ Server是同一台机器吗?还有COM+是用什么语言写的---.NET吗?

* 关于托管和非托管资源

见timmy的解释

http://expert.csdn.net/Expert/TopicView1.asp?id=2214138

* 关于内存。你可以监测在不同数量的用户做不同动作时内存的变化,COM+组件管理器有对事务执行情况实行监测的功能 '开始/管理工具/组件服务/事务统计‘ 结合‘任务管理器’

EricHxy 2003-09-17
  • 打赏
  • 举报
回复
我们程序的基本架构是这样的:
客户端(包括WinForm和ASP.NET)调用Remoting,Remoting调用底层的COM+组件,以支持事务。然后COM+会调用一些一般的DLL来实现。数据库的访问没有直接调用ADO.NET,而是自己实现了一个简单的数据访问层,以实现对Oracle数据库(表、存储过程等)的一致访问。
EricHxy 2003-09-17
  • 打赏
  • 举报
回复
to qimini(循序渐进):
非常感谢。

不过,我要问一个菜鸟问题:我如何判断是内存耗尽而死?
还有,托管资源、非托管资源又是什么含义?
project 2003-09-17
  • 打赏
  • 举报
回复
会是多线程访问文件的问题吗?
qimini 2003-09-17
  • 打赏
  • 举报
回复
看了你的配置文件,应该没有什么问题
但是SingleCall调用过多(真的有必要?),那么请问所有的远程对象涉及到调用非托管资源的有多少?有没有手动释放非托管资源???(文件或者数据库的访问?)
死机是因为内存消耗太大吗?做一下24h测试,观测内存变化。

再请问一下,你在Remoting里是如何调用COM+服务器上的组件的?调用过后有没有释放资源,COM+客户端对于.NET来说也是非托管资源。或者你的Remotint Server是做到COM+里的?


把你的系统架构详细的说一下
EricHxy 2003-09-16
  • 打赏
  • 举报
回复
各位大哥好像没有解决我的问题啊
EricHxy 2003-09-16
  • 打赏
  • 举报
回复
TO junqiang(上帝,宽恕我吧) :
如果“直接在代码中公布对象”,那么我们的端口变化就要改程序了?而且,如果增加什么组件,那么HOST程序就要修改了!

而且,现在也不允许我们这个大规模的改动,因为我们的系统已经上线了。

非常感谢你的关心。
junqiang 2003-09-16
  • 打赏
  • 举报
回复
to EricHxy(龙真) :
你按我的意见做过测试吗?
EricHxy 2003-09-15
  • 打赏
  • 举报
回复
to pxsoftcsdn:
数据库用的是ADO.NET(Oracle),COM+当然能够使用ADO.NET,效率还不错。

不过,这个跟协议相关吗?
pxsoftcsdn 2003-09-15
  • 打赏
  • 举报
回复
可以用http协议,让IIS来接收请求,毕竟IIS专业一些。库数存取用ADO吗?在COM+中能使用ADO.net吗?如果是,效率怎么样?
EricHxy 2003-09-15
  • 打赏
  • 举报
回复
请各位老大帮忙分析。
现在同时连接的客户端数量大概在200左右。
Host Crash的频率大概是每24小时一次。

请各位一定帮忙。
加载更多回复(22)
课程通过实际项目融入常用开发技术架构,讲授风格独特,提供详细上课日志及答疑,赠送配套的项目架构源码注释详细清晰且表达通俗,均能直接在实际项目中应用,正真的物超所值,价格实惠任务作业:综合运用《C#/.Net企业级系统架构设计实战精讲教程》课程所学知识技能设计一个学生成绩管理系统的架构。要求:1.系统基于MVC的三层架构,各层单独建不同的解决方案文件夹。2.采用Model First开发方式,设计架构时只需要设计学生表(TbStudent)和课程表(TbCourse)。学生表必须有的字段是ID、stuName、age;课程表必须有的字段是ID、courseName、content。3.数据访问层采用Entity Framework或NHibernate来实现,必须封装对上述表的增删改查方法。4.必须依赖接口编程,也就是必须要有数据访问层的接口层、业务逻辑层的接口层等接口层。层层之间必须减少依赖,可以通过简单工厂或抽象工厂。5.至少采用简单工厂、抽象工厂、Spring.Net等技术中的2种来减少层与层之间的依赖等。6.封装出DbSession类,让它拥有所有Dal层实例和SaveChanges方法。7.设计出数据访问层及业务逻辑层主要类的T4模板,以便实体增加时自动生成相应的类。8.表现层要设计相关的控制器和视图来验证设计的系统架构代码的正确性,必须含有验证增删改查的方法。9.开发平台一定要是Visual Studio平台,采用C#开发语言,数据库为SQL Server。10.提交整个系统架构的源文件及生成的数据库文件。(注意: 作业需写在CSDN博客中,把作业链接贴在评论区,老师会定期逐个批改~~)

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧