Verbrauchen WCF-Dienst in Xamarin Cross-Plattform-Anwendung

Habe ich einen WCF-Dienst ruft Daten aus SQL-Datenbank und können aktualisieren und ändern von Daten in SQL-Datenbank. Ich bin versucht zu rufen, WCF-Methoden von xamarin für android und xamarin für iOS. Ich suchte eine Menge für ein Beispiel, wie call-PUT-und POST-Methode von WCF-service durch xamarin für android und xamarin für iOS, aber kein Glück. Ich habe die WCF-code unten für Referenz. ...selbst erstellten Web-API, aber alle Beispiele und tutorials zu konsumieren Web-API sind für so rufen Sie GET-Methode . Ich sehe keine Referenz Dokument, das zeigt, wie call-PUT-oder Post-Methode vom WCF oder Web api über cross-Plattform. Ich habe getestet WCF-service über Fiddler und fein gearbeitet. Was wäre der nächste Schritt ..den ich erstellt habe-proxy für diesen web-service mit SlsvcUtil.exe wie bereits in xamarin-Dokumentation. Kann jemand post ein ein Beispiel von xamarin.Android aufrufen, werden Update-oder delete-Methode aus dem folgenden wcf-Dienst.Verzweifelt auf der Suche nach Hilfe.Service enthält webHttp verbindlich.

WCF

Service1.svc.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Runtime.Serialization; 
using System.ServiceModel; 
using System.ServiceModel.Web; 
using System.Text;

public class Service1 : IService1 
{ 
    public List GetDeptsList() 
    { 
        using (DeptDBEntities entities = new DeptDBEntities()) 
        { 
            return entities.Depts.ToList(); 
        } 
    }

    public Dept GetDeptByID(string no)
    {
        try
        {
            int deptId = Convert.ToInt32(no);

            using (DeptDBEntities entities = new DeptDBEntities())
            {
                return entities.Depts.SingleOrDefault(dept => dept.no == deptId);
            }
        }
        catch
        {
            throw new FaultException("Something went wrong");
        }
    }

    public void AddDept(string name)
    {
        using (DeptDBEntities entities = new DeptDBEntities())
        {
            Dept dept = new Dept { name = name };
            entities.Depts.Add(dept);
            entities.SaveChanges();
        }
    }

    public void UpdateDept(string no, string name)
    {
        try
        {
            int deptId = Convert.ToInt32(no);

            using (DeptDBEntities entities = new DeptDBEntities())
            {
                Dept dept = entities.Depts.SingleOrDefault(b => b.no == deptId);
                dept.name = name;
                entities.SaveChanges();
            }
        }
        catch(Exception e)
        {
            throw new FaultException(e.Message);

        }
    }

    public void DeleteDept(string no)
    {
        try
        {
            int deptId = Convert.ToInt32(no);

            using (DeptAppDBEntities entities = new DeptAppDBEntities())
            {
                Dept dept = entities.Depts.SingleOrDefault(b => b.no == deptId);
                entities.Depts.Remove(dept);
                entities.SaveChanges();
            }
        }
        catch
        {
            throw new FaultException("Something went wrong");
        }
    }

}

web.config

   <?xml version="1.0"?>
      <configuration>
      <configSections>
       <section name="entityFramework"   type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
     </configSections>
     <system.web>
     <compilation debug="true" targetFramework="4.0">
      <assemblies>
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
      </assemblies>
      </compilation>
      <pages controlRenderingCompatibilityVersion="4.0"/>
      </system.web>
      <system.serviceModel>
                 <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      </behaviors>
      <services>
      <service name="WcfWithJsonP.Service1" behaviorConfiguration="restfulBehavior">
        <endpoint address="" behaviorConfiguration="webBehavior" binding="webHttpBinding" bindingConfiguration="" contract="WcfWithJsonP.IService1"/>
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost/Service1"/>
          </baseAddresses>
        </host>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        </service>
       </services>
      <behaviors>
      <endpointBehaviors>
        <behavior name="webBehavior">
          <webHttp defaultOutgoingResponseFormat="Json"/>
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="restfulBehavior">
          <serviceMetadata httpGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
      </behaviors>
      <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
      </system.serviceModel>
     <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
        <directoryBrowse enabled="true"/>
     </system.webServer>
     <entityFramework>
     <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory,   EntityFramework">
      <parameters>
        <parameter value="v12.0"/>
      </parameters>
     </defaultConnectionFactory>
     </entityFramework>
    </configuration

>

Main.axml für

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:minWidth="25px"
    android:minHeight="25px">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="134.1dp"
        android:layout_height="fill_parent"
        android:minWidth="25px"
        android:minHeight="25px">
        <TextView
            android:text="Enter No:"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:layout_width="163.4dp"
            android:layout_height="wrap_content"
            android:id="@+id/No"
            android:layout_marginBottom="27.5dp"
            android:layout_marginTop="0.0dp"
            android:layout_marginLeft="5dp" />
        <TextView
            android:text="Enter name:"
            android:textAppearance="?android:attr/textAppearanceSmall"
            android:layout_width="252.7dp"
            android:layout_height="wrap_content"
            android:id="@+id/Name"
            android:layout_marginBottom="27.5dp"
            android:layout_marginTop="0.0dp"
            android:layout_marginLeft="5dp"
            android:enabled="false"
            android:visibility="invisible" />
    </LinearLayout>
    <Button
        android:id="@+id/Get"
        android:layout_width="fill_parent"
        android:layout_height="36.6dp"
        android:text="Get" />
    <Button
        android:id="@+id/ADD"
        android:layout_width="fill_parent"
        android:layout_height="36.6dp"
        android:text="ADD" />
    <Button
        android:id="@+id/Update"
        android:layout_width="fill_parent"
        android:layout_height="36.6dp"
        android:text="Update" />
    <Button
        android:id="@+id/Delete"
        android:layout_width="fill_parent"
        android:layout_height="36.6dp"
        android:text="Delete" />
    <TextView
        android:text=""
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ValueNo"
        android:layout_marginBottom="27.5dp"
        android:layout_marginTop="0.0dp"
        android:background="@android:color/holo_purple" />
    <TextView
        android:text=""
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/ValueName"
        android:layout_marginBottom="27.5dp"
        android:layout_marginTop="0.0dp"
        android:background="@android:color/holo_purple" />
</LinearLayout>
  • Ich habe die config.Datei und ich bin auf das erstellen von einfachen android-Projekt in Xamarin verbrauchen diese service.
  • Haben Sie befolgen Sie die Anweisungen finden Sie auf der Xamarin-Website? developer.xamarin.com/guides/cross-platform/... Sie sind ziemlich detailliert. Wenn Sie Probleme mit den Anweisungen, können Sie etwas konkreter, mit welchen Anteilen?
  • ja , habe ich, ich proxy erstellt und Hinzugefügt in meinem Projekt. Grundsätzlich möchte ich hinzufügen, löschen oder aufnehmen, wenn wir auf den button klicken. Wert in das Textfeld eingegeben werden müssen, Hinzugefügt durch den wcf-Dienst in die Datenbank ein, die beim klicken auf die Schaltfläche HINZUFÜGEN. Wenn klicken Sie auf die Get-Taste wird dann der eingetragene Wert in textbox Eintragen Anzahl abgerufen werden muss, dass ist GetDeptById von WCF-Dienst und muss die Anzeige in der textbox zu. Kein text Feld muss angezeigt werden, keine .und der name der textbox anzuzeigenden Namen ein.
  • Ausgezeichnet. Also alles, was Sie jetzt tun müssen ist, erstellen Sie einige Schaltflächen, und klicken Sie auf event-Handler in Ihre Xamarin.Android-Projekt. Innerhalb der event-Handler oder in der Klasse, erstellen eine neue Instanz der service-client definiert ist, innerhalb des proxy -, und rufen Sie die entweder die AddDept oder DeleteDept Methoden. Die Generierung der proxy schafft diese Methoden für Sie, basierend auf der service-proxy erstellt wurde.
  • Ich füge meine xml hier. Aber nicht sicher, wie Sie starten oder was Sie in
  • mainactivity.cs.
  • Ich erstelle eine code-snippet mit einem Beispiel.
  • vielen Dank, aber möchte nur sicherstellen, dass ich mit ADO.net entity frame work zum abrufen von Daten SQLdatabase

InformationsquelleAutor user2897967 | 2014-09-09
Schreibe einen Kommentar