老板给的练习题:要求开发出三个应用程序,利用公司的smtp server为公司的秘书同时发送1000左右的电子邮件。
这三个应用程序是:
1.web application:主要是从excel文件中读取邮件,邮件数据载入,显示要发送的邮件,显示邮件的发送结果,以及发送测试邮件
2. windows desktop application:监视邮件发送的状态。一个类似与task manager 的东西。
3. windows console appliction:主要的邮件发送程序。开发语言是C#,在.net framework 2.0上开发。老板故意让我分三个应用程序来实现。由于存在实时状态监视,所以三个应用程序势必共享一个数据,这个数据就是将要发送的这1000多个邮件的数据。而且,三个应用程序间的通信也是必不可少的。所以,我的问题是:
1.如何利用C#,和.net framework 2.0 实现三个应用程序间”邮件数据”的共享?
2. 如何实现三个应用程序间的通信?
3. 为了达到能够解决上述两个问题的水平,最好要看一下那些书,或者哪些方面的书?

解决方案 »

  1.   

    数据共享和应用程序间通讯其实就是一个问题。
    使用.Net的Remoting实现应用程序间的数据通讯
    windows console appliction作为服务器,其他两个作为客户端。windows desktop application定时向服务器取数据,web application可以同不显示数据基本不需要向服务器取数据,只是向服务器传数据。
    这样3个程序可以跑在同一个或不同的机器上。在一个思路就是使用COM+服务器实现,要是不在一个机器上使用的话就用COM+和DCOM。不过开发起来不如Remoting快,但是速度效率要高一些。
      

  2.   

    remoting 在局域网络中运行的状况还不错。但是到外网了,实际的效果就不是很好了。
      

  3.   

    问题是:
    1.如何利用C#,和.net framework 2.0 实现三个应用程序间”邮件数据”的共享?
    ----------------------------------------------------------------------------
    第二,第三个程序没必要监控邮件数据的,他们需要经过第一个程序处理以后的待发送数据。
    2. 如何实现三个应用程序间的通信?
    -----------------------------------------------------------------------------
    用简单的Socket通讯实现。
    3. 为了达到能够解决上述两个问题的水平,最好要看一下那些书,或者哪些方面的书?
    ------------------------------------------------------------------------------
    可以看一下文件读取,Socket通讯,Smtp发送邮件这些部分。建议看MSDN.祝成功
      

  4.   

    呵呵,看了大家的帖子,居然很感动!作为刚毕业的学生,只身前往异国他乡工作,需要的也许只是祖国的亲人的一声鼓励。不管最终是否成功,我都要感谢csdn上的这些不认识的朋友!
      

  5.   

    因为是练习,所以主要是的方针是用最简单的方法把它做出来。从昨天到今天,我想了一个办法,不知道可行不可行,现将其贴出来,希望各位高手能够指点一下。首先是web application,它的输入是excel文件和随邮件一起的附件,excel文件里面装有邮件的送,收信人地址,文件内容等等。所以我想首先需要将它们upload到web application的一定的目录下。然后解读excel文件,将数据读入dataset中去,以便在页面上显示或者进行其它操作。此后,我想这个web application可将dataset中的数据写入到一个XML文件中去,放在一个共享目录里面。这样,就等于共享的数据保持在我的机子的硬盘里面。其次是desktop application,它主要是监听那个console application(送信程序)的状态,但是需要的话,它也可以读取共享的数据,做一些邮件显示的工作。它和console application(送信程序)的通信方式,是我想问大家的,通信的内容大概包括console application(送信程序)的送信中,送信成功,送信失败等等的状态。它随console application的启动和关闭而启动和关闭。最后是console application,我想它应该受web application中的送信请求的控制,一旦受到请求,它就被激活,同时它也激活desktop application以被监视。web application 在激活它的同时,传送给它邮件数据文件(存在共享数据目录中的XML文件)的名称,它将文件读入到dataset中,然后进行送信,完了以后将送信结果写成XML文件,存入共享数据区,通知web application 和 desktop application。web application能够读取送信结果文件,从而在页面上显示送信结果。通信的内容大概就是一些状态,但是通信的方式我不太清楚。大概用socket吧。以上大概就是我的思路,我想让大家看看,这个思路有什么漏洞,以大家的感觉可行否?这么做合题意吗?谢谢大家。
      

  6.   

    基本上可以了。
    用socket就可以搞定了。关键是你自己要定义好通讯报文的格式,保证数据的稳定性(为公司的秘书同时发送1000左右的电子邮件),不要丢祯。关于Socket这部分CSDN上面有很多的现成的代码,可以参考一下。祝成功
      

  7.   

    谢谢,我自己琢磨上述方案可能还有一个问题,就是console application如何读邮件数据的XML文件,因为我不知道这个console application是不是就一定和web application在同一台机子上,如果是的话,好办,可如果不是的话, 就是分布式数据存取的问题了,我对”用console application如何读取处于不同机子上的XML文件”没有把握。我在自己去寻找答案的同时,也希望何方神圣能够指点迷津。谢了!
      

  8.   

    3. windows console appliction 主要的邮件发送程序
                 |
                 | WebService
                 |
    2. windows desktop application 监视邮件发送的状态。一个类似与task manager 的东西。
                 |
                 | Socket
                 |
    1. web application共享同一数据库,Web application 将导入数据库后,发送信息给 windows desktop application
      

  9.   

    对不起没看完你的帖子,就你问的怎么读别的计算机上xml的问题:
    我认为要是在别的计算机都有你的console的话就可以通过程序直接通信了,
    用什么都行方法很多,若没有任何程序的话,可以在所有的客户端上装IIS,
    然后将放xml的文件夹变成web共享文件夹,通过httpRequest就可以访问了,
    这个方法也是比较麻烦的,暂时没想好别的。
    至于多应用程序的通信,考虑用messager试试?挺好用的。
    若都在一台上就简单了,自己写个单例类做消息总线就行了