Arşiv

Posts Tagged ‘vb.net’

vb xml ve json web servis

12 Kasım 2016 1 yorum

Merhabaxml_json
Bugün Vb ile XML ve JSON web servis hazırlamaya bakacağız. Bir web servis hazırlayıp bu servis ile bir takım içindeki çalışanların id, adı, maaşı ve pozisyonu bilgilerini hem xml hem de json olarak nasıl alabilceğimize bakacağız. Bu işlem için önce bir proje açalım. Visual Studio içinde “File > New > Project > Visual Basic > Windows > Web > ASP.NET Web Application” seçiminden sonra ekrana gelen seçimlerden “Empty” seçimi ile projemizi oluşturalım. Proje oluştuktan sonra proje üzerinde sağ tık ile “Add > Web Service(ASMX)” seçimi ile servisimizi ekleyelim. Artık proje için herşey hazır olduğuna göre şimdi servis içinde kullanacağımız class larımızı hazırlayalım. İlk olarak takım üyelerinin bilgilerinin oldugu “Member” classını ve sonrasında da “Team” classını oluşturualım.

[Member.vb]

Public Class Member

    Private m_Id As Integer
    Public Property Id() As Integer
        Get
            Return m_Id
        End Get
        Set
            m_Id = Value
        End Set
    End Property

    Private m_Name As String
    Public Property Name() As String
        Get
            Return m_Name
        End Get
        Set
            m_Name = Value
        End Set
    End Property

    Private m_Salary As Integer
    Public Property Salary() As Integer
        Get
            Return m_Salary
        End Get
        Set
            m_Salary = Value
        End Set
    End Property

    Private m_Position As String
    Public Property Position() As String
        Get
            Return m_Position
        End Get
        Set
            m_Position = Value
        End Set
    End Property

End Class

[Team.vb]

Public Class Team
    Public Function GetTeamMembers() As Member()
        Dim teamMembers As Member() = New Member() {
            New Member() With {.Id = 1, .Name = "Samet", .Salary = 10000, .Position = "Software Specialist"},
            New Member() With {.Id = 2, .Name = "Kubilay", .Salary = 10000, .Position = "Software Specialist"},
            New Member() With {.Id = 3, .Name = "Erkan", .Salary = 10000, .Position = "Software Specialist"}}

        Return teamMembers
    End Function
End Class

İşlem yapacağımız classlarımız artık hazır şimdi bu classları kullanacağımız servisimizin içeriğini hazırlayalım. Servisimizin içinde iki adet metodumuz olacak, birisi XML olarak diğeride aynı veriyi JSON olarak bize verecek. Metodlarımız GetTeamFromXML ve GetTeamFromJSON olacak.

[JSONandXML.asmx.vb]

Imports System.ComponentModel
Imports System.Web.Script.Serialization
Imports System.Web.Script.Services
Imports System.Web.Services

' To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
' <System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://sametcelikbicak.com/")>
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class JSONandXML
    Inherits System.Web.Services.WebService

    <WebMethod>
    Public Function GetTeamFromXML() As Member()
        Dim team As New Team()
        Return team.GetTeamMembers()
    End Function

    <WebMethod>
    <ScriptMethod(ResponseFormat:=ResponseFormat.Json)>
    Public Function GetTeamFromJSON() As String
        Dim team As New Team()
        Return New JavaScriptSerializer().Serialize(team.GetTeamMembers())
    End Function

End Class

Artık herşey kullanıma hazır şimdi projeyi çalıştırıp servisin çalışmasını ve dönen değerlere bakalım. Servis çalıştığında aşağıdaki gibi görünecektir.

jsonandxmlvb

İlk olarak alıştığımız gibi XML metodunu çağırdık ve gelen sonuç aşağıdaki gibidir.

[GetTeamFromXML]

<?xml version="1.0" encoding="UTF-8"?>
<ArrayOfMember xmlns="http://sametcelikbicak.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Member>
<Id>1</Id>
<Name>Samet</Name>
<Salary>10000</Salary>
<Position>Software Specialist</Position>
</Member>
<Member>
<Id>2</Id>
<Name>Kubilay</Name>
<Salary>10000</Salary>
<Position>Software Specialist</Position>
</Member>
<Member>
<Id>3</Id>
<Name>Erkan</Name>
<Salary>10000</Salary>
<Position>Software Specialist</Position>
</Member>
</ArrayOfMember>

Şimdide aynı verilere sahip sonuçları bize veren JSON metodunu çağıralım ve sonuçlarına bakalım.

[GetTeamFromJSON]


<?xml version="1.0" encoding="UTF-8"?>
<string xmlns="http://sametcelikbicak.com/">[{"Id":1,"Name":"Samet","Salary":10000,"Position":"Software Specialist"},{"Id":2,"Name":"Kubilay","Salary":10000,"Position":"Software Specialist"},{"Id":3,"Name":"Erkan","Salary":10000,"Position":"Software Specialist"}]</string>

Artık bir web servis ile hem xml hemde json olarak verileri alabiliyoruz.

Projenin kaynak kodlarına üzerinden ulaşabilirsiniz.
Kolay gelsin.

vb universal app hello world


Merhaba
universalapp
Bugün Universal App olarak bir Hello World uygulamamızı hazırlayacağız. Bildiğiniz gibi universal app her platformda çalışıyor(desktop,web, mobile ve Microsoft’un desteği olan her yerde xbox gibi). Bizde bugün sabit bir uygulama hazırlayalım. Öncelikli olarak projemizi oluşturalım ve bunun için Visual Studio da sırası ile File > New > Project > Installed > Templates > Visual Basic > Windows > Universal adımlarını takip edip, gelen ekrandan da Blank App(Universal Windows) seçeneği ile projemizi oluşturuyoruz. Oluşturduğumuz projenin örnek kodları aşağıdaki gibi olacaktır.
Uygulamamızın dizaynını yaptığımız MainPage.xaml içeriği.

[MainPage.xaml]

<Page x:Class="UniversalAppVb.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:UniversalAppVb" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <TextBox x:Name="txtHelloWorld" HorizontalAlignment="Left" Margin="10,10,0,0" TextWrapping="Wrap" Text="Hello World" VerticalAlignment="Top" Height="178" Width="340" FontSize="30" TextAlignment="Center"/>
        <Button x:Name="btnHelloWorld" Content="Hello World" HorizontalAlignment="Left" Margin="10,355,0,0" VerticalAlignment="Top" Height="51" Width="340" FontSize="30" Click="btnHelloWorld_Click"/>
    </Grid>
</Page>

Dizayn ettiğimiz uygulamamızın kontrolleriniz yazdığımız MainPage.xaml.vb içeriği

[MainPage.xaml.vb]

' The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409
Imports Windows.UI.Popups
'''
<summary>
''' An empty page that can be used on its own or navigated to within a Frame.
''' </summary>

Public NotInheritable Class MainPage
    Inherits Page

    Private Async Sub btnHelloWorld_Click(sender As Object, e As RoutedEventArgs)
        txtHelloWorld.Text = "Windows Universal App, Hello World."
        Dim message As MessageDialog = New MessageDialog("Windows Universal App with Vb, Like it ? ")
        message.Title = "Hello World"
        message.Commands.Add(New UICommand("Yes"))
        message.Commands.Add(New UICommand("No"))

        Dim result = Await message.ShowAsync()
        If result.Label = "Yes" Then
            Dim msg As MessageDialog = New MessageDialog("Thank you very much :) ")
            msg.Title = "Thanks"
            msg.Commands.Add(New UICommand("Ok"))
            Await msg.ShowAsync()
        End If
    End Sub
End Class

Burada basit olarak bir ekran hazırladık ve içinde butona bastığımızda değişen bir mesaj ekleyip sonrasında ise kullanıcıya mesaj verip işlemi kontrol etmesini sağladık. Uygulama çalıştığında aşağıdaki gibi ekran görüntülerindeki gibi olacaktır.

universalappvb1

universalappvb2

universalappvb3

Burada dikkat etmemiz gereken bir konu var. Eğer işletim sisteminizde geliştirici seçenekleri aktif değil ise uygulamayı dizayn ederken uyarı alırız. Bu özelliği aktif etmek için Başlat > Ayarlar > Güncelleştirme ve güvenlik > Geliştiriciler için sekmesi altından Geliştirici modu seçeneğini aktif etmeliyiz. Bu ayarlamayı yaptıktan sonra ise uygulamamızı dizayn edip çalıştırabiliriz.

Projenin kaynak kodlarına üzerinden ulaşabilirsiniz.
Kolay gelsin.

Kategoriler:Vb Etiketler:, , , ,

vb resource dosyası okuma


Merhaba resource
Yazdığımız programlarda birden fazla dil desteği sunacağımız zaman çeşitli yöntemler ile bunu yaparız. Bazen database üzerinde bir tablo içinde bazen de bir Resource dosyasında. Özel bazı durumlarda database üzerinde çoklu dil desteğine ait bilgileri tutsak bile genel olarak bu işlem Resource dosyları ile yapılmaktadır. Şimdi sizlerle birlikte basit bir console uygulaması hazırlayalım ve bu uygulama ile “Hello World” mesajını farklı diller ile yazdıralım. Bunun için projemize yeni bir item olarak Resource file ekliyoruz. Eklediğimiz dosy bizim default culture bilgisine ait olmaktadır. Diğer dillere ait bilgileri tutmak için ise tek tek resource dosyası ekleriz ve bunların isimlerinin sonuna “.” ile o dilin culture bilgisini yazarız. Bizim örneğimizde üç adet dile ait bilgileri kullanacağız. Türkçe, İngilizce ve Fransızca. Siz bunları istediğiniz gibi değiştirip çoğaltabilirsiniz. İlk eklediğimiz Resource file ismini Türkçe dili için kullanacağımızdan adını “Resource.resx” olarak belirtiyoruz, daha sonra ise İngilizce için “Resource.en-US.resx” ve Fransızca içinse “Resource.fr-FR.resx” dosyalarını oluşturuyoruz. Dosyalarımızu oluşturduğumuzda içindeki veriler aşağıdaki gibi olacaktır.

[Resource.resx]

  <data name="HelloWorld" xml:space="preserve">
    <value>Merhaba Dünya</value>
  </data>

[Resource.en-US.resx]

  <data name="HelloWorld" xml:space="preserve">
    <value>Hello World</value>
  </data>

[Resource.fr-FR.resx]

  <data name="HelloWorld" xml:space="preserve">
    <value>Bonjour le monde</value>
  </data>

Şimdi bu resource dosyalarındaki bilgileri okumak için bir class hazırlayalım. Alttaki kod içindeki “ResourceManager” ilk parametresindeki değer Resource dosyasının yerini gösterir. Bizim projemizde Resource dosyası proje içindeki Resources klasörü altında olduğu için ilk parametre değeri namespace.klasöradi.resource adi şeklindedir.

[Read.vb]

Imports System.Globalization
Imports System.Reflection
Imports System.Resources

Public NotInheritable Class Read

    Public Shared Function FromResource(key As String, culture As CultureInfo)
        Dim rm As ResourceManager = New ResourceManager("ResourcesVb.Resource", Assembly.GetExecutingAssembly())
        Return rm.GetString(key, culture)
    End Function

End Class

Okuma yapacağımız class hazır olduğuna göre, program içerisinde her bir dil için culture bilgisine ihtiyacımız olduğundan bu bilgileri tutabileceğimiz bir class hazırlayalım.

[Culture.vb]

Public NotInheritable Class Culture
    Public Shared Function trTR() As String
        Return "tr-TR"
    End Function

    Public Shared Function enUS() As String
        Return "en-US"
    End Function

    Public Shared Function frFR() As String
        Return "fr-FR"
    End Function
End Class

Şimdide çalışacak olan programımızı yazalım.

[Program.vb]

Imports System.Globalization

Module Program

    Sub Main()

        Dim cultureTR As CultureInfo = New CultureInfo(Culture.trTR())
        Dim cultureUS As CultureInfo = New CultureInfo(Culture.enUS())
        Dim cultureFR As CultureInfo = New CultureInfo(Culture.frFR())

        Console.WriteLine("Read resources from Resource.resx with Culture")
        Console.WriteLine("HelloWorld with " + cultureTR.Name + " : " + Read.FromResource("HelloWorld", cultureTR))
        Console.WriteLine("HelloWorld with " + cultureUS.Name + " : " + Read.FromResource("HelloWorld", cultureUS))
        Console.WriteLine("HelloWorld with " + cultureFR.Name + " : " + Read.FromResource("HelloWorld", cultureFR))

        Console.ReadKey()

    End Sub

End Module

Artık herşey hazır ve programı çalıştırdığımızda ise çıktı olarak aşağıdaki gibi bir sonuç görürüz.

Read resources from Resource.resx with Culture
HelloWorld with tr-TR : Merhaba Dünya
HelloWorld with en-US : Hello World
HelloWorld with fr-FR : Bonjour le monde

Projenin kaynak kodlarına üzerinden ulaşabilirsiniz.
Kolay gelsin.

vb ile config dosyası okuma


Merhabaconfig
Çalıştığımız projelerde veya yazdığımız kodlarda çoğu zaman bir config dosyasına ihtiyaç duyarız. Bu gibi durumlarda config içerisine yazdığımız verileri okumakda önemli oluyor. Bunun için çok basit olarak config doyasından veri okumayı hazırlayalım. İlk olarak projemizi oluşturalım ve projemizse referans olarak System.Configuration dll ini ekleyelim. Daha sonra okuma işlemini yaptıracağımız bir class ekleyelim ve bu örnek için class adı Read olsun. Class içinde de okumayı yapacak olan metodu da hazırlayım ve adına FromConfig diyelim. Bu işlemlerden sonra projemizde var olan App.config dosyasının içerisine de okumaya yapacağımız alanları appSettings tagı arasına ekleyelim. Burada önemli olan ise appSettings içerisine yazılacak verinin key ve value değlerinin olması. key bilgisini program içerisinden ulaşmak için kullanacağız ve value bilgisnde ise istediğimiz değeri tutacağız. Şimdi sırası ile program içeriğimize bakalım.

aşağıdaki sistemde kullandığımız App.config içerisi mevcut.
[App.config]

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>

  <appSettings>
    <add key="HelloWorld" value="'Hello World' This message from App.config"/>
    <add key="KeyOne" value="Value One"/>
    <add key="KeyTwo" value="Value Two"/>
  </appSettings>

</configuration>

App.config içerisinden veriyi okumak için hazırladığımız Read class ı ve onun içinde bulunan FromConfig metodu
[Read.vb]

Imports System.Configuration

Public NotInheritable Class Read

    Public Shared Function FromConfig(ByVal key As String) As String
        Return ConfigurationManager.AppSettings.Get(key)
    End Function

End Class

Son olarak ise çalışan program kodumuz, Read class ı içindeki FromConfig metodu ile App.config içinden belirtiğimiz key e ait değeri bize getiriyor.
[Program.vb]

Module Program

    Sub Main()
        Console.WriteLine(Read.FromConfig("HelloWorld"))
        Console.WriteLine(Read.FromConfig("KeyOne"))
        Console.WriteLine(Read.FromConfig("KeyTwo"))
        Console.ReadKey()
    End Sub

End Module

Projenin kaynak kodlarına üzerinden ulaşabilirsiniz.
Kolay gelsin.

vb dosya veri yazma işlemi


Merhaba
Daha önce yazdığım c# dosya veri yazma işlemi yazımda olduğu gibi aynı işlemleri vb.net ile de yapabiliriz. Bir önceki yazımda olan kodların bire bir vb.net için yazılmış hali aşağıdaki gibidir.
Öncelikle veri yazma işlemini yapacak olan sınıfımızı oluşturalım.

Imports System.IO


Public Class File

    Public Sub Write(ByVal filePath As String, ByVal fileName As String, ByVal strLog As String, Optional isAppend As Boolean = True)

        Try

            Dim logWriter As StreamWriter = New StreamWriter(filePath + fileName, isAppend)
            logWriter.WriteLine(strLog)
            logWriter.Close()
            logWriter.Dispose()

        Catch ex As Exception
            Throw ex
        End Try

    End Sub

End Class

Artık elimizde yazma işlemini yapacağımız sınıfımız olduğuna göre şimdi bu sınıfı kullanıp basitce bir veri yazma işlemi yapalım.

Imports System
Imports System.Text
Module Program

    Sub Main()

        Dim file As File = New File()
        Dim i(0) As Byte
        Dim sbLog As StringBuilder = New StringBuilder()
        Dim sbExLog As StringBuilder = New StringBuilder()

        Try
            sbLog.AppendLine(DateTime.Now.ToString())
            sbLog.AppendLine("First line")
            sbLog.AppendLine("Second line")
            sbLog.AppendLine("Message")

            file.Write("C:\\LogVb\\", "Log.txt", sbLog.ToString())

            'programın hata alması ve bu hata mesajını yazmak için eklendi.
            i(999999) = 1
        Catch ex As Exception
            sbExLog.AppendLine(DateTime.Now.ToString())
            sbExLog.AppendLine(ex.Message)
            sbExLog.AppendLine(ex.StackTrace)
            file.Write("C:\\LogVb\\", "ExLog.txt", sbExLog.ToString())
        End Try

    End Sub

End Module

Yukarıdaki kodlarda görüldüğü gibi file.Write(“C:\\LogVb\\”, “Log.txt”, sbLog.ToString()) satırında istediğimiz mesajı belirtiğimiz dosya yolu ve ismi ile kayıt edebiliriz. Buna ilave olarak file.Write(“C:\\LogVb\\”, “ExLog.txt”, sbExLog.ToString()) satırında ise bir hata durmunda yine aynı yöntem ise bir başka dosyaya ya da istenirse aynı dosya içine hata bilgileri de yazdırılabilinir. Basitçe yaptığmız bu işlem ihtiyaçlara göre değiştirilip daha da kapsamlı olarak kullanılabilinir.

Kodlar çalıştırıldığında oluşan örnek dosyaların içeriği aşağıdaki gibidir.

[Log.txt]

26.03.2016 14:05:37
First line
Second line
Message

[ExLog.txt]

26.03.2016 14:05:37
Dizin, dizi sınırlarının dışındaydı.
   konum: ConsoleLogVb.Program.Main() D:\TfsDevelop\Main\ConsoleLogVb\ConsoleLogVb\Program.vb içinde: satır 21

Kolay gelsin.

Kategoriler:Vb Etiketler:, , , , , ,