<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0">
  <channel xmlns:media="http://search.yahoo.com/mrss/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <title>ABP.IO Stories</title>
    <link>https://abp.io/community/articles</link>
    <description>A hub for ABP Framework, .NET, and software development. Access articles, tutorials, news, and contribute to the ABP community.</description>
    <lastBuildDate>Fri, 02 Oct 2026 18:18:23 Z</lastBuildDate>
    <generator>Community - ABP.IO</generator>
    <image>
      <url>https://abp.io/assets/favicon.ico/favicon-32x32.png</url>
      <title>ABP.IO Stories</title>
      <link>https://abp.io/community/articles</link>
    </image>
    <a10:link rel="self" type="application/rss+xml" title="self" href="https://abp.io/community/rss?member=ahmetfarukulu" />
    <item>
      <guid isPermaLink="true">https://abp.io/community/posts/.net-9.0-signalr-supports-trimming-and-native-aot-4oxx0qbs</guid>
      <link>https://abp.io/community/posts/.net-9.0-signalr-supports-trimming-and-native-aot-4oxx0qbs</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>dotnet-9.0</category>
      <title>.NET 9.0 SignalR supports trimming and Native AOT</title>
      <description>SignalR in .NET 8.0 and 9.0 now supports trimming and Native AOT, improving performance and reducing app size. You can create a SignalR chat app with minimal setup, but Native AOT has limitations like only supporting the JSON protocol and no reflection.</description>
      <pubDate>Wed, 13 Nov 2024 08:44:01 Z</pubDate>
      <a10:updated>2026-10-02T17:40:46Z</a10:updated>
      <content:encoded><![CDATA[<h1>SignalR supports trimming and Native AOT</h1>
<h2>What is SignalR?</h2>
<p>SignalR is a library that allows you to add real-time web functionality to your applications. It provides a simple API for creating server-to-client remote procedure calls (RPC) that can be called from the server and client. Now SignalR supports trimming and Native AOT in .NET 8.0 and .NET 9.0. You can learn more about <a href="https://abp.io/community/articles/asp.net-core-signalr-new-features-summary-kcydtdgq">SignalR new features</a> in this article.</p>
<h2>What is trimming and Native AOT?</h2>
<p>AOT (Ahead-of-Time) compilation is a feature that allows you to compile your application into native code before running it. This can help improve performance and reduce startup times. Trimming is a feature that allows you to remove unused code from your application, reducing its size and improving performance. You can learn more about <a href="https://abp.io/community/articles/native-aot-compilation-in-.net-8-oq7qtwov">Native AOT Compilation</a> in this article.</p>
<h2>How to use SignalR with trimming and Native AOT?</h2>
<p>You can create ASP.NET Core AOT application with using the following command:</p>
<pre><code class="language-bash">dotnet new webapiaot -n Acme.Sample
</code></pre>
<p>The created application uses <code>CreateSlimBuilder</code> method to create minimal builder for the application. You can use <code>CreateBuilder</code> method to create a builder with all the services registered. However, deploying an application with <code>CreateSlimBuilder</code> method is more convenient because it reduces the size of the application. You can learn more about <a href="https://learn.microsoft.com/en-us/aspnet/core/fundamentals/native-aot#createslimbuilder-vs-createbuilder">CreateSlimBuilder vs CreateBuilder</a>.</p>
<p>Replace the <code>Program.cs</code> file with the following code:</p>
<pre><code class="language-csharp">using Microsoft.AspNetCore.SignalR;
using System.Text.Json.Serialization;

var builder = WebApplication.CreateSlimBuilder(args);

builder.Services.AddSignalR();
builder.Services.Configure&lt;JsonHubProtocolOptions&gt;(o =&gt;
{
    o.PayloadSerializerOptions.TypeInfoResolverChain.Insert(0, AppJsonSerializerContext.Default);
});

var app = builder.Build();

app.MapHub&lt;ChatHub&gt;(&quot;/chatHub&quot;);
app.MapGet(&quot;/&quot;, () =&gt; Results.Content(&quot;&quot;&quot;
&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
    &lt;title&gt;SignalR Chat&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
    &lt;input id=&quot;userInput&quot; placeholder=&quot;Enter your name&quot; /&gt;
    &lt;input id=&quot;messageInput&quot; placeholder=&quot;Type a message&quot; /&gt;
    &lt;button onclick=&quot;sendMessage()&quot;&gt;Send&lt;/button&gt;
    &lt;ul id=&quot;messages&quot;&gt;&lt;/ul&gt;

    &lt;script src=&quot;https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/8.0.7/signalr.min.js&quot;&gt;&lt;/script&gt;
    &lt;script&gt;
        const connection = new signalR.HubConnectionBuilder()
            .withUrl(&quot;/chatHub&quot;)
            .build();

        connection.on(&quot;ReceiveMessage&quot;, (user, message) =&gt; {
            const li = document.createElement(&quot;li&quot;);
            li.textContent = `${user}: ${message}`;
            document.getElementById(&quot;messages&quot;).appendChild(li);
        });

        async function sendMessage() {
            const user = document.getElementById(&quot;userInput&quot;).value;
            const message = document.getElementById(&quot;messageInput&quot;).value;
            await connection.invoke(&quot;SendMessage&quot;, user, message);
        }

        connection.start().catch(err =&gt; console.error(err));
    &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;
&quot;&quot;&quot;, &quot;text/html&quot;));

app.Run();

[JsonSerializable(typeof(string))]
internal partial class AppJsonSerializerContext : JsonSerializerContext { }

public class ChatHub : Hub
{
    public async Task SendMessage(string user, string message)
    {
        await Clients.All.SendAsync(&quot;ReceiveMessage&quot;, user, message);
    }
}
</code></pre>
<p>It is a simple chat application that uses SignalR to send and receive messages.</p>
<p><img src="https://raw.githubusercontent.com/abpframework/abp/dev/docs/en/Community-Articles/2024-11-05-SignalR-supports-trimming-and-Native-AOT/chat.png" alt="chat" /></p>
<p>Before deploying the application, ensure that <strong>Desktop development with C++</strong> is installed on your machine if you're using Windows OS. For more details, you can check the <a href="https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot#prerequisites">pre-requisites</a>.</p>
<p>You can deploy the application with the following command:</p>
<pre><code class="language-bash">dotnet publish -c Release
</code></pre>
<h3>Limitations</h3>
<p>Since we are using Native AOT, there are some limitations that you should be aware of:</p>
<ul>
<li><strong>Only the JSON protocol is supported</strong>: For the payload serialization in SignalR, only the JSON protocol is supported. You need to configure the <code>JsonHubProtocolOptions</code> to use the <code>AppJsonSerializerContext</code> for serialization/deserialization.</li>
<li><strong>Reflection</strong>: Native AOT does not support reflection. You need to use the <code>JsonSerializable</code> attribute to specify the types that should be serialized/deserialized. In this example, we have used the <code>JsonSerializable</code> attribute for the <code>string</code> type in the <code>AppJsonSerializerContext</code> class.</li>
</ul>
<p>For more details, you can check the <a href="https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot#limitations-of-native-aot-deployment">limitations</a> of Native AOT.</p>
<h2>Conclusion</h2>
<p>In this article, we learned how to use SignalR with trimming and Native AOT in .NET 8.0 and .NET 9.0. We created a simple chat application that uses SignalR to send and receive messages. We also discussed the limitations of using Native AOT and how to overcome them.</p>
<p>For more information, you can refer to the <a href="https://learn.microsoft.com/en-us/aspnet/core/release-notes/aspnetcore-9.0?view=aspnetcore-9.0#signalr-supports-trimming-and-native-aot">Microsoft's official document</a>.</p>
]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/3a1636de-7a50-ca44-24e6-025707b538c1" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/3a1636de-7a50-ca44-24e6-025707b538c1" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/posts/ef-core-8-primitive-collections-ttn5b6xp</guid>
      <link>https://abp.io/community/posts/ef-core-8-primitive-collections-ttn5b6xp</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>entity-framework-core</category>
      <category>net8</category>
      <category>efcore8</category>
      <title>EF Core 8 Primitive collections</title>
      <description>Discover the new features in EF Core 8 for working with primitive collections. Before EF Core 8, you had to use workarounds to store lists of primitive types. Now, EF Core 8 supports mapping public properties of `IEnumerable&lt;T&gt;` with getter and setter.</description>
      <pubDate>Tue, 07 Nov 2023 06:42:33 Z</pubDate>
      <a10:updated>2026-10-02T09:06:27Z</a10:updated>
      <content:encoded><![CDATA[<h1>EF Core 8 Primitive collections</h1>
<p>What can we do when we want to store a list of primitive types? Before EF Core 8, there were two options:</p>
<ul>
<li>Create a wrapper class and a related table, then add a foreign key linking each value to its owner of the collection.</li>
<li>Use <a href="https://learn.microsoft.com/en-us/ef/core/modeling/value-conversions">value converter</a> to serialize-deserialize as JSON.</li>
</ul>
<p>The first option covers most scenarios if we need to add some additional properties to this type but let's say we're never gonna need this type additionality.</p>
<h2>Which collection types are supported ?</h2>
<p>EF Core has the capability to map the <code>IEnumerable&lt;T&gt;</code> public properties that have both a getter and a setter, with the <code>T</code> representing a primitive type</p>
<pre><code class="language-csharp">public class PrimitiveCollections
{
    public IEnumerable&lt;int&gt; Ints { get; set; }
    public ICollection&lt;string&gt; Strings { get; set; }
    public ISet&lt;DateTime&gt; DateTimes { get; set; }
    public IList&lt;DateOnly&gt; Dates { get; set; }
    public uint[] UnsignedInts { get; set; }
    public List&lt;bool&gt; Booleans { get; set; }
    public List&lt;Uri&gt; Urls { get; set; }
}
</code></pre>
<blockquote>
<p>Some generic arguments are not considered primitive on the database side, such as <code>uint</code> and <code>Uri</code>. However, these types are also considered as primitive because there are <a href="https://learn.microsoft.com/en-us/ef/core/modeling/value-conversions?tabs=data-annotations#built-in-converters">built-in value converters</a>.</p>
</blockquote>
<h2>Demo</h2>
<p>In this sample, we have a <code>Car</code> class with a <code>Color</code> enum, and the <code>Car</code> class has a <code>Colors</code> property.</p>
<pre><code class="language-csharp">public enum Color
{
    Black,
    White,
    Red,
    Blue
}

public class Car
{
    public int Id { get; set; }
    public string Brand { get; set; }
    public string Model { get; set; }
    public ISet&lt;Color&gt; Colors { get; set; } = new HashSet&lt;Color&gt;();

    public Car(string brand, string model)
    {
        Brand = brand;
        Model = model;
    }
}
</code></pre>
<p>When we want to list the cars if they have any of the specific colors.</p>
<pre><code class="language-csharp">var colors = new HashSet&lt;Color&gt; { Color.Blue, Color.White };
var cars = await context
    .Cars
    .Where(x=&gt; x.Colors.Intersect(colors).Any())
    .ToListAsync();
</code></pre>
<p>The SQL result looks like this; as you can see, it sends colors as parameters instead of adding them inline. It also uses the <code>json_each</code> function to deserialize on the database side.</p>
<pre><code class="language-sql">SELECT &quot;c&quot;.&quot;Id&quot;, &quot;c&quot;.&quot;Brand&quot;, &quot;c&quot;.&quot;Colors&quot;, &quot;c&quot;.&quot;Model&quot;
      FROM &quot;Cars&quot; AS &quot;c&quot;
      WHERE EXISTS (
          SELECT 1
          FROM (
              SELECT &quot;c0&quot;.&quot;value&quot;
              FROM json_each(&quot;c&quot;.&quot;Colors&quot;) AS &quot;c0&quot;
              INTERSECT
              SELECT &quot;c1&quot;.&quot;value&quot;
              FROM json_each(@__colors_0) AS &quot;c1&quot;
          ) AS &quot;t&quot;)

</code></pre>
<p>When we insert to the car table.</p>
<pre><code class="language-csharp">var car = new Car(&quot;Maserati&quot;, &quot;GranTurismo&quot;)
{
    Colors = new HashSet&lt;Color&gt;()
    {
        Color.Black,
        Color.Blue
    }
};
context.Cars.Add(car);
await context.SaveChangesAsync();
</code></pre>
<p>The SQL statement looks like this, and as you can see, it automatically serializes into the Colors parameter as JSON.</p>
<pre><code class="language-sql"> Executed DbCommand (0ms) [Parameters=
 [@p0='Maserati' (Nullable = false) (Size = 8),
  @p1='[0,3]' (Nullable = false) (Size = 5),
  @p2='GranTurismo' (Nullable = false) (Size = 4)
 ], CommandType='Text', CommandTimeout='30']
      INSERT INTO &quot;Cars&quot; (&quot;Brand&quot;, &quot;Colors&quot;, &quot;Model&quot;)
      VALUES (@p0, @p1, @p2)
      RETURNING &quot;Id&quot;;
</code></pre>
<h2>Conclusion</h2>
<p>We don't need to do anything if we just use a collection of primitive types. It serializes and deserializes them as JSON automatically. Additionally, it sends the primitive collection as a parameter to cache the query.</p>
<h2>References</h2>
<ul>
<li><a href="https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/whatsnew#primitive-collection-properties">EF Core 8 Primitive collections</a></li>
<li><a href="https://www.youtube.com/watch?v=AUS2OZjsA2I">.NET Data Community Standup - Collections of primitive values in EF Core</a></li>
</ul>
]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/3a0ebab1-93e9-d715-f87a-8ee70cfab69a" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/3a0ebab1-93e9-d715-f87a-8ee70cfab69a" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-options-p9unclf4</guid>
      <link>https://abp.io/community/videos/abp-options-p9unclf4</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <title>ABP Options</title>
      <description>Bu eğitimde ABP Options sistemini inceledik.</description>
      <pubDate>Tue, 14 Feb 2023 12:57:53 Z</pubDate>
      <a10:updated>2026-04-27T11:13:10Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP Options sistemini inceledik. <br \> <a href="https://www.youtube.com/watch?v=EK9z4tI49ZE" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/3a09622d-9e91-1ac0-cc3e-c5e33b1069f2" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/3a09622d-9e91-1ac0-cc3e-c5e33b1069f2" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-interception-aspect-oriented-programming-rr4bwjkv</guid>
      <link>https://abp.io/community/videos/abp-interception-aspect-oriented-programming-rr4bwjkv</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <title>ABP Interception (Aspect Oriented Programming)</title>
      <description>Bu eğitimde ABP Interception ile kendi Aspectlerimizi yazmayı inceledik.</description>
      <pubDate>Wed, 01 Feb 2023 18:24:04 Z</pubDate>
      <a10:updated>2026-04-26T05:28:34Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP Interception ile kendi Aspectlerimizi yazmayı inceledik. <br \> <a href="https://www.youtube.com/watch?v=9p1o61ANneA" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/ee5d3ab6-0bb5-7309-6e36-3a09206593c5" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/ee5d3ab6-0bb5-7309-6e36-3a09206593c5" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-kisisel-proje-sablonu-olusturma-3rw0por3</guid>
      <link>https://abp.io/community/videos/abp-kisisel-proje-sablonu-olusturma-3rw0por3</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <title>ABP Kisisel Proje Sablonu Olusturma</title>
      <description>Bu eğitimde ABP kişisel proje şablonu oluşturmayı inceledik.</description>
      <pubDate>Thu, 24 Nov 2022 19:52:25 Z</pubDate>
      <a10:updated>2026-03-14T10:39:35Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP kişisel proje şablonu oluşturmayı inceledik. <br \> <a href="https://www.youtube.com/watch?v=996m7MKjnj8" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/afe1ae94-142e-8efb-5c0b-3a07bd5fa8b8" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/afe1ae94-142e-8efb-5c0b-3a07bd5fa8b8" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-dapper-867rfcx5</guid>
      <link>https://abp.io/community/videos/abp-dapper-867rfcx5</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <title>ABP Dapper</title>
      <description>Bu eğitimde ABP Dapper sistemini inceledik.</description>
      <pubDate>Tue, 01 Nov 2022 13:26:25 Z</pubDate>
      <a10:updated>2026-04-17T07:32:29Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP Dapper sistemini inceledik. <br \> <a href="https://www.youtube.com/watch?v=YFJ5qZzsMsI" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/6315de62-1cd2-9bd0-cc5e-3a07458c03ce" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/6315de62-1cd2-9bd0-cc5e-3a07458c03ce" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-unit-of-work-bfjbont0</guid>
      <link>https://abp.io/community/videos/abp-unit-of-work-bfjbont0</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <title>ABP Unit of Work</title>
      <description>Bu eğitimde ABP Unit of Work sistemini inceledik.</description>
      <pubDate>Mon, 03 Oct 2022 16:23:48 Z</pubDate>
      <a10:updated>2026-03-18T04:21:00Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP Unit of Work sistemini inceledik. <br \> <a href="https://www.youtube.com/watch?v=MHNemWchSrA" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/a8314699-7821-3360-9b57-3a06b0d5fa9a" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/a8314699-7821-3360-9b57-3a06b0d5fa9a" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-exception-handling-6f3yaecd</guid>
      <link>https://abp.io/community/videos/abp-exception-handling-6f3yaecd</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <title>ABP Exception Handling</title>
      <description>Bu eğitimde ABP Exception Handling sistemini inceledik.</description>
      <pubDate>Fri, 16 Sep 2022 09:30:48 Z</pubDate>
      <a10:updated>2026-03-14T09:40:47Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP Exception Handling sistemini inceledik. <br \> <a href="https://www.youtube.com/watch?v=Zf8v1hlMk5o" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/d27a73b5-9ed1-8283-da14-3a0657cfc491" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/d27a73b5-9ed1-8283-da14-3a0657cfc491" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-localization-13jeds6x</guid>
      <link>https://abp.io/community/videos/abp-localization-13jeds6x</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>localization</category>
      <title>ABP Localization</title>
      <description>Bu eğitimde ABP Localization sistemini inceledik.</description>
      <pubDate>Tue, 30 Aug 2022 16:16:12 Z</pubDate>
      <a10:updated>2026-04-16T02:54:10Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP Localization sistemini inceledik. <br \> <a href="https://www.youtube.com/watch?v=NLF6uqyju9Q" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/f2551f8d-11e2-eba9-2cab-3a0601b6ce41" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/f2551f8d-11e2-eba9-2cab-3a0601b6ce41" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-virtual-file-system-utsrfpuj</guid>
      <link>https://abp.io/community/videos/abp-virtual-file-system-utsrfpuj</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>virtual-file-system</category>
      <title>ABP Virtual File System</title>
      <description>Bu eğitimde ABP Virtual File System inceledik.</description>
      <pubDate>Wed, 24 Aug 2022 20:24:26 Z</pubDate>
      <a10:updated>2026-03-14T09:23:13Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP Virtual File System inceledik. <br \> <a href="https://www.youtube.com/watch?v=xFg6BaMTh7Y" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/7d295e23-105e-8e54-699d-3a05e3b3ea96" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/7d295e23-105e-8e54-699d-3a05e3b3ea96" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-authorization-02x8dtki</guid>
      <link>https://abp.io/community/videos/abp-authorization-02x8dtki</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>authorization</category>
      <title>ABP Authorization</title>
      <description>Bu eğitimde ABP Authorization sistemini inceledik.</description>
      <pubDate>Wed, 17 Aug 2022 16:32:51 Z</pubDate>
      <a10:updated>2026-04-16T11:35:43Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP Authorization sistemini inceledik. <br \> <a href="https://www.youtube.com/watch?v=9tns9UNHXx0" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/49a9f16a-a85e-3a7c-620f-3a05bed35f55" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/49a9f16a-a85e-3a7c-620f-3a05bed35f55" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-dependency-injection-oj7uel7g</guid>
      <link>https://abp.io/community/videos/abp-dependency-injection-oj7uel7g</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>dependency-injection</category>
      <title>ABP Dependency Injection</title>
      <description>Bu eğitimde ABP Dependency Injection sistemini inceledik.</description>
      <pubDate>Tue, 09 Aug 2022 11:57:40 Z</pubDate>
      <a10:updated>2026-04-23T12:28:42Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP Dependency Injection sistemini inceledik. <br \> <a href="https://www.youtube.com/watch?v=y0CmJw3Dzq8" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/e1b09f18-802f-3190-e3fd-3a0594a49247" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/e1b09f18-802f-3190-e3fd-3a0594a49247" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-api-controllers-kj8o8dgp</guid>
      <link>https://abp.io/community/videos/abp-api-controllers-kj8o8dgp</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <title>ABP API Controllers</title>
      <description>Bu eğitimde ABP Endpoints, Auto API Controllers, AbpControllerBase ve Service Proxies konularını inceledik.</description>
      <pubDate>Mon, 01 Aug 2022 15:17:58 Z</pubDate>
      <a10:updated>2026-03-24T17:35:21Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP Endpoints, Auto API Controllers, AbpControllerBase ve Service Proxies konularını inceledik. <br \> <a href="https://www.youtube.com/watch?v=zahAG0NRlC8" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/cab27753-e6ee-4733-d94b-3a056c29139a" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/cab27753-e6ee-4733-d94b-3a056c29139a" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-application-services-eg93w4qm</guid>
      <link>https://abp.io/community/videos/abp-application-services-eg93w4qm</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <title>ABP Application Services</title>
      <description>Bu eğitimde ABP Application Services inceledik.</description>
      <pubDate>Mon, 25 Jul 2022 17:58:23 Z</pubDate>
      <a10:updated>2026-03-14T10:45:40Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP Application Services inceledik. <br \> <a href="https://www.youtube.com/watch?v=hbwyyiMDv-I" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/48b92a55-7162-96a0-83d1-3a0548af6cef" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/48b92a55-7162-96a0-83d1-3a0548af6cef" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-data-transfer-objects-lxyw9t90</guid>
      <link>https://abp.io/community/videos/abp-data-transfer-objects-lxyw9t90</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <title>ABP Data Transfer Objects</title>
      <description>Sunum: https://bit.ly/abp-dto ABP DTO Best Practice Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/Data-Transfer-Objects ABP DTO Dokümanı: https://docs.abp.io/en/abp/latest/Data-Transfer-Objects</description>
      <pubDate>Thu, 21 Jul 2022 09:53:45 Z</pubDate>
      <a10:updated>2026-03-14T20:50:46Z</a10:updated>
      <content:encoded><![CDATA[Sunum: https://bit.ly/abp-dto ABP DTO Best Practice Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/Data-Transfer-Objects ABP DTO Dokümanı: https://docs.abp.io/en/abp/latest/Data-Transfer-Objects <br \> <a href="https://www.youtube.com/watch?v=rRW76OmgLlM" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/a64de47b-f381-6210-cacc-3a05325a4991" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/a64de47b-f381-6210-cacc-3a05325a4991" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-mongodb-iqq1py5h</guid>
      <link>https://abp.io/community/videos/abp-mongodb-iqq1py5h</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <title>ABP MongoDB</title>
      <description>Bu eğitimde ABP MongoDB yapısını inceledik. Sunum: https://bit.ly/abp-mongodb ABP MongoDB Best Practice Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/MongoDB-Integration ABP MongoDB Dokümanı: https://docs.abp.io/en/abp/latest/MongoDB
</description>
      <pubDate>Sun, 17 Jul 2022 14:12:43 Z</pubDate>
      <a10:updated>2026-03-29T12:17:17Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP MongoDB yapısını inceledik. Sunum: https://bit.ly/abp-mongodb ABP MongoDB Best Practice Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/MongoDB-Integration ABP MongoDB Dokümanı: https://docs.abp.io/en/abp/latest/MongoDB
 <br \> <a href="https://www.youtube.com/watch?v=Z0-35XWatgs" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/dc20131c-6ba1-69c4-dd0a-3a051eadf0a5" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/dc20131c-6ba1-69c4-dd0a-3a051eadf0a5" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-entityframeworkcore-66zz2mj6</guid>
      <link>https://abp.io/community/videos/abp-entityframeworkcore-66zz2mj6</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>entity-framework-core</category>
      <title>ABP EntityFrameworkCore</title>
      <description>Bu eğitimde ABP EntityFrameworkCore yapısını inceledik. Sunum: https://bit.ly/abp-efcore ABP EfCore Best Practice Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/Entity-Framework-Core-Integration ABP EfCore Dokümanı: https://docs.abp.io/en/abp/latest/Entity-Framework-Core ABP EfCore Migration Dokümanı: https://docs.abp.io/en/abp/latest/Entity-Framework-Core-Migrations</description>
      <pubDate>Fri, 24 Jun 2022 23:59:08 Z</pubDate>
      <a10:updated>2026-04-15T02:59:17Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP EntityFrameworkCore yapısını inceledik. Sunum: https://bit.ly/abp-efcore ABP EfCore Best Practice Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/Entity-Framework-Core-Integration ABP EfCore Dokümanı: https://docs.abp.io/en/abp/latest/Entity-Framework-Core ABP EfCore Migration Dokümanı: https://docs.abp.io/en/abp/latest/Entity-Framework-Core-Migrations <br \> <a href="https://youtu.be/2GM1-pOGqMw" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/05841960-653a-d888-ba85-3a04aa548ec3" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/05841960-653a-d888-ba85-3a04aa548ec3" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-domain-service-970uu60n</guid>
      <link>https://abp.io/community/videos/abp-domain-service-970uu60n</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>domain-service</category>
      <title>ABP Domain Service</title>
      <description>Bu eğitimde ABP domain service'leri inceledik. Sunum: https://bit.ly/abp-domain-service ABP Domain Service Dokümanı: https://docs.abp.io/en/abp/latest/Domain-Services</description>
      <pubDate>Wed, 22 Jun 2022 16:28:56 Z</pubDate>
      <a10:updated>2026-04-23T08:20:41Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP domain service'leri inceledik. Sunum: https://bit.ly/abp-domain-service ABP Domain Service Dokümanı: https://docs.abp.io/en/abp/latest/Domain-Services <br \> <a href="https://www.youtube.com/watch?v=0U0jXpP_ass" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/2890e124-5dbd-e00b-749d-3a049e6babfb" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/2890e124-5dbd-e00b-749d-3a049e6babfb" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-generic-repository-gbretwju</guid>
      <link>https://abp.io/community/videos/abp-generic-repository-gbretwju</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>repository</category>
      <title>ABP Generic Repository</title>
      <description>Bu eğitimde ABP repository'leri inceledik. Sunum: https://bit.ly/abp-generic-repository ABP Repository Best Practice Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/Repositories ABP Repository Dokümanı: https://docs.abp.io/en/abp/latest/Repositories</description>
      <pubDate>Tue, 21 Jun 2022 15:45:38 Z</pubDate>
      <a10:updated>2026-03-14T09:11:02Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP repository'leri inceledik. Sunum: https://bit.ly/abp-generic-repository ABP Repository Best Practice Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/Repositories ABP Repository Dokümanı: https://docs.abp.io/en/abp/latest/Repositories <br \> <a href="https://www.youtube.com/watch?v=pqW0DXR2I_c" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/54033820-0d8e-bda1-66d4-3a04991daa3b" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/54033820-0d8e-bda1-66d4-3a04991daa3b" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/ddd-entities-61egz4nv</guid>
      <link>https://abp.io/community/videos/ddd-entities-61egz4nv</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>ddd</category>
      <category>entities</category>
      <title>DDD Entities</title>
      <description>Bu eğitimde veri modellerimizi oluşturan entity yapısını inceledik. Sunum: https://bit.ly/ddd-entities ABP Entities Best Practice Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/Entities ABP Entities &amp; AggregateRoot Dokümanı: https://docs.abp.io/en/abp/latest/Entities ABP Value Object Dokümanı: https://docs.abp.io/en/abp/latest/Value-Objects</description>
      <pubDate>Sat, 18 Jun 2022 20:23:36 Z</pubDate>
      <a10:updated>2026-04-20T09:07:57Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde veri modellerimizi oluşturan entity yapısını inceledik. Sunum: https://bit.ly/ddd-entities ABP Entities Best Practice Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/Entities ABP Entities & AggregateRoot Dokümanı: https://docs.abp.io/en/abp/latest/Entities ABP Value Object Dokümanı: https://docs.abp.io/en/abp/latest/Value-Objects <br \> <a href="https://www.youtube.com/watch?v=x6F8qKTt89c" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/b2b010be-fec1-9852-14ae-3a048aa913ba" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/b2b010be-fec1-9852-14ae-3a048aa913ba" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-ile-modularite-k0xjazt5</guid>
      <link>https://abp.io/community/videos/abp-ile-modularite-k0xjazt5</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>modular</category>
      <title>ABP ile Modularite</title>
      <description>Bu eğitimde ABP'nin modül yapısını inceledik. Sunum: https://bit.ly/abp-ile-modularite ABP Modül Dokümanı: https://docs.abp.io/en/abp/latest/Module-Development-Basics ABP Plug-In Dokümanı: https://docs.abp.io/en/abp/latest/PlugIn-Modules ABP Modülarite Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/Module-Architecture</description>
      <pubDate>Wed, 15 Jun 2022 20:06:31 Z</pubDate>
      <a10:updated>2026-04-08T19:19:52Z</a10:updated>
      <content:encoded><![CDATA[Bu eğitimde ABP'nin modül yapısını inceledik. Sunum: https://bit.ly/abp-ile-modularite ABP Modül Dokümanı: https://docs.abp.io/en/abp/latest/Module-Development-Basics ABP Plug-In Dokümanı: https://docs.abp.io/en/abp/latest/PlugIn-Modules ABP Modülarite Dokümanı: https://docs.abp.io/en/abp/latest/Best-Practices/Module-Architecture <br \> <a href="https://www.youtube.com/watch?v=35a6xxiZGyw" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/dcae2c3b-7a4e-7ea7-86dc-3a047b265b1d" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/dcae2c3b-7a4e-7ea7-86dc-3a047b265b1d" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-proje-sablonlari-1b82bket</guid>
      <link>https://abp.io/community/videos/abp-proje-sablonlari-1b82bket</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>startup-templates</category>
      <title>ABP Proje Sablonlari</title>
      <description>Bu videoda ABP şablonlarını inceledik

Sunum: https://bit.ly/abp-proje-sablonlari
Practice Repository: https://github.com/allegorysoft/practice
ABP Proje Şablonları Dokümanı: https://docs.abp.io/en/abp/latest/Startup-Templates/Index
Windows long path hatasının çözümü: https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd
RedisInsight: https://redis.com/redis-enterprise/redis-insight</description>
      <pubDate>Sat, 11 Jun 2022 21:54:46 Z</pubDate>
      <a10:updated>2026-03-14T09:27:49Z</a10:updated>
      <content:encoded><![CDATA[Bu videoda ABP şablonlarını inceledik

Sunum: https://bit.ly/abp-proje-sablonlari
Practice Repository: https://github.com/allegorysoft/practice
ABP Proje Şablonları Dokümanı: https://docs.abp.io/en/abp/latest/Startup-Templates/Index
Windows long path hatasının çözümü: https://docs.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=cmd
RedisInsight: https://redis.com/redis-enterprise/redis-insight <br \> <a href="https://www.youtube.com/watch?v=aZoxO9Kpfks" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/65656cd3-7468-38f3-f9db-3a0466f005f3" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/65656cd3-7468-38f3-f9db-3a0466f005f3" medium="image" />
    </item>
    <item>
      <guid isPermaLink="true">https://abp.io/community/videos/abp-cli-kullanimi-h9hrqmb9</guid>
      <link>https://abp.io/community/videos/abp-cli-kullanimi-h9hrqmb9</link>
      <a10:author>
        <a10:name>ahmetfarukulu</a10:name>
        <a10:uri>https://abp.io/community/members/ahmetfarukulu</a10:uri>
      </a10:author>
      <category>cli</category>
      <title>ABP CLI Kullanimi</title>
      <description>Bu video ABP CLI ile yapabileceklerimizi uyguladık

Sunum: https://bit.ly/abp-cli-kullanimi
ABP CLI Dokümanı : https://docs.abp.io/en/abp/latest/CLI</description>
      <pubDate>Wed, 08 Jun 2022 19:26:56 Z</pubDate>
      <a10:updated>2026-04-27T10:51:15Z</a10:updated>
      <content:encoded><![CDATA[Bu video ABP CLI ile yapabileceklerimizi uyguladık

Sunum: https://bit.ly/abp-cli-kullanimi
ABP CLI Dokümanı : https://docs.abp.io/en/abp/latest/CLI <br \> <a href="https://www.youtube.com/watch?v=vgXjA-8XXjg" rel="nofollow noopener noreferrer" title="Go to the Video">Go to the Video</a>]]></content:encoded>
      <media:thumbnail url="https://abp.io/api/posts/cover-picture-source/c7c919d5-09bd-2b84-105f-3a0456f598b6" />
      <media:content url="https://abp.io/api/posts/cover-picture-source/c7c919d5-09bd-2b84-105f-3a0456f598b6" medium="image" />
    </item>
  </channel>
</rss>