<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>dot net development services &gt; Metasys Software Pvt Ltd.</title>
	<atom:link href="https://www.metasyssoftware.com/tag/dot-net-development-services/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.metasyssoftware.com</link>
	<description>Unique People, Unique Solutions</description>
	<lastBuildDate>Thu, 23 May 2024 09:11:06 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.metasyssoftware.com/wp-content/uploads/2023/10/metasys-svg-.png</url>
	<title>dot net development services &gt; Metasys Software Pvt Ltd.</title>
	<link>https://www.metasyssoftware.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Best Practices for Performance Optimization in .NET Applications</title>
		<link>https://www.metasyssoftware.com/microsoft-technologies/best-practices-for-performance-optimization-in-net-applications/</link>
		
		<dc:creator><![CDATA[meta_prasad]]></dc:creator>
		<pubDate>Mon, 30 Oct 2023 08:14:04 +0000</pubDate>
				<category><![CDATA[Microsoft Technologies]]></category>
		<category><![CDATA[Dot Net Solutions Outsourcing Company]]></category>
		<category><![CDATA[Dot Net application development company]]></category>
		<category><![CDATA[Dot Net application development]]></category>
		<category><![CDATA[dot net development services]]></category>
		<guid isPermaLink="false">https://www.metasyssoftware.com/?p=11031</guid>

					<description><![CDATA[<p>At MetaSys, we had the opportunity to transition a legacy application, initially constructed with the .NET Framework 1.0, to the [&#8230;]</p>
The post <a href="https://www.metasyssoftware.com/microsoft-technologies/best-practices-for-performance-optimization-in-net-applications/">Best Practices for Performance Optimization in .NET Applications</a> appeared first on <a href="https://www.metasyssoftware.com">Metasys Software Pvt Ltd.</a>.]]></description>
										<content:encoded><![CDATA[<div data-elementor-type="wp-post" data-elementor-id="11031" class="elementor elementor-11031">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-7a3c6dbb elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7a3c6dbb" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-76c0f2eb" data-id="76c0f2eb" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-28d7dcce elementor-widget elementor-widget-text-editor" data-id="28d7dcce" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									At MetaSys, we had the opportunity to transition a legacy application, initially constructed
with the .NET Framework 1.0, to the more modern .NET Core. We put into practice some of
the relevant strategies detailed in this blog post. In a landscape where both the application
and the business are in a state of evolution, the focus is to get the new features into
production. However, during this rewrite, we paid special attention to performance
optimization across the modules that were upgraded. Subpar performance can exasperate
users, potentially driving them away and exerting a negative impact on customer retention
and overall business success. Performance optimization will remain an ongoing effort,
however, rewriting the application in .NET Core presented a significant boost.								</div>
				</div>
				<div class="elementor-element elementor-element-a449158 elementor-widget elementor-widget-text-editor" data-id="a449158" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									In today&#39;s digital era, users have come to expect websites and online applications to load
quickly and function seamlessly. For businesses utilizing .NET Core in their web
development, emphasizing performance optimization is essential to delivering a flawless
user experience. This blog aims to be a guide to best practices, exploring critical aspects
such as start-up time, database access, query efficiency, and caching for ASP.NET web
applications.								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-31d86803 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="31d86803" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-74b6974" data-id="74b6974" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4a32c86a elementor-widget elementor-widget-heading" data-id="4a32c86a" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Improving ASP.NET Web Application Start-up Time</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-46e0a2f4 elementor-widget elementor-widget-text-editor" data-id="46e0a2f4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									The start-up time of your ASP.NET web application significantly impacts user acquisition and
engagement. You can enhance this aspect by implementing the following methods:								</div>
				</div>
				<div class="elementor-element elementor-element-25cbc08c elementor-widget elementor-widget-text-editor" data-id="25cbc08c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul>
 	<li><strong>Utilize the .NET Core Runtime:</strong> In our experience, leveraging the improved performance of the latest .NET Core runtime version significantly reduced application start-up time.</li>

 	<li><strong>Implement Dependency Injection:</strong> Incorporating dependency injection simplifies the management of object dependencies,
		offers better control over application initialization, and results in quicker start-up times. </li>
 	
</ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-2f88ef17 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="2f88ef17" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-52fa3246" data-id="52fa3246" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-73d5ea5e elementor-widget elementor-widget-heading" data-id="73d5ea5e" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Optimizing Database Access and Query Performance in ASP.NET Applications</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-4671e594 elementor-widget elementor-widget-text-editor" data-id="4671e594" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Efficient database access and query execution are crucial for enhancing the overall
application&#39;s response time. Implement the following techniques to optimize these areas:								</div>
				</div>
				<div class="elementor-element elementor-element-3b3e213 elementor-widget elementor-widget-text-editor" data-id="3b3e213" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul>
 	<li><strong>Employ Asynchronous Database Calls:</strong> Use asynchronous database calls to release the main thread, increasing program responsiveness and improving performance.</li>

 	<li><strong>Optimize Database Queries:</strong> Enhance database performance by optimizing queries, utilizing appropriate query patterns, and generating suitable indexes to lessen the burden on the database server.</li>
</ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-59be579a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="59be579a" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-55347d40" data-id="55347d40" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-72326020 elementor-widget elementor-widget-heading" data-id="72326020" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Leveraging Caching to Enhance ASP.NET Web Application Performance</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-424d828c elementor-widget elementor-widget-text-editor" data-id="424d828c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Caching is a powerful tool for boosting ASP.NET web application performance by reducing
unnecessary calculations and database requests. Employ the following caching techniques:								</div>
				</div>
				<div class="elementor-element elementor-element-5e11339c elementor-widget elementor-widget-text-editor" data-id="5e11339c" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul>
<li><strong>Output Caching:</strong> Cache the rendered output of web pages to serve subsequent requests
faster and alleviate server load, resulting in a more efficient user experience.</li>
<li><strong>Data Caching:</strong> Implement data caching to reduce database hits and enhance response
times for frequently accessed data, contributing to a more responsive application.</li>
</ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-7694f23d elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="7694f23d" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-51886580" data-id="51886580" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4fae0fda elementor-widget elementor-widget-heading" data-id="4fae0fda" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Minimize the number of HTTP requests and reduce the size of resources in ASP.NET
web applications</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-9283722 elementor-widget elementor-widget-text-editor" data-id="9283722" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									To speed up application load times, it is essential to minimize HTTP requests and optimize
resource size:								</div>
				</div>
				<div class="elementor-element elementor-element-366053a6 elementor-widget elementor-widget-text-editor" data-id="366053a6" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul>
 	<li><strong>Bundling and Minification</strong>
The number of HTTP requests and the total amount of resources can be decreased by
bundling and minifying numerous CSS and JavaScript files.</li>
<li><strong>CDN Integration</strong>
Use a CDN to offer static materials from geographically dispersed servers, lowering
latency and speeding up loading times.</li>
</ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-196c3474 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="196c3474" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3f06c7a2" data-id="3f06c7a2" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2f908497 elementor-widget elementor-widget-heading" data-id="2f908497" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Optimize the performance of data binding and data controls in ASP.NET web
applications</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-1043ece8 elementor-widget elementor-widget-text-editor" data-id="1043ece8" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									The speed and general performance can be affected by data binding and controls:								</div>
				</div>
				<div class="elementor-element elementor-element-626843f4 elementor-widget elementor-widget-text-editor" data-id="626843f4" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul>
 	<li><strong>Use Server-Side Data Binding Judiciously</strong>
Often, Server-Side Data Binding outperforms Client-Side Data Binding, particularly for large
datasets. Depending on the specific application being developed server-side data binding
can degrade performance. Hence this aspect needs to be thought through.</li>
<li><strong>Reduce the Use of Unwanted Controls</strong>
Make sure that controls are only applied when necessary and avoid the use of unrequired
controls.</li>
</ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-574fc995 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="574fc995" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3ba2839b" data-id="3ba2839b" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-35842b26 elementor-widget elementor-widget-heading" data-id="35842b26" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Recommended techniques for optimizing session state management in ASP.NET web
applications</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-3feeaaee elementor-widget elementor-widget-text-editor" data-id="3feeaaee" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									For the maintenance of user-specific data and preferences, effective session state
management is necessary:								</div>
				</div>
				<div class="elementor-element elementor-element-6dc335a2 elementor-widget elementor-widget-text-editor" data-id="6dc335a2" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul>
 	<li><strong>Consider Session State Modes</strong>
Based on the needs and scalability requirements of your application, select the appropriate
session state mode (InProc, StateServer, or SQL Server).</li>

<li><strong>Place Cookies</strong>
Don&#39;t store excessive quantities of data in cookies because doing so increases the size of
HTTP requests and responses.
Best practices for optimizing the performance of client-side scripting in ASP.NET web
applications
The user experience and application performance can be significantly impacted by client-
side scripting:</li>

<li><strong>Reduce DOM Manipulation</strong>
DOM manipulations can be resource-intensive, so try to do them less frequently. Cache
items instead, and whenever you can, update in bulk.</li>
<li><strong>Async and Defer</strong>
Use the &quot;async&quot; and &quot;defer&quot; properties to load scripts in order to prevent rendering-blocking
and speed up page loading.</li>
</ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-27b8662 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="27b8662" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-618c22ef" data-id="618c22ef" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-5c74180c elementor-widget elementor-widget-heading" data-id="5c74180c" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Optimize the performance of AJAX calls and asynchronous operations in ASP.NET</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-6e74946a elementor-widget elementor-widget-text-editor" data-id="6e74946a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									While asynchronous actions are necessary for responsiveness, they also need to be
optimized:								</div>
				</div>
				<div class="elementor-element elementor-element-53dc2ebc elementor-widget elementor-widget-text-editor" data-id="53dc2ebc" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul>
<li><strong>Batch AJAX calls</strong>
To cut down on round trips and overhead, combine several AJAX calls into a single batch
request.</li>

<li><strong>Implement Cancellation</strong>
Implementing cancellation will improve user control and the user experience by giving users
the ability to stop lengthy asynchronous activities.</li>
</ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-6d9a434e elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="6d9a434e" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-20607cb0" data-id="20607cb0" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-62c9147d elementor-widget elementor-widget-heading" data-id="62c9147d" data-element_type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Leverage browser caching and HTTP compression to improve the performance of
ASP.NET web applications</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-1f61e1f5 elementor-widget elementor-widget-text-editor" data-id="1f61e1f5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									For repeat visitors, load times can be greatly lowered by utilizing HTTP compression and
browser caching:								</div>
				</div>
				<div class="elementor-element elementor-element-17889a21 elementor-widget elementor-widget-text-editor" data-id="17889a21" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<ul>
<li><strong>Set the Right Cache Headers</strong>
Set the right cache headers to allow the user&#39;s browser to cache static resources.</li>
<li><strong>Enable HTTP Compression</strong>
Minimize the size of the data transfer between the server and the client by enabling HTTP
compression.</li>
</ul>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-687e810f elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="687e810f" data-element_type="section">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-56a71b44" data-id="56a71b44" data-element_type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-6659b75a elementor-widget elementor-widget-text-editor" data-id="6659b75a" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Delivering a superior user experience requires optimizing the speed of your ASP.NET web
application. You can speed up response times, boost user satisfaction, and enhance
business results by implementing these best practices and strategies.								</div>
				</div>
				<div class="elementor-element elementor-element-35d9eac5 elementor-widget elementor-widget-text-editor" data-id="35d9eac5" data-element_type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									Rely on <a href="https://www.metasyssoftware.com/">MetaSys Software</a>, the <a href="https://www.metasyssoftware.com/technologies/dot-net-solutions/">.NET Core outsourcing company in India</a> , for excellent
offshore .NET solutions development. Get in touch with us now to improve the speed of your
ASP.NET web applications and expand the your business.								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>The post <a href="https://www.metasyssoftware.com/microsoft-technologies/best-practices-for-performance-optimization-in-net-applications/">Best Practices for Performance Optimization in .NET Applications</a> appeared first on <a href="https://www.metasyssoftware.com">Metasys Software Pvt Ltd.</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Using MailKit to Send Email Notifications in .Net Core</title>
		<link>https://www.metasyssoftware.com/microsoft-technologies/using-mailkit-to-send-email-notifications-in-net-core/</link>
		
		<dc:creator><![CDATA[meta_prasad]]></dc:creator>
		<pubDate>Wed, 19 Apr 2023 11:34:45 +0000</pubDate>
				<category><![CDATA[Microsoft Technologies]]></category>
		<category><![CDATA[MailKit]]></category>
		<category><![CDATA[DotNet]]></category>
		<category><![CDATA[DotNet Development Company]]></category>
		<category><![CDATA[Dot Net Development]]></category>
		<category><![CDATA[.Net Application Development]]></category>
		<category><![CDATA[Dot Net Software Solutions]]></category>
		<category><![CDATA[Dot Net Core]]></category>
		<category><![CDATA[dot net]]></category>
		<category><![CDATA[dotnetcore application development services]]></category>
		<category><![CDATA[.Net Core]]></category>
		<category><![CDATA[dot net development services]]></category>
		<guid isPermaLink="false">https://www.metasyssoftware.com/?p=6066</guid>

					<description><![CDATA[<p>These days, most applications come with the ability to send email notifications. Sending an email in Dot Net is quite [&#8230;]</p>
The post <a href="https://www.metasyssoftware.com/microsoft-technologies/using-mailkit-to-send-email-notifications-in-net-core/">Using MailKit to Send Email Notifications in .Net Core</a> appeared first on <a href="https://www.metasyssoftware.com">Metasys Software Pvt Ltd.</a>.]]></description>
										<content:encoded><![CDATA[<div id="pl-6066"  class="panel-layout" >
<div id="pg-6066-0"  class="panel-grid panel-no-style" >
<div id="pgc-6066-0-0"  class="panel-grid-cell" >
<div id="panel-6066-0-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="0" >
<div
			
			class="so-widget-sow-editor so-widget-sow-editor-base"
			
		></p>
<div class="siteorigin-widget-tinymce textwidget">
<p>These days, most applications come with the ability to send email notifications. Sending an email in Dot Net is quite easy and can be accomplished using Simple Mail Transfer Protocol (SMTP). I have used SMTP in many of my<a href="https://www.metasyssoftware.com/service/web-app-development/"> web applications</a>, and it is still available in .Net Core.</p>
<p>So, why should you use MailKit? While implementing the email function in one of my .Net Core projects, I found out that Microsoft had deemed SMTP to be outdated. Instead, they recommended using the MailKit library. For more information, please check out the link below.<br />
<a href="https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?WT.mc_id=AZ-MVP-5002809&amp;view=netcore-2.2" target="_blank" rel="noopener">https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?WT.mc_id=AZ-MVP-5002809&amp;view=netcore-2.2</a></p>
<p><img decoding="async" src="https://www.metasyssoftware.com/wp-content/uploads/2023/04/email-notifications-1.jpg" alt="SMTP Client Class" /></p>
<p><img decoding="async" src="https://www.metasyssoftware.com/wp-content/uploads/2023/04/email-notifications-2.jpg" alt="SMTP Client Class 1" /></p>
<p>I have used MailKit library in my .Net Core project.</p>
<p>Here I will share how to use simple email sending function using MailKit library in .Net Core projects.</p>
<h2><strong>Implementation:</strong></h2>
<p><img decoding="async" src="https://www.metasyssoftware.com/wp-content/uploads/2023/04/email-notifications-3.jpg" alt="Mailkit" /></p>
<p>After a successful installation, we can proceed further with the code.</p>
<p>1. Create a configuration class.</p>
<p><img decoding="async" src="https://www.metasyssoftware.com/wp-content/uploads/2023/04/email-notifications-4-1.jpg" alt="Configuration Class" /></p>
<p>2. Add the mail server settings in appsettings.json file, like shown below.</p>
<p><img decoding="async" src="https://www.metasyssoftware.com/wp-content/uploads/2023/04/email-notifications-5.jpg" alt="Mail Server Settings" /></p>
<p>3. Create one email message class.</p>
<p><img decoding="async" src="https://www.metasyssoftware.com/wp-content/uploads/2023/04/email-notifications-6-1.jpg" alt="Email Message Class" /></p>
<p>4. To encapsulate email sending functionality and to use it anywhere from the application we should create one interface and class like given below.</p>
<p><img decoding="async" src="https://www.metasyssoftware.com/wp-content/uploads/2023/04/email-notifications-7-1.jpg" alt="Email Sending Functionality" /></p>
<p>5. Create a new class and inherit interface.</p>
<p><img decoding="async" src="https://www.metasyssoftware.com/wp-content/uploads/2023/04/email-notifications-8-1.jpg" alt="Class and Inherit Interface" /></p>
<p>6. The code below is an implementation in class file EmailSender. Please don’t get confused with Smtp class used below in the code; this class belongs to MailKit library class. CreateEmailMessage method is a simple message creation method which we need to use to create a message using MimeMessage class.</p>
<p><img decoding="async" src="https://www.metasyssoftware.com/wp-content/uploads/2023/04/email-notifications-9.jpg" alt="Class File EmailSender" /></p>
<p>7. In the .Net Core project, we need to add dependency injection in Startup.cs file.</p>
<p><img decoding="async" src="https://www.metasyssoftware.com/wp-content/uploads/2023/04/email-notifications-10.jpg" alt="Dot Net Core Project" /></p>
<p>8. Now we are ready to use the send method and can call this method from anywhere in the application.</p>
<p><img decoding="async" src="https://www.metasyssoftware.com/wp-content/uploads/2023/04/email-notifications-11.jpg" alt="Send Method" /></p>
<p>The implementation provided above is for the synchronous method. Similarly, we need to implement an asynchronous method for the send function. We can also add code to be able to send emails with attachments.</p>
<p>When calling the send method, we can use a string for the message body or even a dynamic template file. The BodyBuilder class can be used to build the body or content of the email. It can also be used to add data from the template file and then change the dynamic content.</p>
<p>I developed this in a .Net Core project, but the recommendation is to use the MailKit library in all new developments, even if the project is in the .Net framework. In older implementations, we can replace existing SMTP code with MailKit.</p>
<p>Partner with <a href="https://www.metasyssoftware.com/">MetaSys Software</a>, the top <a href="https://www.metasyssoftware.com/technologies/dot-net-solutions/">DotNet development company</a>, to build powerful and reliable software solutions that will drive your success. <a href="https://www.metasyssoftware.com/contact/">Contact us</a> now to schedule a consultation and start your journey towards unparalleled growth!</p>
</div>
</div>
</div>
</div>
</div>
</div>The post <a href="https://www.metasyssoftware.com/microsoft-technologies/using-mailkit-to-send-email-notifications-in-net-core/">Using MailKit to Send Email Notifications in .Net Core</a> appeared first on <a href="https://www.metasyssoftware.com">Metasys Software Pvt Ltd.</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Overview of Swagger</title>
		<link>https://www.metasyssoftware.com/microsoft-technologies/overview-of-swagger/</link>
		
		<dc:creator><![CDATA[meta_prasad]]></dc:creator>
		<pubDate>Tue, 28 Feb 2023 12:47:05 +0000</pubDate>
				<category><![CDATA[Microsoft Technologies]]></category>
		<category><![CDATA[Dot Net developers]]></category>
		<category><![CDATA[dot net development services]]></category>
		<category><![CDATA[Dot Net application development company]]></category>
		<guid isPermaLink="false">https://www.metasyssoftware.com/?p=5900</guid>

					<description><![CDATA[<p>Testing web APIs is indeed a challenging task, especially when compared to testing traditional user interfaces. The absence of a [&#8230;]</p>
The post <a href="https://www.metasyssoftware.com/microsoft-technologies/overview-of-swagger/">Overview of Swagger</a> appeared first on <a href="https://www.metasyssoftware.com">Metasys Software Pvt Ltd.</a>.]]></description>
										<content:encoded><![CDATA[<div id="pl-5900"  class="panel-layout" >
<div id="pg-5900-0"  class="panel-grid panel-no-style" >
<div id="pgc-5900-0-0"  class="panel-grid-cell" >
<div id="panel-5900-0-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="0" >
<div
			
			class="so-widget-sow-editor so-widget-sow-editor-base"
			
		></p>
<div class="siteorigin-widget-tinymce textwidget">
<p>Testing web APIs is indeed a challenging task, especially when compared to testing traditional user interfaces. The absence of a graphical interface makes it difficult to test the functionality and reliability of an API, which can lead to potential issues and a poor user experience. This is where Swagger comes to the rescue.</p>
<p>Swagger is a game-changer in the world of web API testing. It simplifies the testing process by providing a user-friendly interface for testing web API endpoints. With Swagger, developers no longer have to rely on third-party tools such as Fiddler or Postman to test their APIs. Instead, Swagger provides an all-in-one solution that allows developers to easily test and validate their APIs, ensuring that they are working as expected.</p>
<h2><strong>What is Swagger?</strong></h2>
<ol start="1">
<li>Swagger is an open-source framework that helps developers to design, build, and document RESTful APIs. It provides a simple and interactive way to describe the structure of an API, allowing developers to visualize and test the API&#8217;s endpoints.</li>
<li>It provides a UI representation of the Restful API without any implementation logic.</li>
<li>Swagger generates UI using the Swagger specification file (swagger.json), which is generated by Swagger tool based on service code.</li>
</ol>
<p></p>
<p><img decoding="async" class="alignnone size-medium wp-image-4868" src="/wp-content/uploads/2023/02/Picture4.png" alt="" /></p>
<ul>
<li>This file describes the capabilities of the service.</li>
<li>It also specifies the methods supported by the service.</li>
<li>Moreover, it provides information about method parameters.</li>
</ul>
<ol start="4">
<li>Swagger also generates documentation for the API that can be accessed by other developers, stakeholders, and end-users, making it easier for everyone to understand how the API works.</li>
</ol>
<h2><strong>How Swagger Works?</strong></h2>
<p>When you open a webpage that uses a RESTful API, the browser will first request the webpage from the web server. This request will trigger a separate request to the API server, which will provide the necessary data for the webpage.</p>
<p>Swagger UI is automatically generated from the API server&#8217;s OpenAPI specification, which is a standard for describing RESTful APIs. This UI can be viewed within a browser and provides a comprehensive and interactive documentation of the API&#8217;s endpoints, parameters, request and response examples, and other related information.</p>
<h2><strong>Benefits of SwaggerUI:</strong></h2>
<p>SwaggerUI has several advantages over other frameworks, making it a popular choice for Web API development. Some of the key benefits of SwaggerUI include:</p>
<ol>
<li>User-friendly interface: The visually appealing and intuitive interface allows for easy collaboration and input from various team members during the design process.</li>
<li>Improved Documentation: The comprehensive documentation feature not only facilitates internal communication within the team, but also supports the automation of dependent processes.</li>
<li>Convenient Testing and Debugging: The user-friendly interface and testing capabilities of SwaggerUI make it a valuable tool for quickly resolving any Web API issues that may arise during development.</li>
<li><strong>Ease of Use:</strong></li>
</ol>
<p>SwaggerUI is useful for testing and debugging Web API problems.</p>
<h2><strong>How to Install SwaggerUI?</strong></h2>
<p>To install SwaggerUI in an Asp.net core Web API project, use the following command in the Package Manager Console:</p>
<h2><strong><b>Install-Package Swashbuckle.AspNetCore</b></strong></h2>
<p>This will add the necessary dependencies and configure SwaggerUI in your project, allowing you to easily document and test your APIs.</p>
<h2><strong>How to configure Swagger in Asp.net Core Web API?</strong></h2>
<p>To configure Swagger, we have to add the AddSwaggerGen method into ConfigureServices.</p>
<p>After that, add the Swagger and SwaggerUI into the Configure method. The code will look like below:</p>
<p><img decoding="async" class="alignnone size-medium wp-image-4869" src="/wp-content/uploads/2023/02/Picture5.png" alt="" /></p>
<p>When you run the application and navigate to <u>http://localhost:52046/swagger/index.html</u>:</p>
<p><img decoding="async" class="alignnone size-medium wp-image-4870" src="/wp-content/uploads/2023/02/Picture6-1.png" alt="" /></p>
<p>You can see above image has ValuesController with five different endpoints.If you add a new controller, for example, CustomersController, and add methods to work with the customer data, these will automatically begin to appear in the SwaggerUI.</p>
<p>At <strong>MetaSys Software</strong>, our team of expert developers is ready to help you with any questions you may have regarding Swagger. We specialize in creating custom software solutions using the latest technologies, including <a href="https://www.metasyssoftware.com/technologies/dot-net-solutions/"><strong><u>DotNet</u></strong></a> , Azure,FileMaker, PHP, React, and React Native.</p>
<p>If you&#8217;re looking for a reliable, innovative, and customized solution for your software needs, look no further than <a href="https://www.metasyssoftware.com/"><strong><u>MetaSys Software</u></strong></a>. Get in touch with us today to learn how we can help transform your ideas into reality!</p>
</div>
</div>
</div>
</div>
</div>
</div>The post <a href="https://www.metasyssoftware.com/microsoft-technologies/overview-of-swagger/">Overview of Swagger</a> appeared first on <a href="https://www.metasyssoftware.com">Metasys Software Pvt Ltd.</a>.]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Implementing Active Directory in a .NET application with Multiple Roles</title>
		<link>https://www.metasyssoftware.com/dot-net/implementing-active-directory-in-a-net-application-with-multiple-roles/</link>
		
		<dc:creator><![CDATA[meta_prasad]]></dc:creator>
		<pubDate>Wed, 18 Aug 2021 13:28:16 +0000</pubDate>
				<category><![CDATA[Dot Net]]></category>
		<category><![CDATA[offshore dot net services]]></category>
		<category><![CDATA[outsourcing dot net services]]></category>
		<category><![CDATA[DotNet run]]></category>
		<category><![CDATA[DotNet framework]]></category>
		<category><![CDATA[DotNet Core 3.0]]></category>
		<category><![CDATA[dot net development company]]></category>
		<category><![CDATA[dot net development services]]></category>
		<guid isPermaLink="false">https://www.metasyssoftware.com/?p=3566</guid>

					<description><![CDATA[<p>The need for a directory of users arises when various devices are used on the same network. It is crucial [&#8230;]</p>
The post <a href="https://www.metasyssoftware.com/dot-net/implementing-active-directory-in-a-net-application-with-multiple-roles/">Implementing Active Directory in a .NET application with Multiple Roles</a> appeared first on <a href="https://www.metasyssoftware.com">Metasys Software Pvt Ltd.</a>.]]></description>
										<content:encoded><![CDATA[<div id="pl-3590" class="panel-layout">
<div id="pg-3590-0" class="panel-grid panel-no-style">
<div id="pgc-3590-0-0" class="panel-grid-cell" data-weight="1">
<div id="panel-3590-0-0-0" class="so-panel widget widget_sow-editor panel-first-child panel-last-child" data-index="0" data-style="{&quot;background_image_attachment&quot;:false,&quot;background_display&quot;:&quot;tile&quot;,&quot;cvw_duration&quot;:&quot;300&quot;,&quot;cvw_easing&quot;:&quot;linear&quot;,&quot;cvw_anchor&quot;:&quot;top-bottom&quot;,&quot;cvw_repeat&quot;:&quot;true&quot;,&quot;iw-visible-screen&quot;:&quot;iw-all&quot;,&quot;iw-visible-layout&quot;:&quot;iw-all&quot;}">
<div class="so-widget-sow-editor so-widget-sow-editor-base">
<div class="siteorigin-widget-tinymce textwidget">
<p>The need for a directory of users arises when various devices are used on the same network. It is crucial to locate the directory on one central source, known as Active Directory. It helps validate and authenticate multiple users accessing all resources on the domain with a single sign-on.</p>
<p>In this blog, we will demonstrate how to implement Active Directory in a .NET application.</p>
<p><img fetchpriority="high" decoding="async" class="wp-image-3567 size-full aligncenter" title="Login" src="https://www.metasyssoftware.com/wp-content/uploads/2022/07/dotnet_1.png" alt="Login" width="378" height="166" /></p>
<h2><strong>What is Active Directory?</strong></h2>
<p>Active Directory is a database adapted by Microsoft to manage multiple devices on a single network. It also can be defined as a set of services that connect users with network resources they need to accomplish projects. In order to obtain access to devices, the network users require it to be validated.</p>
<p>Let us consider a C# .NET application to validate the users using Active Directory on the login page, before implementing Active Directory, we use ASP.NET membership to validate a user on the Login page. The code should look similar to the code below.</p>
<p><img decoding="async" class="wp-image-3568 size-full aligncenter" title="Code " src="https://www.metasyssoftware.com/wp-content/uploads/2022/07/dotnet_2.png" alt="Code" width="431" height="28" /></p>
<p>Now, to create our own function to validate the user through Active Directory, we use the code below.</p>
<p><img decoding="async" class="wp-image-3569 size-full aligncenter" title="Code " src="https://www.metasyssoftware.com/wp-content/uploads/2022/07/dotnet_3.png" alt="Code " width="450" height="33" /></p>
<p>VerifyUserAD accepts three parameters, namely, Username, Password and ReturnMsg. ReturnMsg returns the error message if the validation of the user fails against the Active Directory. Refer to the code below.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-3570 size-full" title="Code" src="https://www.metasyssoftware.com/wp-content/uploads/2022/07/dotnet_4.png" alt="Code" width="624" height="381" /></p>
<p>Once the user is validated, the function VertifyUserAD returns an ‘authenticated’ message, based on which the user can take the following relevant actions.</p>
<p>To entirely bypass the <a href="https://www.metasyssoftware.com/case-study-dotnet/">ASP .NET</a> membership, use the Active Directory to validate the user. For an existing application, users can maintain and access a copy of Users in the database, meaning there is no need to modify the whole application end-to-end.</p>
<h2><strong>Role-based implementation</strong></h2>
<p>For role-based implementation, we use the DirectorySearcher class to fetch the property ‘memberOf’ for that user in Active Directory, as shown in the code below.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-3572 size-full" title="Code" src="https://www.metasyssoftware.com/wp-content/uploads/2022/07/dotnet_5.png" alt="Code " width="488" height="62" /></p>
<p>This enables users to find the list of Groups in which the user is assigned using the SearchResult.</p>
<p><img loading="lazy" decoding="async" class="aligncenter wp-image-3573 size-full" title="Search result " src="https://www.metasyssoftware.com/wp-content/uploads/2022/07/dotnet_6.png" alt="Search result " width="416" height="76" /></p>
<p>Use the command below to install Directory Services using the package manager console.</p>
<p>Install-Package System.DirectoryServices</p>
<p>Hope this blog will help you in the implementation of Active Directory in Dot Net application. For more information on .Net services, please visit <a href="https://www.metasyssoftware.com/dot-net">https://www.metasyssoftware.com/dot-net</a></p>
</div>
</div>
</div>
</div>
</div>
</div>The post <a href="https://www.metasyssoftware.com/dot-net/implementing-active-directory-in-a-net-application-with-multiple-roles/">Implementing Active Directory in a .NET application with Multiple Roles</a> appeared first on <a href="https://www.metasyssoftware.com">Metasys Software Pvt Ltd.</a>.]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
