2006年03月09日

参考文献:但正刚,《ASP.NET高级编程》,清华大学出版社

在请求aspx页面时,服务器编译页面,产生对应的Page类。Page类生命周期包括初始化、生成HTML代码和释放三个阶段。aspx页面可以直接是Page类,也可以是继承自Page类的子类。当用户第一次请求页面时,Page类还不存在IsPostBack属性,但在用户在Page类产生的HTML页面上触发事件时,即回传时,HTTP请求中包含事件信息还有页面状态(View State)。基于View State技术,保留回传之前原有页面信息的工作,都由ASP.NET自动完成。

相对于ASP.NET,ASP在被请求时,不是在服务器上编译产生Page类,而是解释asp程序代码,随后插入到
HTML页面中去。因此,ASP没有产生整个HTML,而ASP.NET通过编译产生的可执行文件产生全部的HTML。

2006年02月26日

private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   //新建数据集
   DataSet ds=new DataSet();
   //读取xml架构文件
   FileStream fs=new FileStream(Server.MapPath("guestbook.xsd"),FileMode.Open,FileAccess.Read);
   StreamReader schema=new StreamReader(fs);
   ds.ReadXmlSchema(schema);
   fs.Close();

   fs=new FileStream(Server.MapPath("guestbook.xml"),FileMode.Open,FileAccess.Read);
            StreamReader reader=new StreamReader(fs);
   ds.ReadXml(reader);
   fs.Close();

   DataView Source=new DataView(ds.Tables[0]);
   DataGrid1.DataSource=Source;
   DataGrid1.DataBind();
  }

红代码处出错,问题在于根据guestbook.xsd产生的guestbook.xml文件的根元素是guest,而一级子元素也是guest。因此,需要修改xsd,把guest作为子元素而另取根元素名为guestroot。

2006年02月21日

文献:谈猛刚,《基于企业门户的应用集成研究》,中国科学院研究生院

再工程就是提高理解,改进软件本身的活动。

重构对遗留系统(Restructing):逆向工程原系统,然后创建一个运行在新平台上的系统。抽取了基本功能进行重写,使能在新系统下运行,具有健壮性和维护性。是对原系统深层次的理解。

包装(Wrapping):仅对遗留系统的接口完成封装,再以规范接口的形式提供给集成平台。是对原系统的浅层次理解。所以没有解决系统级的更本问题,如过载现象等。

移植(Migrating):尽量应用原有系统的实现,设计规范,避免重新开发。目标系统在另一个环境中运行。

第一种:基于Kerberos协议的Tickets认证
第二种:基于凭证库的认证

Tickets认证:是一种第三方认证机制,当用户需要访问一个应用前,被重定向到认证中心组件上(CAC),认证成功后获得一个Ticket,代表了用户在某个应用上的合法身份。
基于凭证库的认证:将Portal用户的身份映射到各应用,构造出一个凭证,用以在各应用中完成认证工作。优点是不需要更改原有应用的认证机制。

2006年02月17日

什么是Tag 兼谈软分类- –

硬分类:就是已往我们发文章的时候通过选择系统现有的固定的分类。
软分类:根据文本或者信息的意义由信息的组织者为信息指定一个或者多个“标签”。

Tag(中文叫做“标签”) 是一种新的组织和管理在线信息的方式。它不同于传统的、针对文件本身的关键字检索,而是一种模糊化、智能化的分类。例如我可以为本文打上如下的标签:

Tag、标签、分类、博客

标签的增加有信息的组织者自主添加,带有很强的个性化因素. 因此在个性中寻找共性将是一个Tag engine 区别于其它搜索引擎的一个特征.

tag engine 即 标签搜索引擎是将这些 tag/标签 进行归类整理的搜索引擎, 是一个能够进行智能分类的搜索引擎, 希望借助这个搜索引擎将现有的众多的文章进行整理和分类.

我觉得tag应该算是一种人工分类。我做了计算tag之间的相关度来做在线推荐尝试,我觉得到后面应该主要考虑相关度之间的问题,当tag数目和每个tag下内容数目积累到一定数目对用户来说也就不方便了。

2006年02月14日

文献:罗军红,《Web services在企业应用集成中的应用》,合肥工业大学

传统的EAI是复杂应用系统连接模式的,即通过点到点的连接来实现集成,这必然就造成了系统的实施难度、维护难度以及可扩展性。而基于web services的EAI是独立解决方案模式,它可以把一个大应用系统分解成多个应用组件,然后用统一开放的标准封装,通过简单组合装配各子系统的web services,就能实现系统的集成,避免了点对点集成中繁琐代码编写。更为重要的是,由于标准统一开放和web services封装的独立性,跨平台的应用集成能够方便的实现。在web services的发展中,WSDL和UDDI协议可以实现动态装配,WSFL可以实现服务流定义。现在的web services是基于功能接口的,提供了函数或方法级别的集成,今后的web services将自然地基于事务,因而能够包装一个应用。

2006年02月13日

文献:Web services在企业应用集成中的应用,罗军红,合肥工业

1、表示集成模型
界面重组的方式集成应用,把各个分散系统的终端界面和用户界面用一个标准的界面(如浏览器)来替代。企业门户(Portal)可以看作是一个复杂的界面集成解决方案。此种方法容易但限制较大。

2、数据集成模型
是最普遍的集成方式,通过集成各种软件组件的数据库管理系统,文件或数据库来实现应用软件之间的集成。具体的方式有:批传输、数据合并、数据复制以及ETL(Extract Transform Cleanse Load 析取,转换,加载)。其中ETL是一种非常有效的途径,因为它可以绕开应用软件直接对数据存储进行操作。数据集成的缺点是无法体现出商业逻辑,处理业务流程。

3、功能集成模型
3.1、商业流程集成
因为企业应用一般都跨越多个应用,因而可以用高层的中间件来体现商业流程(如消息中介,有总线型和Hub型)。但消息中介处于各个应用之间,由此造成的点对点的连接增加的实施的强度,也不利于扩展和维护,是一种紧耦合的集成模型。另外,这种方式还不支持Internet。
3.2、函数或方法集成
此种方法涵盖了普通代码、API、RPC、分布式中间件、面向消息中间件以及Web services技术等。这种集成方式是基于同步模式,即请求与响应,而且它是送耦合的。

2006年02月08日

文献:《WebServices系统的协同问题分析及其对策》,龚家兵,曹彩凤,崔方龙,中国科技大学

不同的SOAP Toolkit可能有不同的创建和翻译规则,在某种toolkit中可选的属性在另一端toolkit中可能就是必需的。因此就存在了协同的问题。SOAP的协同的本质就是解决HTTP和XML的协同问题。解决方法可以是:

保持类型简单,避免高级的XMLSchema构造。首先使用XSD。当产生Web服务的时候确保Document/Literal。在同一个WSDL文档中提供所有类型的XMLSchema定义。等等

2006年02月07日

最初的Portal就是Internet上的门户,集中信息资源.随后Portal的概念被扩展,伸入了Intranet,并且不仅限于集中信息,也用于集成应用。因此,Portal除了可以检索、分类和个性化之外,也具有了整合流程、协作交流的作用。企业信息门户对内是管理和日常工作的公用平台,对外是企业的服务网站。企业信息门户包含一下以下几个功能:用户接口(管理图形化接口,用户输出功能),内容发布(内容管理和导航),服务发布(提供复杂应用,如企业应用和工作流),信息门户管理(用户管理)。

Portal、Portlet和Portlet容器
容器用于运行Portlet,接受请求,执行请求并返回给Portal。Portal用于拼装标记语言片断。

Portlet生命周期及接口
初始化:init。处理请求:processAction,render。销毁:destroy。

Portlet在集成上的意义
传统的集成方法是中间件平台或是接口。但中间件使得各企业应用无法自主把握而把所有的权力交给了第三方中间件平台提供商;而接口虽然可以使安全性得以加强,但是在大型集成中接口数量的繁多又使得此种方案不具可行性。
Portlet正好可以解决应用集成这个问题,各个企业应用根据JSR168规范编写Portlet,为自己的应用暴露接口,而这接口不会因对接应用的不同而不同,它具有一般性,是基于JSR168规范或xml格式的,所以不会产生传统接口数量激增的问题。在各个企业应用都实现自己的Portlet之后,通过http等传输协议,加上WSRP远程可以实现应用集成。

2006年01月31日

最简单的单值绑定如,<asp:Image runat="server" ImageUrl=’<%#url%>
重复值绑值如,<asp:ListBox runat="server" ID="Listbox1" size="3" DataTextField="Key" DataValueField="Value"/>。其中的key和value是hashtable中的值,这是最简单形式的数据源。

最后,在加载页面时,必须显式调用每一个控件的DataBind方法,或者调用Page对象的DataBind方法(一次完成)。

Repeater控件:支持几个模板,有一个是必须的,就是ItemTemplate,如,
<asp:Repeater runat="server" ID="Repeater1">
<ItemTemplate>
<li>
<%#DataBinder.Eval(Container.DataItem,"TitleOfCourtesy")%)> ….
</li>
</ItemTemplate>
</asp:Repeater>

页面加载时,数据绑定,如,Repeater1.DataSource=datareader;Reapeater1.DataBind();

其中,Container.DataItem访问的是被绑定的DataReader。DataBinder.Eval用于把数据源自动转换到被绑定的类型,而且可以添加参数,指定格式串,如,<%#DataBinder.Eval(Container.DataItem,"BirthDate","{0:MM/dd/yy}")%)>。

Repeater控件可以处理事件,如,<asp:Repeater runat="server" ID="Repeater1" OnItemCommand="function"> …<asp:Button runat="server" Text="Select" CommandName="commandName" CommandArgument=’commandArgument’/> …

其中,function可以是,void function(object sender,RepeaterCommandEventArgs e)
{…;
string sql="SELECT * FRME Employees WHERE EmployeeID=" + e.CommandArgument;
…;}