RSS 2.0 Feed

Thursday, August 30, 2007

说明:

CButton:在Blend 2中制作了一个ColorAnimation的Button,在Orcas中添加了一个DoubleAnimation

HelloWorld:分别使用XAML,C#,JavaScript(两种方式)的Hello World

JSInteration:JavaScript和托管代码进行交互,包括事件监听处理、方法调用

ShowHello+ShowHelloWeb:一个SL项目,一个Web Site,Web Site Link SL项目。SL + Ajax

 

下载:http://gadgets.chinacars.com/sl/sl.rar

 

 

posted @ | Feedback (3) | Filed Under [ DOTNET ]

Wednesday, August 22, 2007

做了多个SL Project,其间多次发现无法Debug,即设置了BreakPoint但是无法Break,由于之前对此没有太重视,所以一直没有考虑这件事情,今天开始准备周五的提纲了才发现这是个必须找出原因的问题,所以花了点事情研究了一下,终于找到了原因所在:我的default browser是Maxthon 2,而Maxthon是单一Process,打开一个页面只是建一个Thread而已(或者从threadPool中取一个,这个没有研究过),当我每次Debug SL Project时,我的Maxthon都是打开状态,而他又是default browser,,结果造成VS Debuger打开的不是一个独立的Process,没有Pid,所有VS Debuger没有权限去Break。从这个原理看,所有使用multi-tab的浏览器都会造成这个问题。包括firefox。

 

posted @ | Feedback (9) | Filed Under [ DOTNET ]

Monday, August 20, 2007

有朋友的机器先装的Vista,然后直接安装了VS 2008 Beta 2,由于Vista默认不安装IIS 7,当部署Web App时才去安装IIS 7,结果访问站点就出现500.19错误:HTTP Error 500.19 - Internal Server Error

配置错误: 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的。 

配置文件: 
\\?\*\web.config 

配置源:   145:     </modules>
  146:     <handlers>
  147:       <remove name="WebServiceHandlerFactory-ISAPI-2.0"/>

出现这个错误是因为IIS 7 采用了更安全的Web.Config管理机制,默认情况下会锁住配置项不允许更改。要取消锁定可以运行命令行:“%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers”

详细说明:http://www.iis.net/articles/view.aspx/IIS7/Managing-IIS7/Delegation-in-IIS7/Delegating-Permission-in-Config/How-to-Use-Locking-in-IIS7-Configuration

 


posted @ | Feedback (3) | Filed Under [ DOTNET ]

Tuesday, August 14, 2007

WPF/E终于得到了一个符合RIA定位的、响亮的、够酷够眩的名字——SilverLight,银光?人家Flash是闪光,你是银光,怪怪的。某位兄台的‘闪亮’,也有给滴眼液打广告的嫌疑阿,难道因为是周董做的广告?

作为曾经Longhorn的三剑客,Avalon、Indigo还有WinFS  在MS 实用主义的驱动下,如今都找到了自己的正确归宿(个人观点),而Avalon、XAML几经发展、细化,终于发展成为涵盖Windows程序和Web应用的UI Solution。个人认为WPF和SilverLight本是一体,但是目前的Windows程序和互联网应用区别较大,为了更好的适应目前的状况,SilverLight才得以独立登场,以其鲜明的特点、先进的理念在RIA的大潮中搏杀。

认识RIA大概在02、03年左右(Applet暂不算,虽然他具有了RIA的很多特点),当时的MM突破了原来Flash的矢量Internet动画的定位,通过其不断的创新开发了一系列interactive技术,如Flash Remoting、Flash调用WebService、FlashCom、Flex,成功的将Flash由一个动画创作与展示平台变成了一个交互式RIA&Rich Media应用平台,但是只能说在Rich Media领域内MM很成功(FLV统治了目前的web 2.0 视频网站)。对于更广阔的RIA市场,其成果有限,大力推广的Flex(支持cf、java、.net)也没有太多的作为。试析其原因,个人感觉还是由于Flash本身在动画方面的巨大成功影响了其RIA的发展。由于谁也无法舍弃已经获得的巨大成功,Flash就一直无法脱离Designer的世界而进入Programer的世界,我想大家一听到Flash,第一反应应该是:“奥,那是美工的活!”。而众所周知,Application是由Programer主宰的世界,你再Rich再闪也改变不了这个真理。注:此句话绝对没有轻视Designer的意思,只是分工不同,各自的角度不同而已。

说道RIA,插一句关于.Net的前辈和老对手Java的。Sun也是最新推出了JavaFX来征战RIA的大市场,OpenSource!.从表现形式上看,和很久之前的java star没什么区别。不过其本质发生了巨大变化,结合了VRML的语法,加上了Java的script控制,开发比awt,swing简单不少。看来还是从Flex那里学了不少。JavaFx在RIA这个大市场上要想分一杯羹,目前看还是有难度,主要还是受JRE的限制,毕竟不像MS控制了PC的操作系统。不过依靠其OpenSource和多平台,其在各种设备上还是有竞争力的,不过呢,做过KJava的兄弟们都知道这个跨平台也不是那么Free。

 

 

posted @ | Feedback (10) | Filed Under [ DOTNET ]

Wednesday, March 29, 2006

asp.net应用程序迁移到Load BalanceNAS环境

 

1.  权限控制

a)         Web ServerNAS加入同一个DomainAD)中,如DomainWeb。当然也可以使用所有Web ServerNAS的某个帐号的密码相同来进行欺骗。但是这样在管理上会比较复杂。

b)        在域中创建一个专用于asp.net程序运行的帐号(替代本地的ASPNET),如ASPNETOwner

2.  NAS目录与权限

a)         NAS上设置一个共享目录,如\\nas\upload,确保DomainWeb\ASPNETOwnerNAS的磁盘和共享都有写权限。

3.  Web Server目录与权限

a)         保证DomainWeb\ASPNETOwner对本地Web程序目录的访问权限。

b)        保证DomainWeb\ASPNETOwner可以写C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files目录。

c)        保证DomainWeb\ASPNETOwner可以写系统的临时目录(为满足一些特殊情况)。

4.  程序处理

a)         确保不使用Session(为了保证Load Balance算法的多样性),如果必须使用则可以使用State Server或数据库存储Session,但是强烈建议不要使用Session

b)        统一CookieViewStateKey(保证先后访问不同Web Server可以正常的解密ViewState),因为默认的是Key是各服务器自动生成。

c)        更改程序的web.config文件,设置Identity,使用DomainWeb\ASPNETOwner和密码运行asp.net程序。

 

 

 

Web.config相关部分示例:

 

<system.web>
 <machineKey
        validationKey= "250B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"
        decryptionKey= "1A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
        validation="SHA1"       
    />
    <identity impersonate="true" userName="DomainWeb\ASPNETOwner" password="Password"/>
   
    <httpRuntime maxRequestLength="10240"  useFullyQualifiedRedirectUrl="true" appRequestQueueLimit="500" executionTimeout="100"/>
</system.web>

 

 

posted @ | Feedback (22) | Filed Under [ DOTNET ]

Tuesday, January 17, 2006

要求:

1.两年以上开发经验(能力突出者可不受工作经验限制),有大型门户网站开发经验优先;
2.精通ASP.NET开发,熟悉.NET平台框架;
3.掌握SQL Server数据库编程;
4.逻辑清晰,对系统架构设计有基本了解;
5.有良好的沟通能力、责任心强,具备优秀团队合作精神。

公司情况:

www.chinacars.com(中国汽车网)是国内最大的汽车垂直类网站。注册资金10亿元(万向集团),在汽车信息服务,汽车电子商务,电子化物流,汽车类无线增值业务和GPS等领域处于国内领先的地位。中国汽车网打造中国汽车资讯,娱乐,电子商务的第一平台和第一品牌。
公司现有员工350人,由经验丰富的海外团队管理层领导,国外一流风险基金投资。

工作地点:东四北大街107号天海商务大厦B座6层

具体待遇面议

联系方式:
?mail: hopeqin@gmail.com
?msn: hplili@msn.com


?

posted @ | Feedback (20) | Filed Under [ 广告 & 闲话 ]

Friday, December 23, 2005

日前,一个Web应用在压力测试时发现返回了大量的503,经过研究,发现是由于.net 1.1中将每个Web App的 Request Queue Limit默认设为了100,当访问量很大时(LoadRunner : 1000VUser),由于Queue Limit太小,导致大量的访问被丢弃,返回了503错误。

Machine.config中的设置:

<httpRuntime
            executionTimeout="90"
            maxRequestLength="4096"
            useFullyQualifiedRedirectUrl="false"
            minFreeThreads="8"
            minLocalRequestFreeThreads="4"
            appRequestQueueLimit="100"
            enableVersionHeader="true"
        />

appRequestQueueLimit值需要根据服务器环境、程序特点等综合考虑才能得到一个比较合适的值,不能简单的将此值设置很大,因为工作进程会为每个应用程序维护一个Request Queue,Queue的长度固定,盲目设大将造成资源浪费与性能降低。

较好的方式是在应用上线(测试)前设置一个较大值,然后观察Perfmon中Request Queue的数值,然后根据实际访问的最大值加上一个缓冲量作为appRequestQueueLimit,如果是一台服务器多个应用,那么就需要根据每个应用的压力不同来设置(Web.config中)。

需要注意的是,.net可以设置多处Request Queue值,Machine.config中<processModel节也有一个process级别的Request Queue,默认为5000,requestQueueLimit="5000" 。不过这个设置在IIS6(本地模式,native mode,即采用Application Pools)时,将被忽略,针对进程的设置,需要在MMC中设置Application Pool的属性。

 

 

posted @ | Feedback (8) | Filed Under [ DOTNET ]

Tuesday, September 27, 2005

自定义Page集类可以带来很多好处,如统一处理Cookie,安全性,参数等。不过在继承System.Web.UI.Page实现自己的BasePage时需要注意一点:谨慎的处理构造器(Constructor)中涉及的代码。如果疏忽了这点,可能会导致你在Vs.Net中无法所见即所得的编辑Aspx页面,打开页面时将抛出以下错误,你只能看到Html代码界面。

 

导致这一错误的最大可能的原因就是你在BasePage的构造器里使用了HttpContext的内容。而Vs.Net在显示所见即所得的Aspx页面时会初始化你的BasePage类,这时候如果使用了Request,Response等类时,由于HttpContext并不存在(因为不是在IIS环境中,没有PageFactory传递过来Http上下文),所以在初始化类时就抛出了NullReferenceException。

为了解决此问题,最好将访问HttpContext的代码放到OnInit中,如下:

  protected override void OnInit(EventArgs e)
  {
      base.OnInit (e);
      HttpCookieCollection cookies = HttpContext.Current.Request.Cookies;
  }

这一override方法指示在PageHandler阶段被首先调用,而Vs.Net显示页面时并不会调用此方法,所以不会产生NullReferenceException。

如果你确实需要在构造器中进行某些Field的初始化等工作,这时又需要使用Request等内容,那么就需要先判断HttpContext是否为Null。如下:

 public class BasePage : Page
 {
    public BasePage()
    {
         if(HttpContext.Current != null)
         {
             HttpCookieCollection cookies = HttpContext.Current.Request.Cookies;
         }
     }
  }

 

posted @ | Feedback (4) | Filed Under [ DOTNET ]

Monday, September 26, 2005

   有一个Web项目,Web.Config中requestEncoding和responseEncoding都是gb2312,而从数据库中取出的简介数据可能是中文和韩、日文混合的内容,这时候如果直接输出到页面上,其页面会出现乱码,其中的韩文内容无法正确显示。当然如果项目的编码都使用Utf-8的话将没有这个问题,但这个项目是一个老项目,为了尽量不要影响已有的程序,所以无法将编码改为Utf-8,只能在本页面上动脑筋。

   经过研究,发现这个问题可以通过Html实体的方法解决。

对于Html实体请参考:

Character entity references in HTML 4

HTML Document Representation

测试代码:

Byte[] bComments = Encoding.UTF8.GetBytes("一ンブル????中文");
   char[] cComments = Encoding.UTF8.GetChars(bComments);
   
   StringBuilder charBuilder = new StringBuilder();   
   foreach(char c in cComments)
   {
    if(c > '\u0800')
    {
     charBuilder.Append("&#");
     charBuilder.Append((int)c);
    } 
    else
    {
     charBuilder.Append(c);
    }
   }
   Response.Write(charBuilder.ToString());

这段代码的作用是将所有的中文、韩文、日文字符通过硬编码输出成为html实体。而Html实体是不受ResponseEncoding和页面编码集影响的。

说明:

\u0800 以上的为中、韩、日字符。

中文的范围:\u4e00 - \u9fa5,日文在\u0800 - \u4e00,韩文为\u9fa5以上。

这个方法仅仅是为了解决小范围问题,如果各位有更好的办法请指教。

posted @ | Feedback (6) | Filed Under [ DOTNET ]

Wednesday, September 14, 2005

.Net Beta2中消失的ObjectSpaces正式成为了过去,而DLinq从ObjectSpaces的灰烬出生了。DLinq是在分析了ObjectSpaces的反馈之后重新设计的ORM Solutions。

DLinq:.NET Language Integrated Query for Relational Data,DLinq和XLinq(for Xml)共同组成了.net 3.0的关键部分——LinQ(:.NET Language Integrated Query ),即语言级集成查询能力。

DLinq是在分析了ObjectSpaces的反馈之后重新设计的ORM Solutions,作为更先进的查询数据库得到对象并且持久化对象的方式,DLinq将不再使用ObjectSpaces的mapping文件方式,而是使用了attribute 来进行mapping的定义。当然现在也有一些采用attribute 方式的Solutions,如XPO:http://www.devexpress.com/Products/NET/XPO/。不过DLinq的第一大特点将是任何ORM方案难以匹敌的,那就是语言级别的查询集成。这是目前ORM阵营(无论是.net、java或者其他)中都难以做到的。毕竟Linq是Anders Hejlsberg在主导(猜测,因为Demo和Channel9 video都是他),而这也是.net 3.0的主要提升啊。

此文依据 Dinesh Kulkarni(Program Manager Visual C#,working on C# 3.0

http://blogs.msdn.com/dinesh.kulkarni/archive/2005/09/13/465089.aspx

posted @ | Feedback (6) | Filed Under [ DOTNET Database ]

1.实体类:

[Table(Name="Customers")]
public class Customer
{
public string CustomerID;

public string City;
}

使用Attribute定义ORM的关系,这样的好处是无需产生和维护大量映射文件。

[Table(Name="Customers")]
public class Customer
{
[Column(Id=true)]
public string CustomerID;

[Column]
public string City;
}

通过Attribute自定义列,定义主键(PK)……

   2.数据上下文         

// DataContext takes a connection string

DataContext db = new  DataContext("c:\\northwind\\northwnd.mdf");

// Get a typed table to run queries
Table<Customer> Customers = db.GetTable<Customer>();

// Query for customers from London
var q =
from c in Customers
where c.City == "London"
select c;

foreach (var cust in q)
Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);

            这个比较猛,直接写查询,from in where select都成了关键字。直接在对象上进行查询不再考虑数据库了。并且范型化了。

            看到var,众位做过asp的兄弟是不是很亲切阿,这是动态语言(解释语言)的特性,变量定义时不定义类型,不过这里应该不是动态语言,应该是根据上下文在编译时确定类型的。

 

Northwind db = new Northwind("c:\\northwind\\northwnd.mdf");

var q =
from c in db.Customers
where c.City == "London"
select c;

         foreach (var cust in q)
         Console.WriteLine("id = {0}, City = {1}",cust.CustomerID, cust.City);

         简单写法。

 

public partial class Northwind : DataContext
{
   public Table<Customer> Customers;
   public Table<Order> Orders;

   public Northwind(string connection): base(connection) {}
}

继承一下,表成了成员了。

 

3.关系定义

 

[Table(Name="Customers")]
public class Customer
{
   [Column(Id=true)]
   public string CustomerID;
   ...

   private EntitySet<Order> _Orders;

   [Association(Storage="_Orders", OtherKey="CustomerID")]
   public EntitySet<Order> Orders 
{
     get { return this._Orders; }
     set { this._Orders.Assign(value); }
   }
}

[Table(Name="Orders")]
public class Order
{
   [Column(Id=true)]
   public int OrderID;

   [Column]
   public string CustomerID;

   private EntityRef<Customer> _Customer;   

   [Association(Storage="_Customer", ThisKey="CustomerID")]
   public Customer Customer {
     get { return this._Customer.Entity; }
     set { this._Customer.Entity = value; }
   }
}

Customer和Order是一对多关系,Customer中EntitySet是实体集合,即此Customer对应的orders,而Association来定义关系(在Property定义),OtherKey表示Order中的CustomerID是此关系的Key。而Order中EntityRef表示这是一个实体引用,用于返回Customer实体,他也是为了支持延时加载(Lazy)用的。Storage是为了表示该Property所对应的成员。

posted @ | Feedback (17) | Filed Under [ DOTNET Database ]

Tuesday, September 13, 2005

Friday, September 09, 2005

 Demo版包只含单人对战模式,只有2个种族,地图也只有2幅。

http://www.ageofempires3.com/

http://download.microsoft.com/download/d/7/3/d7348fe3-d498-4e13-96c6-3da92e8f0c62/aoe3trial.exe

System Requirements:

XP
1.4G
256M RAM
64M Video Card with HW T&L
370M HD
DirectX 9C

 

posted @ | Feedback (7) | Filed Under [ 广告 & 闲话 ]

Wednesday, August 31, 2005

teleo(http://www.teleo.com),一家位于旧金山的VOIP公司,产品处于Beta阶段(0.9beta),是一家小公司,这也符合MS一贯的并购风格。Teleo的产品从说明看还是很不错,Inbound,OutBound,Forwarding,Click-to-Call,Conference Calling(six people),Voicemail,Call History and Reporting.

看来MSN也要支持VoIP了,加上潜在的GTalk,Skype一枝独秀的时代快要结束了,呵呵。

只是Teleo是采用Sip协议的,不知MSN Messenger将采用何种方式将其加入进来?难道一个客户端使用两种协议?

详细新闻:

http://news.com.com/MSN%20buys%20into%20Net%20calling%20future/2100-1032_3-5844873.html?part=rss&tag=5844873&subj=news

 

 

posted @ | Feedback (3) | Filed Under [ VOIP&Telecom ]

Tuesday, August 30, 2005

类似Skype的VoIP软件,同样支持多平台,如Windows、Mac、Linux(coming soon),不同的是Gizmo采用的是Sip协议——IETF标准的开放协议(RFC 3261)。

Gizmo加入了Google的开放标准联盟,不久GTalk和Gizmo就可以实现IM和Voice互通。按照Google现在使用了XMPP的现状看,他可能是采用和LCS类似的GateWay转换的方式实现的,毕竟GTalk在客户端使用两个协议的可能性很小。

http://www.sipphone.com/   http://www.gizmoproject.com/

SipPhone的老板:http://www.michaelrobertson.com/

Gizmo Features

posted @ | Feedback (3) | Filed Under [ VOIP&Telecom ]

MS发布了WinFS的一个Beta版本,MSDN订户可以下载。

http://msdn.microsoft.com/data/winfs/default.aspx

http://blogs.msdn.com/winfs/archive/2005/08/29/457624.aspx

Microsoft has quietly released a beta version of WinFS, the file system originally slated to be part of Windows Vista, to MSDN subscribers. This beta release works on Windows XP and requires the .NET Framework version 2.0.

WinFS is the codename for Microsoft’s next-generation relational file system for Windows. As an essential piece of Microsoft’s Integrated Storage strategy, WinFS bridges the gap between file systems and databases and provides a unified, rich programming platform for all data: structured, semi-structured, and unstructured. With WinFS, Developers will be able to use its unified Item Data Model across applications, present new relational organization constructs for data, and create applications that exploit data more powerfully. WinFS is a development platform that will improve developer productivity and reduce organizations’ time to market.

posted @ | Feedback (2) | Filed Under [ DOTNET ]

Wednesday, August 24, 2005

Google 发布了自己的IM产品 Google Talk: http://www.google.com/talk/。安装文件只有900K。功能很简单,Mail只是一个Link,IM功能更简单,只是普通文字聊天。语音应该是他的重点(没有使用这个功能)。

Talk使用的是开发标准的Protocol——Jabber(XMPP,已经被IETF批准为互联网标准 http://www.ietf.org/rfc/rfc3920.txt ,由核心的XML流传输协议和基于XML流传输的即时通讯扩展应用两部分组成)。使用Jabber的IM有: Gaim(Linux) 、iChat AV(Mac OS X)、Adium X(Mac OS X),而且也即將支援SIP(没有看到官方消息证实)。

IETF已经有两大IMPS方面的标准了,SIMPLE(base on SIP)和XMPP。随着Google的加入,竞争也要明显起来了。

Talk和IChat之间可以进行语音聊天:http://voip.weblogsinc.com/entry/1234000553055714/

IM 和VoIP市场风起云涌……

posted @ | Feedback (244) | Filed Under [ VOIP&Telecom ]

Monday, August 22, 2005

http://www.lcs-guides.com/

包括安装与管理的教程和一些Filter、Script。

posted @ | Feedback (1) | Filed Under [ VOIP&Telecom ]

Wednesday, August 17, 2005

在我的VS 2003 Plugin中,唯一还在正常使用的就是ReSharper 1.5了。他的代码提示、实时错误提示、自动更正、重构等功能对开发还是有一些帮助的。只是ReSharper 1.5只支持VS 2003,在2005上就不能使用了。近日发现了jetbrains的ReSharper 2.0的计划,除了支持2005之外还增加了不少新功能并且对Refactor下了不少功夫。

其中有些功能是whidbey本身就有的功能,如Refactor等。

ReSharper 2.0 Plan
 


General
Support of Visual Studio 2005 and Visual Studio 2003
Support of C# 2.0 (under Visual Studio 2005 only)
Support of VB.NET (refactorings, usage search, navigation, code formatter)
Support of ASP.NET (almost all features implemented for C# and VB.NET for code inside ASP pages)
Cross-language refactoring
Open API (plug-ins support)
No modal progress on startup (loading in background)
Install shortcuts in localized versions of VS
New preprocessor directives handling
(no errors caused by use of preprocessor directives anymore!)

Refactoring
Reworked UI with preview of changes, problems resolving etc
Pull Up Member refactoring
Push Down Member refactoring
Make Method Static refactoring
Make Method Non-Static refactoring
Safe Delete refactoring
Inline Method refactoring
Use Base Type where Possible refactoring
Move Static Members refactoring
Move Inner Type to Outer Scope refactoring
Replace Constructor with Factory Method refactoring
Rename/move: process string literals and comments
Move type: support for multiple types
Change Signature: support for intellisense
and highlighting inside table fields

On-the-fly Code Highlighting
Highlighting of all syntax errors
Highlighting of redundant down-casts
(now only redundant up-casts are detected)
Warn about potentially unhandled exceptions
(using doc-comments)
Optionally check for naming conventions violations
Highlighting of invalid format strings
Lot of new quickfixes

Live Templates
Support for templates sharing, import/export, etc
"Create file from Live Template" feature
"Create template from selection" feature

Code Formatter
Line wrapping
Code style settings: support for sharing, import/export and multiple schemes)

Other
"Go to Symbol" feature
(the same as Ctrl+N and Ctrl+Shift+N
but navigates to all types and members)
Auto-popup code completion on typing (as in VS2005)
Code completion for preprocessor directives
Code completion in namespace declarations
Generate Equals() & HashCode()
Implement Members: optionally g
enerate fields for implemented properties
Make stubs that are generated for
method bodies customizable Action to
implement given abstract member in one of implementors
Type Hierarchy
File structure view with regions, drag&drop etc
"Complete Statement" feature

posted @ | Feedback (6) | Filed Under [ DOTNET ]

我们在对自定义HttpHandler处理时,如果需要处理某一个未设置的扩展名时,需要在IIS的摄制中,添加这一扩展名和可执行程序(ASPNET_ISAPI.Dll)的映射。不过与IIS 5 不同,在IIS 6中不允许设置*,也就是说你必须指定一个特定的扩展名,而不是一个通配符。
如果需要设置通配符映射那么要设置WildCard Application Maps。可以将ASPNET_ISAPI.Dll添加到列表中,这样你就可以通过设置Web.Config来实现对所有扩展名(包括目录)的自定义HttpHandler处理了。不过需要注意:如果这些扩展名的文件不存在,那么不要选中 "Verify that files exists"。
现在做的配置仅仅是将所有的请求都交给ASPNET_ISAPI.Dll处理,包括目录访问、静态文件等等,    性能自然就有所降低了。
在Machine.Config中配置了所有的HttpHandler,也就是说,即使我们设置了通配符应用映射但没有做任何处理,那么就使用Machine.Config中的配置进行处理。
Machine.Config中的配置:

(太长,所以这个删了,自己去看)

从Machine.Config中的配置中可以看出它对所有的内容都作了处理,如path="*"  verb="GET,HEAD"的内容的功能是不在上面添加的处理规则之中的扩展名都使用System.Web.StaticFileHandler处理,即作为静态内容处理,jpg,gif,swf等等都是使用StaticFileHandler 处理的。
反编译StaticFileHandler 可以看到:

internal class StaticFileHandler : IHttpHandler
{
      // Methods
      internal StaticFileHandler();
      private void BuildFileItemResponse(HttpContext context, string fileName,
 long fileSize, DateTime lastModifiedTime, string strETag);
      private void CacheValidateHandler(HttpContext context, object data, 
ref HttpValidationStatus validationStatus);
      private static bool CompareETags(string strETag1, string strETag2);
      internal static string GenerateETag(HttpContext context, DateTime lastModTime);
      internal static bool IsSecurityError(int ErrorCode);
      public void ProcessRequest(HttpContext context);
      internal static bool SendEntireEntity(HttpContext context,
 string strETag, DateTime lastModifiedTime);
      // Properties
      public bool IsReusable { get; }
      // Fields
      private const int DEFAULT_CACHE_THRESHOLD = 0x40000;
      private const int ERROR_ACCESS_DENIED = 5;
}

 
其代码内,基本都是对各种异常情况的处理,和对静态文件的读取并Response。
   需要注意:.net 2.0 beta 2(v2.0.50215)对HttpHandler的处理放在了Web.Config目录下,并更改了部分的HttpHandler,如System.Web.StaticFileHandler变成了System.Web.DefaultHttpHandler。
通过学习和模仿machine.config中HttpHandler的配置,我们可以书写我们自己的web.config配置来实现更自由的设置。
Web.Config中配置:

   
        
        
        
            
     httpHandlers>

 要注意:不希望被path="*" 处理的扩展名需要写在上面,path="*" 写在最下面,这样就保证aspx的扩展名仍然使用System.Web.UI.Page处理,jpg,gif人仍然使用System.Web.StaticFileHandler处理。而所有除此之外的扩展名和目录访问就全部进入我们的HandlerSample.MyHandler处理。
 
对于path="*"配置要注意,如果不写path="*"的配置,那么就会使用上一级的设置(最终是machine.config),那么你可以只处理如path="*.a"的请求,其他的使用machine.config的配置,一旦写了path="*"的配置,那么你就要自己处理全部的扩展名的顺序。

posted @ | Feedback (7) | Filed Under [ DOTNET ]

Wednesday, August 10, 2005

由于1.1和2.0的asp.net在结构上的差异,Vs2005提供了升级工具。这是最新版本的升级工具,Asp.Net Group正在征求测试者。

Beta Download: ASP.NET Migration Wizard

Get more information on Brian Goldfarb's Blog

posted @ | Feedback (4) | Filed Under [ DOTNET ]

 Monad Shell

第一个使用Monad的产品将是06年发布的下一版本的Exchange messaging server-"Exchange 12"。 计划在2007年发布的Windows Server "Longhorn" 也将包括Monad。

Monad从公布时将在安全性上引发了业界的关注,估计也是由于这个问题,Vista中将Monad移除了。

Microsoft Cuts Windows Vista Feature

posted @ | Feedback (2) |

Monday, July 18, 2005

Representational State Transfer(REST)表现状态传输。

这意味着Indigo中的WebService将不仅仅使用SOAP了。REST比较简单朴素,在安全性,可靠消息传输,或标准化的业务过程自动化上还没有定义。

看来现在整个Web都在简单化(Web 2.0),呵呵。

 

Don Box's Spoutlet

http://pluralsight.com/blogs/dbox/archive/2005/07/14/13352.aspx

从基本原理层次上说,REST 样式和 SOAP 样式 Web Service的区别取决于应用程序是面向资源的还是面向活动的。

面向资源服务集中于明确的数据对象,一些基本、标准的操作可以依据这些数据对象而执行。如权威的 Gang of Four(GoF) 所述,对于熟悉面向对象设计模式概念的开发者来说,面向资源服务与基本 Memento 模式类似。实际上,服务提供方维护一组资源,并且公开一组基本操作来执行以下任务:

  • 检索资源
  • 修改资源
  • 创建新资源
  • 删除资源

根据定义,REST 样式 Web 服务是面向资源的服务。您可以通过统一资源标识符(Universal Resource Identifier,URI)来识别和定位资源,并且针对这些资源而执行的操作是通过 HTTP 规范定义的。其核心操作包括:

  • GET - 该操作返回已标识资源的状态表示。您可以通过大量的上下文要素来确定状态,例如谁正在提交请求、操作的参数(传入的参数如 HTTP 头或者查询字符串参数)和服务提供方维护的当前会话状态。
  • POST - 该操作执行对已标识资源的一些特定于应用程序形式的更新。该操作行为完全依赖于实现它的服务。由该操作返回的数据也完全依赖于应用程序。举例来说,像 GET 操作一样,它可以返回一个状态表示,它还可以选择根本不返回任何数据。
  • PUT - 该操作在已标识位置(URI)创建新资源。操作输入必须包括一个资源的状态表示。它完全依赖服务来创建基于这个状态表示的资源。
  • DELETE - DELETE 操作销毁已标识位置(URI)的资源。

在许多方面,REST 样式 Web 服务与 SQL、元组空间(tuple spaces)、简单消息列队等技术相似。它们都使用普通的简单操作针对明确的资源起作用。

  • SQL - SELECT、INSERT、DELETE、UPDATE 等
  • 元组空间 - GET、PUT
  • 消息列队 - SEND、RECEIVE

在每一个案例中,服务接口的设计允许您移动关于资源的信息,让其依赖于请求方来指出希望通过这些信息来做什么。

与此相对的是面向活动的资源。该类型的应用程序集中于您可能执行的操作,而不是集中于操作所依靠的资源。活动服务的一个简单的例子就是银行事务,在那里用户可以把钱从一个账户转移到另一个账户上。用户不想直接操作资源(钱、银行账户等等),他们只想告诉银行他们想要达到的目的,并且让银行根据他们的利益对资源进行处理。用 GoF 术语来描述应用程序:

  • 命令
  • 中介方
  • 策略
  • 代理设计模式

面向资源服务不管资源的类型怎样,执行的操作可以保持相对不变,与面向资源服务不同,面向活动服务的操作完全依赖于正在执行的活动类型。例如,银行服务可以公开一个名为 transferFunds 的操作,该操作不同的输入将完全决定服务的资金转移功能。

SOAP 样式 Web 服务通常是面向活动的。 WSDL 文档定义并描述特定于服务的操作。操作由特定于服务的消息交换组成。每一个操作都是一个可以执行的活动。那些正在被执行的操作所针对的内容通常是不相关的。正如 Web 服务资源框架系列规范所描述的,资源可以隐含在活动之中,但是这种隐含与活动的定义不相关,并且只是为了改进执行活动所依赖的上下文。与针对资源而执行活动的面向资源服务相比,它和用来访问资源的服务接口互不相关。

(关于REST和SOAP的说明摘自http://www-128.ibm.com/developerworks/cn/webservices/ws-restvsoap/?ca=dwcn-newsletter-webservices

posted @ | Feedback (5) | Filed Under [ DOTNET ]

Monday, May 09, 2005

.net Framework 1.1 sp1和,.net Framework  2.0的环境下,如果是一个多处理器的机器,可以直接在程序的Config中设置GC的模式,这样就可以将默认的WorkStation GC改成Server GC。

好处是:在一台多处理器的服务器上,使用Server GC模式将可以给你的应用程序带来最大吞吐量和更好的可伸缩性。系统默认是WorkStation GC

在此之前只有IIS和COM+程序默认使用Server GC(多处理器计算机)。 

配置方式:在<configuration>下加一个节点:

<runtime>
  <gcServer enabled="true" />
 </runtime>
   

配置完成后可以使用:

tasklist /m mscorwks.dll

tasklist /m mscorsrv.dll

来看你的机器上哪些程序使用WorkStation GC,那些使用Server GC。

不过大家要慎重,在我的1.1 sp1环境上,发现Server GC几天都没怎么清理。

 

 

posted @ | Feedback (67) | Filed Under [ DOTNET ]

Sunday, March 27, 2005

(2005年3月22日BEA正式向中国市场推出新的全球电信计划并公布了该产品系列的首款产品――BEA WebLogic SIP Server。看来VOIP吸引了每个大厂商。Microsoft的LCS又多了一个竞争对手。

 

  • BEA WebLogic SIP Server,这是业界首款基于标准的运营商级J2EE应用服务器,它集成了会话初始化协议(SIP)支持功能。SIP是一种标准协议,为两个或者多个实体之间建立一条通信通道以便传送包括多种媒体(如语音、图像和视频等)的信息。BEA WebLogic SIP Server这款产品是专为在SIP环境开发及部署服务而设计的。BEA WebLogic SIP Server以被电信行业广泛认可的WebLogic Server为基础,旨在让运营商可以利用基于标准的计算技术拓展网络基础设施,这些计算技术可以提供全新的语音和数据融合服务,包括IP语音传输(VoIP)、集成的固定和无线服务、支持语音的多人在线游戏、实时互动投票及远程会议应用。
  • BEA WebLogic Network Gatekeeper是一款仍在开发的产品,旨在让运营商可以定义、管理及执行网络资源的访问控制和服务质量(QoS)参数。BEA WebLogic Network Gatekeeper可以充当单一入口点,为访问重要网络功能定义并执行策略,这些重要功能包括内容收费、移动终端位置信息、短信和彩信发送等。BEA WebLogic Network Gatekeeper之所以是BEA WebLogic通信平台的一个重要组成部分,是因为它可以让电信服务提供商更清楚地了解及控制网络基础设施,并同时允许第三方开发商去开发和使用这些网络的资源。

posted @ | Feedback (28) | Filed Under [ VOIP&Telecom ]