Web聊天应用程序 – ASP.NET/Jabber/Ajax/WCF/Comet/ReverseAjax – 面临的问题 – 寻求见解

过去三周我一直在尝试构建一个基于Web的聊天应用程序,我正面临着构建它所采用的任何路径(编程技术/技术)的问题。 我已经解释了我在下面的所有问题中遇到的问题。 请提供您对此的任何见解。 ASP.NET,AJAX 第一个问题是它不是真正的实时 如果客户端每x秒(常量时间戳)点击聊天服务器,那么除非x非常小,否则它不会是实时的 如果x非常小,如1秒,如果同时有1000个在线用户,我认为它真的会破坏聊天服务器并导致可扩展性/性能问题 WCF双工 遗憾的是,我在此尝试构建WCF双工服务时浪费了相当多的时间,该服务维护所有客户端并在需要时通过通道调用客户端。 但我最近了解到 WCF双工回调不适用于ASP.NET(因为http是请求和响应类型)。 我正在关注这篇伟大的文章来构建一个双工服务。 Comet / ReverseAjax / HTTP Server推送 我对这种技术非常陌生,并且想知道它能够扩展得多好。 在我第一次看到这个编程技术在wiki和关于Comet by Alex的第一篇文章后,我了解到客户端始终保持与服务器的开放连接(长期生活ajax调用),服务器可以使用它来推送“在服务器中发生的有趣事件”到浏览器(客户端)。 那么它的规模有多大? 如果IIS中的开放连接的最大数量超过此类或任何其他问题,该怎么办? Jabber服务器/客户端(XMPP) 我看到大多数可以在网上看到的着名聊天应用程序都在使用Jabber。 我还了解到从头开始编写Jabber服务器是一项繁琐的工作。 我有应用程序的单独的用户配置文件存储。 我可以轻松地将它与Jabber集成吗? 我可以私下托管的任何开源Jabber服务器? (我见过很多开源工具来轻松构建客户端) 提供的任何见解都非常感谢。 谢谢 NLV

如何在运行时从文本构建LINQ查询?

我有一个 class A { public int X; public double Y; public string Z; // and more fields/properties … }; 和List data ,可以构建一个linq查询,例如 var q = from a in data where aX > 20 select new {aY, aZ}; 然后dataGridView1.DataSource = q.ToList(); 在我的DataGridView中显示选择。 现在的问题是,是否可以从用户在运行时输入的文本构建查询? 喜欢 var q = QueryFromText(“from a in data where aX > 20 select […]

扩展Convert.ChangeType以根据请求生成用户定义的类型

鉴于课程: public class Foo { public string Name { get; set; } } 是否可以通过Convert.ChangeType从字符串创建Foo实例: Type type = typeof(Foo); object value = “one”; value = System.Convert.ChangeType(value, type); 这是第三方API尝试重建对象的方式。 有人提到这可能是隐式运算符,但根据我的理解,这将让我做以下操作,而不是创建对象: Foo foo = new Foo() { Name = “one” }; string fooAsString = foo; // implicit conversion — no cast needed 有没有办法以这种方式创建对象? 此外,如果有另一种方法,我可以更改Convert.ChangeType。 更新:我问的原因是因为它抛出exception: 从’System.String’到’JibbaJabba + Foo’的转换无效。 […]

.NET相当于curl将文件上传到REST API?

我需要将一个ics文件上传到REST API。 给出的唯一示例是curl命令。 用于使用curl上传文件的命令如下所示: curl –user {username}:{password} –upload-file /tmp/myappointments.ics http://localhost:7070/home/john.doe/calendar?fmt=ics 如何在C#中使用HttpWebRequest执行此操作? 另请注意,我可能只将ics作为字符串(而不是实际文件)。

使用hex代码更改窗体的背景颜色

我有一个名为ChangeFormBackground(Color colorName)的方法 ,它使用colorname (方法的参数)更改表单背景。 现在 ,当我调用此方法时,我没有颜色名称,但颜色的hex代码,我想更改使用该方法的那个hex代码的表单的背景颜色然后该怎么办?

请解释C#属性如何工作?

我已经学习了一段时间的C#,而且我在C#书中找到了属性(Head First C#)。 老实说,我不明白它们的用途,以及我为什么要使用它们。 我用Google搜索了几次,但仍然不能为我的生活理解它们。 有人可以向我解释这个外国概念吗? 谢谢, Varmitharen

具有透明背景的Windows窗体无法单击

使用c#/ windows表单。 尝试使表单的背景透明,而不会失去接收点击的能力。 this.Opacity使整个表单透明(不仅仅是背景 BackColor = Color.Red; TransparencyKey = BackColor; 使表单的背景透明,并点击通过。 我希望表单透明,但它应该能够获得点击 怎么样?

引用我自己的类型的最佳方式

abstract class A where T:A { public event Action Event1; } class B : A { //has a field called Action Event1; } 有没有更优雅的方式来做到这一点? 我希望基类中的东西(事件等)能够使用子类的类型。

未针对动态generics类型解析方法

我有这些类型: public class GenericDao { public T Save(T t) { return t; } } public abstract class DomainObject { // Some properties protected abstract dynamic Dao { get; } public virtual void Save() { var dao = Dao; dao.Save(this); } } public class Attachment : DomainObject { protected dynamic Dao { get { return new […]

C#倒计时器

我正在尝试使用C#进行倒计时并以格式显示时间: hour:minutes:seconds 我试过这个: var minutes = 3; //countdown time var start = DateTime.Now; var end = DateTime.Now.AddMinutes(minutes); Thread.Sleep(1800); if (??) // I tried DateTime.Now > end not works { //… show time label1.Text = “…”; } else { //done label1.Text = “Done!”; } 还出现了解决这个问题的不同方法。 提前致谢