分类 编程,代码 下的文章

最近一直在纠结于maven的一些使用.很多时候都忘记了对于目前的我来说写代码写好代码才是关键的而不是纠结于这个pom tool才是,不过我这个人对于任何接触的事物还是喜欢搞清楚来由的习惯,所以我还是希望能够花点时间多了解一下的,毕竟我离开java有段时间了,而对于java来说在开发中的各种XML文件的配置总是让人头大,其实造成这个的终究原因还是java那个时候的热得发烫,而现在很多时候我已经不想再投身于java或者.net阵营了.因为对于那些经常被提到的大项目什么企业级的,动不动就提到大数据量并发什么的说辞我依然没有什么丝毫挑战的兴趣,或者我压根就没有能力碰到或者去解决这些issues.我希望我能够拿一个开源的脚本程序语言来解决生活中一些实际的问题,这些才是我的价值所在,而不是整天在那里思考如何才能够解决大并发量的数据问题.

不过既然混口饭吃还是要有java或者.net防身的好.就我目前的看法java在今后的若干年是会一直存在下去的.因为从热的发烫的时候起很多的领域已经被它占领,而不再开发新的光维护就会需要很多的技术人员的.这个时代我相信会很持久的.就好比那个COBOL语言,现在还有很多日企在维护,在内地很多程序员还需要学习他来维护他,给日本人干活.没有办法,得吃饭.

所以还是多会点东西比较靠谱,不说能够在某个领域多大牛,其实也就那回事.get things done! 才是解!

阅读剩余部分

今天在apache的目录上down了一个ibatis-2.3.4.726.zip ,里面有sample,那就跑跑看吧,可是在运行的时候还是报错了.
我想很多人曾经要到了这个问题,或者很多想要用ibatis的人从开始的时候遇到这个问题就放弃了,这个错误真是犯的很低级啊!
心想为什么呢?就一个劲儿找啊!而报的错就是sql语句有问题,而往往总是不去关注最有可能发生问题的地方,而是一个劲儿在别处找,或者就是不仔细看报错的内容,最终就是浪费时间!
我估计他2.*的包里都会有这个问题.问题出在哪里呢?就是这个地方:

一个web编程框架往往是一些包或者模块的集合,能够让开发人员来编写web应用或者服务,而不需要去关注底层的一些实现.例如协议,socket,或者线程进程管理等.
虽然大多数的框架都是服务器端的,但是随着ajax的流行,一些框架已经开始包含了ajax 的代码,来帮助开发人员应付一次比较棘手的客户端问题,在比较牛逼的框架技术里能够把浏览器作为一个应用的运行环境,比如gmail.
作为一个使用框架的开发人员,你需要通过写符合约定的代码来让你融入到框架中,这样你就可以把交互,架构,底层的一些东西委托给框架来帮你处理,而你只需要关心你应用的逻辑本身,而这种在web开发中插件形式经常被认为是和传统的程序和库之间的关系是相对的,而和那种通过一个主循环然后把对应的事件分发给相对应的处理程序来处理的方式是一样的.

通常,框架需要提供很多的组件例如请求拦截器(获取form元素,处理cookie和会话),生成响应(生成一个html格式的响应数据,或者别的格式),存储数据,等等.往往一个牛逼的框架需要各种的抽象,经常取决于他们自己,他们试图提供一个应用的完整解决方案,对应应用的每一层都提供相应的组件.

很多框架现在都提供对于他们已经支持的组件和抽象的自定义,利用他们提供的对于处理特定事物的组件.这样,你就能够建立你自己的完整的框架利用已有的框架.

先来说说这个单词吧.好像这个单词还有很多故事.一般就是说一个在某个领域比较牛逼的人,专家高手.

Apache Maven是一个让人理解起来容易的软件工程管理工具.它是基于工程对象模型的概念产生的.它能够从一小段信息来管理工程的build,报告,还有文档.

Maven,它是一个Yiddish词汇,意味知识的积累,它源于Jakarta Turbine项目,目的是为了能够简化工程的构建过程.当时有很多的工程,他们都有自己的ant build文件,他们都是有点细微的差别,而jar文件都由cvs在维护,他们希望能够有一个标准的方法来构建工程.能够很简洁的定义工程的组成,能够简单得来发布工程信息,能够在很多的工程间共享jar文件.

结果就是有了这么一个工具,他能够用来构建和管理基于java开发的项目.开发这个工具的人希望这个工具能够让那些每天从事java开发工作的开发人员感觉到轻松并且能够对于项目的认识有一个直观的帮助.

阅读剩余部分

介绍

解释WCF和 asp.net web service之间的区别和联系.在使用开发实现asp.net web service的时候我们主要依靠的是XmlSerializer来把数据对象转化为xml的.

在使用XmlSerializer来序列化.net类型为xml的时候需注意一下几点:

a)      只有public的字段或者属性才能够被解析为xml.

b)      类必须实现IEnumerable的接口.

c)      那些实现了IDictionary接口的类型不能够解析为xml,例如Hash table.


[DataContract]
public class Item
{
[DataMember]
public string ItemID;
[DataMember]
public decimal ItemQuantity;
[DataMember]
public decimal ItemPrice;

}

 

而WCF是使用DataContractAttribute和DataMemberAttribute这两个属性类来把.net下的类型解释为xml的.

DataContractAttribute属性类能够运用在类和结构上.DataMemberAttribute运用在字段和property上.而这些Field和property能够是public或者private的.

DataContractAttributeXmlSerializer之间的只要区别

a)      DataContractAttribute在设计上要比XmlSerializer有更好的性能.

b)      在序列化数据对象类的时候,XmlSerializer不能够对具体的字段区别对待.而DataContractAttribute能够显式表示那些字段和属性需要内序列化.

c)      DataContractAttribute能够解析Hashtable为xml.

开发Service

在开发asp.net web service 的时候我们必须在类上添加WebService属性和在方法上添加WebMethod属性.

Example

[WebService]
public class Service : System.Web.Services.WebService
{
[WebMethod]
public string Test(string strMsg)
{
return strMsg;
}
}

在开发WCF的时候我们需要这样:

[ServiceContract]
public interface ITest
{
[OperationContract]
string ShowMessage(string strMsg);
}
public class Service : ITest
{
public string ShowMessage(string strMsg)
{
return strMsg;
}
}

首先我们需要写一个接口,这个接口被ServiceContractAttribute修饰.它说明了这个接口定义了一个WCf 服务的契约.接口的方法都被OperationContractAttribute所修饰,它说明了这些方法都是服务契约的操作.

实现了这个接口的类就看做是WCF里的服务类.

服务宿主

Asp.net web service被编译成了一个dll和一个.asmx文件,这个服务文件在应用程序的根目录下.dll在bin文件夹里,我们通过url来访问服务.

WCF服务可以寄宿在IIS或者WindowsActionService.

a)      编译服务类为一个类库.

b)      .SVC服务类文件复制到虚拟目录根目录,程序集复制到bin子目录.

c)      复制web.config文件到虚拟目录的根目录.

客户端开发

ASP.NET Web services通过命令行工具wsdl.exe来生成客户端代码.WCF使用ServiceMetadata tool(svcutil.exe)来生成客户端代码.

消息表述

在ASP.NET Web services中,SOAP消息的头可以自定义,在WCF服务中提供了MessageContractAttribute , MessageHeaderAttribute 和 MessageBodyMemberAttribute来描述soap消息的结构.

服务描述

asp.net接收到一个wsdl描述的get请求时,同样会返回一个wsdl描述的响应.可以通过继承自ServiceDescriptionFormatExtension类来自定义wsdl.

当wcf接收到一个wsdl的请求时,wcf可以使用继承自ServiceMetadataBehavior这个类来自定义返回的wsdl响应.

异常处理

在ASP.NET Web services中,不被处理的异常将会给客户端返回一个soap错误.在wcf 服务中,在遇到不被处理的异常时不会返回soap错误,可以通过配置文件来处理这些异常,能够给客户端发送一些有助于调试的响应.

基本上可以说有下面几点关于在使用这两个服务时的选择:

  1. Wcf更加标准一点比起asp.net web service.
  2. Wcf可以支持HTTP,TCP,MSMQ,WS-HTTP 等的这些协议.而asp.net web service只支持http.
  3. Wcf能够像com+那样处理事务
  4. Wcf已经集成了Json
  5. Wcf可以寄宿在IIS或者WAS.
  6. Asp.net web service没有实例管理功能.例如你不能够有单例的service或者事务管理.