itec h- ON & E ngenharia de S oftware Novas Tecnologias Aplicadas à Eng. de So5.
Tecnologias Pág. 2
Microso5 Visual Studio 2010 Express l Visual C# Express + Visual Web Developer l h6p://www.microso=.com/express/downloads/#2010- All Eclipse h6p://www.eclipse.org/ Ferramentas Java SE JDK h6p://www.oracle.com/technetwork/java/javase/downloads Android SDK h6p://developer.android.com/sdk/index.html Pág. 3
Windows CommunicaMon FoundaMon WCF Services Vários Modelos de Comunicação API do.net para SOA Pág. 4
RepresentaMonal State Transfer Cliente pede a execução de uma operação ao servidor GET Arquitecturas cliente/servidor Servidor processa e responde ao cliente Os pedidos e as respostas são elaborados com base na transferência de representação de recursos Um recurso é um conceito significamvo Conjunto de operações bem definido DELETE POST HTTP REST Services A representação dos recursos é um documento que capta os estados dos recursos PUT Pág. 5
Exemplo RestService.svc Pág. 6
Exemplo RestService.svc.cs [AspNetCompatibilityRequirements( RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] public class RestService : IRestService { public string Hello(string name) { return "Hello "+name; public int getnumber() { return (1234); public myobj sum2numbers(string n1, string n2) { myobj obj= new myobj(); obj.myint = Convert.ToInt32(n1) + Convert.ToInt32(n2); return (obj); Pág. 7
[ServiceContract] public interface IRestService { [OperationContract] [WebGet( UriTemplate = "Hello/{name", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] string Hello(string name); Exemplo IRestService.cs [OperationContract] [WebGet(UriTemplate = "getnumber", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] int getnumber(); [OperationContract] [WebGet(UriTemplate = "sum2numbers/{n1/{n2", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] myobj sum2numbers(string n1, string n2); [DataContract] public class myobj{ [DataMember(Name = "myint")] public int myint{get;set; Pág. 8
Eclipse + Emulador Android Pág. 9
Exemplo Java (oncreate) public class Main extends Activity { private String SERVICE_URI = "http://ws- android.itech- on.com/restservice.svc"; private EditText makeedit, editsum, editresult; private Button button; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); makeedit = (EditText)findViewById(R.id.editText1); editsum = (EditText)findViewById(R.id.editText2); editresult = (EditText)findViewById(R.id.editText3); button = (Button)findViewById(R.id.button1); editsum.settext("value Here"); editresult.settext("result"); this.button.setonclicklistener(new OnClickListener() { public void onclick(view v){ int res=getsum(makeedit.gettext().tostring(),editsum.gettext ().tostring()); editresult.settext(integer.tostring(res)); );... Pág. 10
Exemplo Java (getsum) public int getsum(string v1, String v2) { try { DefaultHttpClient httpclient = new DefaultHttpClient(); HttpGet request = new HttpGet(SERVICE_URI+"/sum2Numbers/"+v1+"/"+v2); request.setheader("accept", "application/json"); request.setheader("content- type", "application/json"); HttpResponse response = httpclient.execute(request); HttpEntity responseentity = response.getentity(); char[] buffer = new char[(int)responseentity.getcontentlength()]; InputStream stream = responseentity.getcontent(); InputStreamReader reader = new InputStreamReader(stream); reader.read(buffer); stream.close(); JSONObject jobj = new JSONObject(new String(buffer)); return ((int)(jobj.getint("myint"))); catch (Exception e) {e.printstacktrace();return 0; Pág. 11
Exemplo Java (onresume) @Override public void onresume() { super.onresume(); try { HttpGet request = new HttpGet(SERVICE_URI + "/getnumber"); request.setheader("accept", "application/json"); request.setheader("content- type", "application/json"); DefaultHttpClient httpclient = new DefaultHttpClient(); HttpResponse response = httpclient.execute(request); HttpEntity responseentity = response.getentity(); char[] buffer = new char[(int)responseentity.getcontentlength()]; InputStream stream = responseentity.getcontent(); InputStreamReader reader = new InputStreamReader(stream); reader.read(buffer); stream.close(); String query = new String(buffer); makeedit.settext(query); catch (Exception e) {e.printstacktrace(); Pág. 12