Arsip

Archive for the ‘.NET Framework’ Category

3 Hal Dasar Meningkatkan Kinerja Applikasi Menggunakan C#

29 Agustus 2014 1 komentar

Seringkali dalam membuat sebuah applikasi user mengeluhkan mengenai kinerja yang lambat dari applikasi tersebut. Tahukah anda terkadang kita sering kali menyepelekan beberapa hal yang menurut sebagian programmer terutama programmer pemula bahwa hal tersebut tidaklah penting, namun hal ini jika kita terapkan dapat mempengaruhi kinerja dari applikasi yang akan kita buat.
Dalam tulisan saya kali ini saya akan menjelaskan 3 hal dasar yang mungkin bermanfaat untuk meningkatkan kinerja applikasi yang sedang dikembangkan.

 

1 Boxing dan Unboxing

Variabel itu dibagi berdasarkan 2 type, variable berdasarkan value dan variable berdasarkan referensi,  valueType adalah variable yang mengacu pada nilai dari variable tersebut sedangkan referenceType adalah variable yang mengacu pada type data dari variable tersebut. Terkadang sering kali kita mengirimkan variable berbasis value  namun sebenarnya yang dibutuhkan adalah variable reference. C# telah memiliki teknologi yang dapat merubah valuetype menjadi reference type yang dinamakan boxing dan unboxing. Boxing adalah proses konversi variable valuetype menjadi reference type (object) , ketika CLR menemukan variable value maka akan dibungkus ke variable object (boxing) didalam heap,  dan kemudian meng-extract variable tersebut (Unboxing), Boxing itu implicit sedangkan Unboxing explicit. Hal ini dilakukan karena C# memiliki pandangan bahwa variable type apapun dapat diperlakukan sebagai object. Hal yang dilakukan CLR adalah :

  • Mengalokasikan variable object (didalam heap)
  • Menyalin data yang terdapat pada valuetype kedalam object tersebut.

Contoh :

int i = 10;
int j = 15;
Console.WriteLine(“Print Nilai : {0}, {1}”, i, j);

Mungkin kita sering kali menuliskan kode tersebut dan terasa familiar, namun sebenarnya hal dilakukan pada saat compile adalah :

int i = 10;
int j = 15;
object  obj1 = i;
object  obj2 = j;
Console.WriteLine(“Print Nilai : {0}, {1}”, obj1.ToString(), obj2.ToString());

Anda pasti kaget melihat kode tersebut padahal anda merasa tidak menulisnya seperti itu, hal ini dikarenakan C# akan melakukan Boxing dan Unboxing terhadap kode tersebut. Dan ini akan menciderai performance dari applikasi. Untuk menghidari hal tersebut sebaiknya kita melakukan ToString() pada fungsi WriteLine(), karena Write line membutuhkan variable ref.

Console.WriteLine(“Print Nilai : {0}, {1}”, i.ToString(), j.ToString());

 

2. StringBuilder

Dalam C# string sebenarnya adalah immutable(kekal) dan tidak dapat dirubah, ketika kita melakukan perubahan string maka sebenarnya kita membuat variable string baru, yang menggunakan memory yang lebih banyak dari yang dibutuhkan, contoh :

string msg = “Total Harga : ”; // object string1 created
msg = msg + “Rp. 10.000”; // object string 2 create
msg = msg + DateTime.Now; //object string3 create

dari kode diatas sebenarnya kita membuat 3 object string dan C# sebenarnya tidak melakukan perubahan pada variable tersebut, namun menambahkannya pada memory. Untuk memanipulasi data tersebut sebaiknya menggunakan StringBuilder. StringBuilder itu seperti string yang nilainya barisi karakter berurutan. Sekali kita membuat variable StringBuilder, kita dapat melakukan append, remove, replace bahkan menambahkan karakter. Sebaiknya anda merubah kode diatas menjadi:

StringBuilder sb = new StringBuilder();
sb.Append(“Total Harga :”);
sb.Append(“Rp. 10.000”);
sb.Append(DateTime.Now.ToString());

 

3. “As” vs “Cast”

Seorang programmer yang baik kadang menghindari proses perubahan type data pada variable, namun terkadang hal ini sering kali tidak dapat dihindari. Untuk melakukan konversi sebaiknya sedapat mungkin menggunakan metode As dibandingkan dengan Casting, karena hal ini lebih aman dan lebih efisien pada saat runtime. Untuk menggunakan metode casting anda harus menulis seperti ini :

object o = new object();
try
{
TypeBaru m = (TypeBaru) o;
if (m != null)
{
// Jalankan operasi disini
} else {
// report jika variable tersebut null
}
} catch {
// Report error konversi
}

sedangkan dengan menggunakan metode As kode yang akan ditulis menjadi seperti ini :

object o = new object();
TypeBaru m = o as TypeBaru;
if (m != null)
{
// Jalankan operasi disini
} else {
// report jika variable tersebut null
}

kode tersebut diatas sebenarnya sama, hanya saja dengan metode “as” akan melemparkan variable null jika object tersebut tidak dapat di konversi, sedangkan jika menggunakan cast maka akan melemparkan error jika tidak dapat dikonversi.

Kategori:.NET Framework

ASP.NET MVC JQGrid nuget V.1.1.2

15 Mei 2013 9 komentar

Update v.1.1.2

  • Add new Data Annotation Attribute Approach
  • Remove Dependencies of Jquery. (not actually needed in Jq.Grid. you should add by your self in project)

new Version of Jq.Grid can be access via nuget

https://nuget.org/packages/Jq.Grid/1.1.2

I added Data Annotation Attribute in Jq.Grid class model
Example usage of attributes includes:

Grid

[Grid(ID = "InvoiceGrid", AutoWidth = true, ...)]
public class GridModel
{
    ...
}

  • ID [string]

    Set ID of Grid. Default value is empty string.

  • AutoWidth [bool]

    Set auto resize width of Grid. Default value is false.

  • ShrinkToFit [bool]

    Sets a new width to the grid dynamically. Default value is true.

  • DataUrl [string]

    The dataUrl parameter represent the url action to get data of grid. Default value is empty string.

  • EditUrl [string]

    The EditUrl parameter represent the url action to edit data of selected grid. Default value is empty string.

  • ColumnReordering [bool]

    drag & drop column reordering of grid. Default value is false.

  • RenderingMode [enum]

    Grid RenderingMode. Default value is RenderingMode.Default.

  • MultiSelect [bool]

    enabled multi selection of rows in grid. Default value is false.

  • MultiSelectMode [enum]

    multi selection of rows setting. Default value is MultiSelectMode.SelectOnRowClick.

  • MultiSelectKey [enum]

    multi selection of rows Key. Default value is MultiSelectKey.None.

  • Width [int]

    Width of grid. Default value is 0.

  • Height [int]

    Height of grid. Default value is 0.

Kategori:.NET Framework

ASP.NET MVC JQGrid nuget V.1.1.0

25 April 2013 40 komentar

Update v.1.1.0

  • Add Data Annotation Attribute Approach
  • Fix some minor issue

new Version of Jq.Grid can be access via nuget

https://nuget.org/packages/Jq.Grid/1.1.0

I make more simple coding by using Data Annotation Attribute

Here Sample to use Data Annotation Approach

Controller

using Jq.Grid.Sample.Models;
using System.Linq;
using System.Web.Mvc;

namespace Jq.Grid.Sample.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            JQGridModel<invheader> model = new JQGridModel<invheader>("JsonExample");
            model.Grid.DataUrl = Url.Action("Data");
            return View(model);
        }

        [HttpPost]
        public JsonResult Data()
        {
            JQGridModel<invheader> model = new JQGridModel<invheader>();
            using (DataContext ctx = new DataContext())
            {
                return model.Grid.DataBind(ctx.InvoiceHeader.AsQueryable());
            }
        }
    }
}

Model

using System;
using System.ComponentModel.DataAnnotations;

namespace Jq.Grid.Sample.Models
{
    public class invheader
    {
        [Key, GridColumn(Visible = false)]
        public int id { get; set; }
        [GridColumn(HeaderText = "Invoice Date", DataFormatString = "{0:MM/dd/yyyy}")]
        public DateTime invdate { get; set; }
        [GridColumn(HeaderText = "Customer Name")]
        public string name { get; set; }
        [GridColumn(DataFormatString = "{0:C}")]
        public double amount { get; set; }
        [GridColumn(DataFormatString = "{0:0.00\\%}")]
        public double tax { get; set; }
        [GridColumn(DataFormatString = "{0:C}")]
        public double total { get; set; }
        [GridColumn(DataFormatString = "{0:C}")]
        public string note { get; set; }
        [GridColumn(DataFormatString = "{0:Yes;0;No}")]
        public bool IsPaid { get; set; }
    }
}

View

@model Jq.Grid.JQGridModel<Jq.Grid.Sample.Models.invheader>
@{
    ViewBag.Title = "Index";
    Layout = null;
}

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>JSON Example</title>

    <!-- The jQuery UI theme that will be used by the grid -->
    @Styles.Render("~/Content/themes/base/css")

    <!-- The jQuery UI theme extension jqGrid needs -->
    <link href="/Content/ui.jqgrid.css" rel="stylesheet" />
</head>
<body>

    <!-- The Partial HTML Grid Table -->
    @Html.Grid().JQGridPartial(Model.Grid)

    <!-- JavaScript at the bottom for fast page loading -->
    @Scripts.Render("~/bundles/jquery")
    <!-- The localization file we need, English in this case -->
    <script src="/Scripts/i18n/grid.locale-en.js"></script>
    <!-- The jqGrid client-side javascript -->
    <script src="/Scripts/jquery.jqGrid.src.js"></script>
    <!-- The Grid Script client-side javascript -->
    @Html.Grid().JQGridScript(Model.Grid)
</body>
</html>

Full sample can be download at github
https://github.com/aiska/Jq.Grid

Kategori:.NET Framework

ASP.NET MVC JQGrid nuget V.1.0.1

23 April 2013 14 komentar

Update v.1.0.1
* Fix DataFormatString render, add boolean string value
* Using Jq.Grid v.4.4.5 (http://www.trirand.com/blog/?p=1047) (i modify some code in js)

This is sample how to use DataFormatString boolean value to string

new JQGridColumn
{
    DataField = "IsDefault",
    HeaderText = "Default",
    DataFormatString = "{0:Yes;0;No}",
    DataType = typeof(bool)
}

You can download update version in nuget
https://nuget.org/packages/Jq.Grid/1.0.1

Next Todo in v.1.1.0
* Using Data Anotation in Column Grid
* Using IFormatter to Convert and Reconvert
* Auto detect DataType in Column Property
* Supporting for Entity Framework 6 (stored procedure) (for insert, update, delete)
* supporting WebApi

I’m very happy to see people downloading the project, and would be glad to get some feedback from you,

So please let me know if you have any problems or other feature requests!

Thanks For your appreciation

Regard,

Aiska Hendra

New Update v.1.1.0

Kategori:.NET Framework

ASP.NET MVC JQGrid nuget

6 Februari 2013 98 komentar

base on My Previous Article I have a lot of change in my JqGrid, and from now JqGrid can be accessed via nuget
 
Jq.Grid Nuget
 

To install ASP.NET MVC JQGrid, run the following command in the Package Manager Console

PM> Install-Package Jq.Grid

Controller :

using Jq.Grid.Demo.Models;
using System;
using System.Linq;
using System.Web.Mvc;

namespace Jq.Grid.Demo.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            JsonExampleGridModel model = new JsonExampleGridModel();
            model.Grid.DataUrl = Url.Action("Data");
            return View(model);
        }

        [HttpPost]
        public JsonResult Data()
        {
            JsonExampleGridModel model = new JsonExampleGridModel();
            using (DataContext ctx = new DataContext())
            {
                return model.Grid.DataBind(ctx.InvoiceHeader.AsQueryable());
            }
        }
    }
}

Model:

using System;
using System.Collections.Generic;

namespace Jq.Grid.Demo.Models
{
    public class invheader
    {
        public int id { get; set; }
        public DateTime invdate { get; set; }
        public string name { get; set; }
        public double amount { get; set; }
        public double tax { get; set; }
        public double total { get; set; }
        public string note { get; set; }
    }

    public class JsonExampleGridModel : JQGridModel
    {
        public JsonExampleGridModel()
        {
            Grid = new JQGrid
            {
                ID = "JsonExample",
                Columns = new List<JQGridColumn>
                {
                    new JQGridColumn 
                    {
                        DataField = "id",
                        HeaderText = "Inv No",
                        PrimaryKey = true,
                        DataType = typeof(int),
                    },
                    new JQGridColumn 
                    {
                        DataField = "invdate",
                        HeaderText = "Date",
                        DataType = typeof(DateTime)
                    },
                    new JQGridColumn 
                    {
                        DataField = "name",
                        HeaderText = "Client",
                        DataType = typeof(string)
                    },
                    new JQGridColumn 
                    {
                        DataField = "amount",
                        HeaderText = "Amount",
                        DataType = typeof(double)
                    },
                    new JQGridColumn 
                    {
                        DataField = "tax",
                        HeaderText = "Tax",
                        DataType = typeof(double)
                    },
                    new JQGridColumn 
                    {
                        DataField = "total",
                        HeaderText = "Total",
                        DataType = typeof(double)
                    },
                    new JQGridColumn 
                    {
                        DataField = "note",
                        HeaderText = "Notes",
                        DataType = typeof(string)
                    }
                }
            };
        }
    }
}

View :

@model Jq.Grid.Demo.Models.JsonExampleGridModel
@{
    ViewBag.Title = "Index";
    Layout = null;
}

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <title>JSON Example</title>

    <!-- The jQuery UI theme that will be used by the grid -->
    @Styles.Render("~/Content/themes/base/css")

    <!-- The jQuery UI theme extension jqGrid needs -->
    <link href="/Content/ui.jqgrid.css" rel="stylesheet" />
</head>
<body>

    <!-- The Partial HTML Grid Table -->
    @Html.Grid().JQGridPartial(Model.Grid)

    <!-- JavaScript at the bottom for fast page loading -->
    @Scripts.Render("~/bundles/jquery")
    <!-- The localization file we need, English in this case -->
    <script src="/Scripts/i18n/grid.locale-en.js"></script>
    <!-- The jqGrid client-side javascript -->
    <script src="/Scripts/jquery.jqGrid.src.js"></script>
    <!-- The Grid Script client-side javascript -->
    @Html.Grid().JQGridScript(Model.Grid)
</body>
</html>

The full sample code can be accessed via github
Jq.Grid

Kategori:.NET Framework

Using JQGrid ASP .Net MVC

9 Maret 2012 103 komentar

After i read Phil Haack about Using jQuery Grid With ASP.NET MVC, i have idea to create my own library to create JQGrid module. Then I search reference to build it. then I’ve got library  from trirand . I create this library Base on Trirand JQGrid for MVC Library structure.

I fix some issue in trirand library, among others:

  • can filter Null and Not Null data, which is in trirand library is not support
  • Optimize data access. using Entity framework and Dynamic Query to access data.
  • Add Multiple Row Footer.
  • And More…

In this articles i want to share how to make JQGrid ASP .Net MVC.

First… Create New MVC Project

After Create New MVC Project, you should add Aiska Library reference to your project, the library can be download here

Second, add Entity model for Grid.in this case i’m using Northwind database.

After you create entity model for grid lets create the model for grid,

using System;
using System.Collections.Generic;
using Aiska.Web.Jquery;
using System.Web.UI.WebControls;
    public class OrderGridModel
    {
        public Grid OrderGrid { get; set; }
        public Grid OrderDetailGrid { get; set; }

        public OrderGridModel()
        {
            OrderGrid = new Grid()
            {
                Height = Unit.Percentage(100),
                ID = "Orders",
                Columns = new List<GridColumn>()
                {
                    new GridColumn()
                    {
                        DataField = "OrderId",
                        PrimaryKey = true,
                    },
                    new GridColumn()
                    {
                        DataField = "RequiredDate",
                    },
                    new GridColumn()
                    {
                        DataField = "ShippedDate",
                    },
                    new GridColumn()
                    {
                        DataField = "CompanyName",
                    },
                    new GridColumn()
                    {
                        DataField = "ShipName",
                        HeaderText = "Ship To"
                    }
                }
            };

            OrderDetailGrid = new Grid()
            {
                ID = "Orders",
                Height = Unit.Percentage(100),
                Columns = new List<GridColumn>()
                {
                    new GridColumn()
                    {
                        DataField = "Product",
                    },
                    new GridColumn()
                    {
                        DataField = "Price",
                        TextAlign = Aiska.Web.Jquery.TextAlign.Right,
                        DataFormatString = "{0:#,##0.00;;-}"
                    },
                    new GridColumn()
                    {
                        DataField = "Quantity",
                        TextAlign = Aiska.Web.Jquery.TextAlign.Right
                    },
                    new GridColumn()
                    {
                        DataField = "Discount",
                        TextAlign = Aiska.Web.Jquery.TextAlign.Right,
                        DataFormatString = "{0:#,##0.00;;-}"
                    },
                    new GridColumn()
                    {
                        DataField = "Total",
                        TextAlign = Aiska.Web.Jquery.TextAlign.Right,
                        DataFormatString = "{0:#,##0.00;;-}"
                    }
                }
            };

            OrderGrid.ClientSideEvents.SubGridRowExpanded = "ShowSubGrid";
            OrderGrid.HierarchySettings.HierarchyMode = HierarchyMode.Parent;
            OrderGrid.ToolBarSettings.ShowRefreshButton = true;

            OrderDetailGrid.HierarchySettings.HierarchyMode = HierarchyMode.Child;
            OrderDetailGrid.ToolBarSettings.ShowRefreshButton = true;
            OrderDetailGrid.AppearanceSettings.ShowFooter = true;
            OrderDetailGrid.AppearanceSettings.FooterRow = 3;

Third, Create Controller for Order Grid

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Aiska.Web.Jquery;

    public class OrderController : Controller
    {
        //
        // GET: /Order/

        public ActionResult Index()
        {
            OrderGridModel model = new OrderGridModel();
            model.OrderGrid.DataUrl = Url.Action("GetData");
            model.OrderDetailGrid.DataUrl = Url.Action("GetDetailData");
            return View(model);
        }

        public JsonResult GetData()
        {
            OrderGridModel model = new OrderGridModel();
            var context = new NORTHWNDEntities();
            var data = from o in context.Orders
                       join c in context.Customers
                       on o.CustomerID equals c.CustomerID
                       select new {o.OrderID, o.RequiredDate, o.ShippedDate, c.CompanyName, o.ShipName};
            return model.OrderGrid.DataBind(data);
        }

        public JsonResult GetDetailData(int parentRowId)
        {
            OrderGridModel model = new OrderGridModel();
            model.OrderDetailGrid.DataResolved += new GridDataResolvedEventHandler(GrandTotal);
            var context = new NORTHWNDEntities();
            var data = from o in context.Order_Details
                       join p in context.Products
                       on o.ProductID equals p.ProductID
                       where o.OrderID == parentRowId
                       select new OrderDetailModel ()
                       {
                           Product = p.ProductName,
                           Price = (double)o.UnitPrice,
                           Quantity = o.Quantity,
                           Discount = (double)o.Discount * (double)o.UnitPrice,
                           Total = (double)o.Quantity * (double)o.UnitPrice
                        };
            return model.OrderDetailGrid.DataBind(data);
        }
        void GrandTotal(object sender, GridDataResolvedEventArgs e)
        {
            GridColumn Price = e.GridModel.Columns.Find(c => c.DataField == "Price");
            GridColumn SubTotal = e.GridModel.Columns.Find(c => c.DataField == "Total");
            var context = new NORTHWNDEntities();
            IQueryable<OrderDetailModel> data = (IQueryable<OrderDetailModel>)e.CurrentData;

            double subtotal = data.Sum(c => c.Total);
            double discount = data.Sum(c => c.Discount);

            Price.FooterValue[0] = "Total: ";
            Price.FooterValue[1] = "Discount: ";
            Price.FooterValue[2] = "Grand Total: ";
            SubTotal.FooterValue[0] = subtotal != 0 ? string.Format("{0:#,###.00;;-}", subtotal) : "-";
            SubTotal.FooterValue[1] = discount != 0 ? string.Format("{0:#,###.00;;-}", discount) : "-";
            SubTotal.FooterValue[2] = string.Format("{0:#,###.00;;-}", (subtotal - discount));
        }
    }

Then Create View for Grid

@using Aiska.Web.Mvc
@using Aiska.Web.Jquery
@model MvcMultiRowFooterJQGrid.Models.OrderGridModel

@{
    ViewBag.Title = "Multiple Footer Row";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@Html.Aiska().Grid(Model.OrderGrid)
@Html.Aiska().Grid(Model.OrderDetailGrid)
<script type="text/javascript">
    function ShowSubGrid(subgrid_id, row_id) {
        showSubGrid_Orders(subgrid_id, row_id);
    }
</script>

If Success and no error the display should be like this

The Full sample you can download here

please Don’t hesitate to ask in comment or send me mail at aiska_hendra@yahoo.com

I’m sorry for my bad English.

Thank you…

Best Regard,
Aiska Hendra

Senior Developer
Enerren Technologies

Kategori:ASP .NET, C#, JQuery, MVC

ASP .Net MVC : Routing untuk IIS Mode Classic dan Mode Integrated

20 Desember 2010 9 komentar

Model-View-Controller

Didalam ASP.NET MVC, Routing merupakan fitur yang sangat familiar. Dengan menggunakan routing ini maka URL yang akan ditampilkan pada browser menjadi lebih bersih dan mudah. Untuk melakukan konfigurasi rute di dalam ASP.NET MVC sangatlah mudah, kita hanya perlu merubah file global.asax untuk membuat aplikasi dengan URL yang bersih. Namun dalam kebanyakan kasus, kita sering kali mendefinisikan rute ini di IIS 6, IIS 7 (atau IIS 7.5)  baik menggunakan mode Classic maupun Integrated. Tapi dalam penerapannya terkadang kita hanya mendefinisikan rute tersebut yang hanya dapat bekerja di IIS 7 mode Integrated. Hal yang sering kali terlewatkan dalam kasus ini adalah penggunaan ekstensi pada IIS 6 tanpa pemetaan wildcardnya.

Masih bingung ya?

Ok, saya coba jabarkan sedikit masalahnya. Kita ingin membuat sebuah applikasi web dimana applikasi yang kita inginkan tersebut mampu berjalan di Server IIS versi manapun dan dengan mode apapun, namun yang terjadi saat ini adalah ASP .NET MVC hanya melakukan generate routing yang sebenarnya dikhususkan untuk IIS 7.0 dengan mode Integrated. Dan masalah yang sering timbul adalah ketika applikasi web tersebut kita tempatkan pada IIS 6.0 dengan mode Classic, namun kita seringkali lupa melakukan mapping untuk masing-masing page, sehingga pada saat applikasi tersebut dijalankan maka muncul Error 404 – File or directory not found.

Dan yang lebih parahnya lagi terkadang kita salah dalam melakukan analisa pesan error tersebut.

Sebenarnya permasalahannya adalah terletak pada IIS, dimana versi lama (IIS 6.0) hanya melakukan pemetaan tertentu pada kerangka ASP.NET. Halaman ini harus untuk URL yang memiliki ekstensi file kanan. Sebagai contoh, halaman untuk index.aspx.

Oleh karena itu, agar ASP.NET Routing bekerja dengan baik, kita harus memodifikasi rute Default sehingga termasuk ekstensi file yang dipetakan ke kerangka ASP.NET. Namun masalah baru yang timbul adalah jika kita memang benar-benar ingin menjalankannya di IIS 7.0 .

Dari kasus diatas saya akan coba membuat sebuah solusi dimana Applikasi Web yang kita buat tersebut dapat berjalan secara berdampingan, apapun versi IIS yang digunakan dan dengan mode apapun juga.

Langkah pertama yang harus dilakukan adalah kita harus membuat 2 route untuk melakukan routing.

' Route name
' URL with parameters
' Parameter defaults
 ' Constraints
routes.MapRoute("DefaultClassic", "{controller}.aspx/{action}/{id}", New With { _
 Key .controller = "Home", _
 Key .action = "Index", _
 Key .id = UrlParameter.[Optional] _
}, New With { _
 Key .mode = New ClassicModeConstraint() _
})

' Route name
' URL with parameters
' Parameter defaults
 ' Constraints
routes.MapRoute("DefaultIntegrated", "{controller}/{action}/{id}", New With { _
 Key .controller = "Home", _
 Key .action = "Index", _
 Key .id = UrlParameter.[Optional] _
}, New With { _
 Key .mode = New IntegratedModeConstraint() _
})

Rute pertama digunakan untuk mode Classic sedangkan yang kedua untuk mode Integrated. Selanjutnya Anda perlu menambahkan pelaksanaan routing tersebut didalam Class.

Public Class ClassicModeConstraint
 Implements IRouteConstraint
 Public Function Match(httpContext As HttpContextBase, route As Route, parameterName As String, values As RouteValueDictionary, routeDirection As RouteDirection) As Boolean
 Return Not HttpRuntime.UsingIntegratedPipeline
 End Function
End Class

Public Class IntegratedModeConstraint
 Implements IRouteConstraint
 Public Function Match(httpContext As HttpContextBase, route As Route, parameterName As String, values As RouteValueDictionary, routeDirection As RouteDirection) As Boolean
 Return HttpRuntime.UsingIntegratedPipeline
 End Function
End Class

HttpRuntime.UsingIntegratedPipeline akan mengembalikan nilai true jika aplikasi berjalan pada mode Integrated, dan jika tidak,  akan false. Jadi rute untuk mode Integrated hanya cocok saat aplikasi berjalan pada mode Integrated dan rute untuk mode Classic hanya cocok bila aplikasi tidak berjalan pada mode Integrated.

Ok, Selamat mencoba…

Kategori:ASP .NET, MVC

Membuat Software dari awal Vs Adopsi Produk Perangkat Lunak Universal

5 November 2010 1 komentar

Perusahaan harus menyimpan dan mengelola banyak informasi tentang karyawan, klien, penjualan, dll. Mereka juga harus melacak operasi mereka dan mengotomatisasi alur kerja mereka. Jadi, setiap perusahaan sangat membutuhkan software untuk operasi pekerjaan sehari-hari, dan kualitas dari software ini merupakan kunci penting untuk mencapai kesuksesan bisnis. Bayangkan sebuah restoran yang memungkinkan Anda untuk memesan menu hidangan secara online meja, atau bank yang memungkinkan Anda untuk mendapatkan transaksi online, kartu kredit, serta laporan kegiatan dirangkum dan dikelompokkan dengan cara apapun yang Anda suka. Perangkat layanan tambahan tersebut membuat pelanggan lebih puas dan lebih penjualan pun akan meningkat.

Sebuah perusahaan pada umumnya mendapatkan perangkat lunak yang diperlukan dari dua sumber tradisional.

Mari kita lihat pro dan kontra untuk masing-masing metode pembuatan perangkat lunak.

  • Membuat Software dari Awal

Sebuah perusahaan dapat memesan perangkat lunak yang ditulis dari awal oleh sebuah perusahaan perangkat lunak independen(ISV) atau di departemen IT dari perusahaan, jika ada. Namun jika programer tidak bergantung pada kerangka yang memfasilitasi pengembangan aplikasi bisnis, maka mereka akan menghadapi masalah berikut:

  1. Banyak waktu akan dikeluarkan bahkan memproduksi aplikasi sederhana untuk menyimpan dan melihat informasi.
  2. Pengembang harus hadir untuk setiap aspek aplikasi yang – dari manajemen manual data dalam DBMS, untuk menyediakan editor untuk setiap bidang yang mereka perlu diedit.
  3. Membutuhkan waktu dan sumber daya yang besar untuk tujuan pengujian.
  4. Semua perangkat lunak memiliki bug, sehingga mau tidak mau aplikasi tersebut harus ditulis dari awal dan hal ini akan memiliki banyak effort dari mereka.
  5. Satu-satunya cara untuk menghindari bug pada tahap awal pengembangan aplikasi ini adalah menggunakan kembali perangkat lunak perbagian yang telah diuji dengan baik.
  6. Tentu saja, setiap pengembang akan mencoba untuk kembali digunakan sebagai banyak kode sendiri mungkin, namun demikian, jumlah kode digunakan kembali kemungkinan besar akan sangat kecil dibandingkan dengan seluruh aplikasi.
  7. Sulit untuk mempertahankan dan memperluas aplikasi tersebut.
  8. Tingkat abstraksi cukup rendah – pengembang bertanggung jawab untuk setiap kontrol pada setiap bentuk. Jadi, bahkan untuk tugas kecil, seperti menyesuaikan editor untuk tipe data tertentu, mereka akan harus membuka berbagai bentuk dan secara manual menyesuaikan mereka, Bagian ini sangat rentan akan kemungkinan kesalahan.
  9. Kesulitan untuk membuat sebuah aplikasi yang lebih kompleks.

Selain kelemahan diatas, tentu saja, cara atau metode ini juga memiliki kelebihan, antara lain :

  1. Setiap aspek aplikasi akan berada di bawah kontrol total pengembangnya.
  2. Aplikasi jadi lebih fleksibel, karena satu-satunya faktor eksternal yang tidak dapat dirubah oleh programmer adalah development toolsnya.
  3. Segala sesuatu dan yang lainnya dibuat oleh mereka, dan dikenal oleh mereka serta mungkin akan lebih mudah dipelihara dan diperbaiki oleh mereka.
  4. Programmer / Deveoper dapat mengoptimalkan software untuk kebutuhan aplikasi tertentu, yang tidak mungkin bila sebuah produk software universal atau library gunakan.
  5. Aplikasi tidak harus mengikuti aturan dari beberapa sistem eksternal.
  6. Bantuan lebih, seperti sistem menawarkan, semakin bahwa tugas spesifik dapat dicapai dalam konser dengan sistem eksternal.

Jika Anda tidak membangun aplikasi yang serupa masing-masing dan setiap saat, melainkan, menciptakan unik, aplikasi individual, kemudian membuat aplikasi dari awal adalah pilihan terbaik.

  • Adopsi Perangkat Lunak Universal

Sebuah bisnis dapat membeli sebuah produk atau lebih Software ERP seperti SAP, Oracle, Microsoft Axapta, Infor, dll. Kemudian mereka menyewa konsultan untuk melakukan konfigurasi applikasi tersebut sesuai dengan kebutuhan bisnis yang dijalankan.

Pendekatan ini memiliki kelemahan sebagai berikut:

  1. Hal ini menuntut belajar bahasa pemrograman khusus, dan itu mahal.
  2. Applikasi ini tidak memungkinkan untuk mengubah dan memperluas aplikasi.
  3. Produk yang lebih universal akan mengakibatkan kinerjanya menjadi semakin rendah.

Sedangkan Kelebihannya atara lain:

  1. Jika Anda mengadopsi sistem yang terkenal, Anda dapat cukup baik yakin bahwa ia telah diuji dengan baik, dan Anda tidak akan mengalami masalah dengan kualitas.
  2. Dalam hal ini, bisnis tidak harus berurusan dengan programmer profesional.
  3. Skenario ini merupakan pilihan terbaik jika sesuatu yang umum dan sederhana diperlukan, jika tidak ada inovasi direncanakan, dan tidak perlu memiliki software yang unik di kelas bisnis mereka.

Metode ini sangat membantu jika anda merupakan perusahaan besar yang universal dan tidak memiliki bisnis proses yang unik.

Namun saat ini ada metode yang menggabungkan kedua metode diatas, metode tersebut adalah Applikasi Framework. Sekarang kita bertanya, apa itu applikasi Framework?

Applikasi Framework merupakan penggabungan dari kedua pendekatan metode diatas, disatu sisi programmer/pengembang masih perlu untuk menuliskan kode, tetapi disisi lain, banyak hal yang telah selelsai dan disediakan oleh Framework. Framework ini memberikan sebuah platform pengembangan sebuah perangkat lunak, sehingga programmer/pengembang dapat lebih mudah untuk mengembangkan applikasi bisnis. Applikasi Framework ini dirancang untuk memasukkan, menyimpan, menelusuri, menganalisa, mencetak, serta mengatur alur kerja organisasi. Jika programmer/developer ingin mengembangkan sebuah applikasi lain yang unik, seperti: permainan, pengelolaan grafis/gambar, pengelolaan text, dll. dengan menggunakan framework ini akan sangat membantu sekali.

Namun Ada beberapa hal penting yang Anda harus perhatikan setiap kali anda membuat dan mengembangkan aplikasi bisnis. elemen ini sangat mirip, namun tidak ada cara mudah untuk menggunakan kembali kode tersebut. Anda harus memuat dan mensetting dataset, grid, form, dll. Tapi, dan bukan melakukan pekerjaan rutin, untuk itu diperlukan sebuah Framework yang menawarkan antarmuka tingkat tinggi, menyembunyikan rincian ini pelaksanaan tersebut, dan membiarkan Anda berkonsentrasi pada logika bisnis dan bisnis proses. Misalnya,

Framework tersebut harus dirancang untuk menangani masalah-masalah yang terjadi ketika Anda mengembangkan aplikasi dari awal. Selain itu tujuan utama dari teknologi Framework adalah:

  1. Memudahkan pengulangan menggunakan logika bisnis yang sama dalam aplikasi yang dirancang untuk platform yang berbeda (Windows Forms dan ASP.NET).
  2. Menyediakan data-untuk algoritma- konstruksi antar muka. Ini berarti bahwa Anda tidak perlu secara manual membuat banyak bentuk semacam itu untuk browsing data dan editing. Hal ini juga memudahkan untuk memelihara aplikasi, karena jika Anda mengubah data, Anda tidak perlu memodifikasi berbagai bentuk dan / atau halaman web – karena hal tersebut dilakukan secara otomatis.
  3. Menyembunyikan rincian pengelolaan data. Anda tidak akan harus berurusan dengan DBMS atau menggunakan ADO.NET untuk mengakses data.
  4. Memberikan Anda sebuah alat yang lebih tinggi untuk pengelolaan data. Alat ini akan memudahkan untuk menyimpan data anda menggunakan DBMS yang populer, tanpa harus mengenal secara rinci. Hal ini juga mudah untuk mengubah sistem target manajemen basis data.
  5. Membuatnya sangat mudah untuk membuat aplikasi bisnis yang dirancang untuk menyimpan dan melihat data.
  6. Memungkinkan aplikasi yang akan dibuat menggunakan bahasa pemrogramman yang BERSIH.
Kategori:.NET Framework

ASP .NET MVC

8 Juni 2010 2 komentar

Model-View-Controller (MVC) merupakan pola arsitektur yang memisahkan aplikasi menjadi tiga komponen utama yaitu: model, view(tampilan), dan controller. Framework ASP.NET MVC menyediakan pola alternatif untuk ASP.NET Web Form dalam menciptakan aplikasi Web berbasis MVC. Framework ASP.NET MVC ini sangat ringan dan telah teruji dengan baik (seperti pada aplikasi berbasis Web Form) serta terintegrasi dengan fitur ASP.NET yang ada, seperti halaman induk(Master-Page) dan otentikasi berbasis keanggotaan(Membership). Kerangka MVC didefinisikan dengan nama System.Web.Mvc dan merupakan fundamental serta nerupakan bagian dari namespace System.Web.

MVC adalah pola desain standar yang banyak digunakan dan cukup dikenal dikalangan developer. Beberapa jenis aplikasi Web akan mendapatkan keuntungan dari Framework MVC ini. Orang lain akan terus menggunakan pola aplikasi ASP.NET tradisional yang didasarkan pada Web Form dan Postbacks. Dan jenis lain dari aplikasi Web akan menggabungkan dua pendekatan, pendekatan tidak mengecualikan yang lain.

Kerangka MVC mencakup komponen-komponen berikut:

Model-View-Controller

  • Model. Model objek merupakan bagian dari aplikasi yang mengimplementasikan logika untuk aplikasi dan domain data. Sering kali, objek model ini merupakan struktur dari model yang terdapat dalam database. Sebagai contoh, sebuah objek Produk bisa mengambil informasi dari database, memanipulasinya, dan kemudian menulis informasi yang diperbarui kembali ke tabel Produk di SQL Server. Dalam aplikasi kecil, model sering merupakan pemisahan konseptual daripada sebuah fisik. Sebagai contoh, jika aplikasi hanya membaca data menetapkan dan mengirimkannya untuk melihat, aplikasi tidak memiliki lapisan model fisik dan kelas-kelas yang terkait. Dalam hal itu, himpunan data mengambil peran objek model.
  • View. View(Tampilan) merupakan komponen yang menampilkan aplikasi antarmuka pengguna (UI). Biasanya, UI diciptakan dari model data. Sebuah contoh akan menjadi mengedit tampilan dari sebuah tabel Produk yang menampilkan kotak teks, drop-down daftar, dan kotak cek berdasarkan kondisi saat ini dari obyek Produk.
  • Controllers. Controller merupakan komponen yang menangani interaksi pengguna, bekerja dengan model, dan akhirnya pilih tujuan untuk membuat yang menampilkan UI. Dalam aplikasi MVC, melihat hanya menampilkan informasi; controller menangani dan merespon input pengguna dan interaksi. Sebagai contoh, controller menangani query-string nilai-nilai, dan melewati nilai-nilai ke model, yang pada gilirannya query database dengan menggunakan nilai-nilai tersebut.

Pola MVC ini akan sangat membantu Anda dalam membuat aplikasi yang memisahkan berbagai aspek aplikasi meliputi(logika input, logika bisnis, dan logika UI), dan memberikan kopling longgar antara unsur-unsur tersebut. Pola ini menentukan di mana masing-masing jenis logika harus ditempatkan dalam aplikasi. Logika UI termasuk dalam view. Input logika termasuk dalam controller. Bisnis logika termasuk dalam model. Pemisahan ini akan membantu Anda dalam mengelola kompleksitas ketika Anda membangun aplikasi, karena memungkinkan Anda untuk tetap fokus pada satu aspek dari pelaksanaan pada satu waktu. Sebagai contoh, Anda dapat fokus pada tampilan tanpa tergantung pada logika bisnis.

Selain mengelola kompleksitas sebuah aplikasi, Framework MVC juga dapat membuat arsitektur applikasi dan pengujian applikasi menjadi lebih mudah dibandingkan dengan pola Web Form yang berbasis pada Web ASP.NET. Sebagai contoh, dalam aplikasi Web berbasis ASP.NET Web Form, sebuah kelas tunggal digunakan baik untuk menampilkan output maupun untuk merespon input pengguna. Menulis tes otomatis untuk aplikasi ASP.NET Web Form dapat menjadi kompleks, karena untuk menguji setiap halaman, Anda harus instantiate kelas halaman, semua kontrol anaknya, dan tergantung kelas tambahan dalam aplikasi. Karena begitu banyak kelas yang dipakai untuk menjalankan halaman, akan sulit untuk menulis tes yang secara eksklusif memfokuskan pada bagian-bagian individual aplikasi. Pengujian aplikasi ASP.NET Web Form dapat lebih sulit diterapkan daripada tes dalam aplikasi MVC. Selain itu, tes dalam aplikasi Web Form ASP.NET memerlukan server Web. Framework MVC memisahkan komponen dan memanfaatkan antarmuka dengan baik, yang memungkinkan untuk menguji komponen individu di isolasi dari sisa Framework.

Pemisahan antara tiga komponen utama aplikasi MVC juga mempromosikan pembangunan secara paralel. Misalnya, programmer pertama dapat bekerja pada sisi tampilan(View), dan programmer kedua dapat bekerja pada logika controller, dan programmer ketiga dapat fokus pada logika bisnis dalam model.

Memutuskan Kapan Buat Aplikasi MVC

Sebelum anda memutuskan membuat arsitektur Applikasi Web, Anda harus mempertimbangkannya dengan hati-hati apakah untuk mengimplementasikannya menggunakan Framework ASP.NET Web Form atau ASP.NET MVC. Framework MVC tidak menggantikan model Web Form, Anda dapat menggunakan salah satu framework untuk aplikasi Web. (Jika Anda memiliki aplikasi yang ada berbasis Web Form, sebaiknya teruskan menggunakan model Web Form.)

Sebelum Anda memutuskan untuk menggunakan Framework MVC atau model Web Form untuk Applikasi Web anda, sebaiknya anda mempertimbangkan keuntungan dan kelemahan dari pendekatan masing-masing.

Keuntungan dari sebuah Aplikasi Web-Based MVC

Kerangka ASP.NET MVC menawarkan keuntungan sebagai berikut:

  • Mempermudah pengelolaan kompleksitas applikasi dengan membagi aplikasi ke dalam model, tampilan, dan controller.
  • Tidak menggunakan tampilan bentuk state atau form berbasis server. Hal ini membuat Framework MVC sangat ideal untuk programmer yang ingin kontrol penuh atas perilaku aplikasi.
  • Menggunakan pola Front Controller bahwa proses permintaan Web aplikasi melalui pengontrol tunggal. Hal ini memungkinkan Anda untuk merancang sebuah aplikasi yang mendukung infrastruktur routing.
  • Menyediakan dukungan yang lebih baik untuk pengembangan ujicoba langsung (TDD).
  • Bekerja dengan lebih baik untuk aplikasi Web yang didukung oleh tim besar pengembang dan desainer web yang membutuhkan tingkat kontrol yang tinggi terhadap perilaku aplikasi.

Keuntungan dari Aplikasi Web-Based ASP .NET Web Form

Framework berbasis Web Form menawarkan keuntungan sebagai berikut:

  • Mendukung model berbasis event yang disediakan dalam state melalui HTTP, yang menguntungkan line-of-bussiness pengembangan aplikasi Web. Penggunaan Framework berbasis Web Form jug menyediakan banyak event dan didukung oleh ratusan kontrol server.
  • Menggunakan pola Page Controller yang menambahkan fungsionalitas untuk setiap halaman.
  • Menggunakan view state atau server berbasis Form, yang dapat membuat informasi lebih mudah mengelola state.
  • Ia bekerja dengan baik untuk tim kecil dari pengembang dan perancang Web yang ingin mengambil keuntungan dari banyak komponen yang tersedia untuk pengembangan aplikasi yang cepat.
  • Secara umum, kurang kompleks untuk pengembangan aplikasi, karena komponen (kelas Page, kontrol, dan sebagainya) yang terintegrasi dan biasanya membutuhkan kode kurang dari model MVC.

Fitur dari ASP.NET MVC Framework

Framework ASP.NET MVC menyediakan fitur berikut:

  • Pemisahan tugas aplikasi secara default (logika input, logika bisnis, dan logika UI), testability, dan pengembangan ujicoba langsung (TDD). Semua core dalam Framework MVC adalah antarmuka terdesign dan dapat diuji dengan menggunakan objek tiruan, yang disimulasikan kedalam objek tiruan dari perilaku objek aktual dalam aplikasi. Anda dapat melakukan unit-test aplikasi tanpa harus menjalankan pengendali dalam suatu proses ASP.NET, yang membuat unit pengujian cepat dan fleksibel. Anda dapat menggunakan kerangka pengujian unit kerja yang kompatibel dengan .NET Framework.
  • Sebuah kerangka extensible dan pluggable. Komponen kerangka ASP.NET MVC dirancang sedemikian rupa sehingga dapat dengan mudah diganti atau disesuaikan. Anda dapat melihat plug di mesin Anda sendiri, kebijakan routing URL, tindakan-metode serialisasi parameter, dan komponen lainnya. Kerangka ASP.NET MVC juga mendukung penggunaan Dependensi Injection (DI) dan Inversi dari Control (IOC) model kontainer. DI memungkinkan Anda untuk menyuntikkan objek ke dalam kelas, bukan mengandalkan kelas untuk membuat obyek itu sendiri. IOC menetapkan bahwa jika objek memerlukan objek lain, objek pertama-tama harus mendapatkan obyek kedua dari sumber luar seperti file konfigurasi. Hal ini membuat pengujian mudah.
  • Sebuah komponen pemetaan URL yang kuat sehingga memungkinkan Anda membangun aplikasi yang mudah dipahami dan URL tidak perlu menyertakan ekstensi file-nama, dan dirancang untuk mendukung penamaan pola URL yang bekerja dengan baik untuk optimasi search engine (SEO) dan representational state transfer (REST) addressing.
  • Dukungan untuk menggunakan markup yang ada halaman ASP.NET (. ASPX file), pengguna kontrol (.ascx file), dan halaman master (.master file). File markup sebagai tampilan template. Anda dapat menggunakan fitur yang ada dengan Framework ASP.NET MVC, seperti halaman master bersarang, ekspresi di-line (<%= %>), kontrol server deklaratif, template, data-mengikat, lokalisasi, dan sebagainya.
  • Dukungan untuk fitur ASP.NET yang ada. ASP.NET MVC memungkinkan Anda menggunakan fitur seperti otentikasi bentuk dan otentikasi Windows, otorisasi URL, keanggotaan dan peran, output dan data caching, sesi dan manajemen negara profil, pemantauan kesehatan, sistem konfigurasi, dan arsitektur operator.
Kategori:.NET Framework, MVC

Deployment menggunakan Visual Studio 2010 dan IIS

1 September 2009 6 komentar

Visual Studio 2010

Saat ini untuk mendeploy sebuah aplikasi web tidak semudah seperti dulu. Kita harus mempertimbangkan berbagai hal, seperti apakah mendeploy applikasi web pada web hosting bersama dan membayar iuran bulanan untuk mempertahankannya atau memiliki web server sendiri yang dikelola oleh perusahaan, untuk itu ada banyak langkah-langkah yang harus dilakukan agar dapat mendeploy aplikasi web anda dari titik A ke titik B.

Jika menggunakan web hosting untuk mendeploy aplikasi maka harus menggunakan beberapa teknologi dan tools seperti FTP yang memerlukan waktu lama untuk mendapatkan konten web Anda ke server host. Setelah mendeploy konten, maka secara manual harus ke control panel dan install database dengan menjalankan script sql dan kemudian mengkonfigurasi berbagai pengaturan seperti IIS menandai folder sebagai aplikasi untuk mengisolasi dari aplikasi lain, dan lain sebagainya hingga aplikasi web berhasil diinstall.

Namun jika berada dalam lingkungan perusahaan dan ingin mendeploy sebuah aplikasi web, maka harus mengerahkan secara sistematis dan mendokumentasikan dengan baik setiap langkah yang harus dilakukan admin server dan database administrator. Di sebagian besar kasus, anda harus meminta kepada web server administrator untuk memodifikasi file web.config dan membuka IIS Manager serta mengkonfigurasi beberapa setting, terlepas dari aplikasi web yang akan di deploy. Database administrator harus melakukan langkah-langkah yang diperlukan untuk menjalankan skrip sql dalam urutan yang benar agar Database tersebut dapat berjalan dengan baik dan benar, Seperti instalasi beberapa tools yang memerlukan waktu berjam-jam untuk menyelesaikannya.

Hal-hal tersebut diatas pasti sangat melelahkan dan membosankan, namun dengan menggunakan Visual Studio 2010 dan IIS Web Deployment Tools (MsDeploy.exe) masalah-masalah diatas dapat teratasi dengan baik. Microsoft Deployment Tools dapat diunduh secara gratis (sampai tulisan ini diturunkan masih dalam versi Beta 2). Anda dapat mengunduh MSDeploy dari lokasi di bawah ini:

Versi x86 : http://go.microsoft.com/fwlink/?LinkId=109365
Versi x64 : http://go.microsoft.com/fwlink/?LinkId=109366

Perlu dicatat apabila menginstall Visual Studio 2010 maka MSDeploy akan secara otomatis terinstal pada komputer. Visual Studio 2010 CTP dapat diunduh dari lokasi di bawah ini:

http://www.microsoft.com/downloads/details.aspx?FamilyId=922B4655-93D0-4476-BDA4-94CF5F8D4814&displaylang=en

Fitur yang terdapat pada Deployment web pada VS 2010 dapat dibagi ke dalam area utama berikut:

1. Web Packaging – VS 2010 MSDeploy akan membuat file. Zip untuk aplikasi yang disebut sebagai web paket. File ini berisi meta data + fitur dibawah ini:

· Semua pengaturan IIS (seperti: application pools, error pages, dsb)
· Web Content (seperti. Aspx,. Ascx,. Js, Images, dsb)
· SQL Server Database
· Berbagai fitur lainnya seperti Security Certs, GAC Components, Registry, dsb

Sebuah paket web yang akan di deploy dapat disimpan di setiap server dan diinstall dengan menggunakan IIS Manager UI Wizard atau menggunakan command line atau bisa juga menggunkan API untuk skenario deployment secara otomatis.

2. Web.Config Transformation – VS 2010 web deployment memperkenalkan Dokumen XML Transform (XDT) yang akan memungkinkan untuk merubah web.config pada saat develop dan ketika deployment. Transformasi ini dikendalikan oleh web.config TRANSFORM. File config dengan nama web.debug.config, web.release.config, dsb akan diikat pada konfigurasi MSBuild ketika akan mendeploy. File transformasi ini hanya dibutuhkan jika benar-benar ingin merubah web.config … Anda dapat mengontrol jenis perubahan tersebut dengan memerintahkan mesin XDT dengan menggunakan syntax yang sederhana dan mudah dipahami.

3. Database Deployment – VS 2010 memungkinkan untuk menggunakan aplikasi beserta semua dependensinya termasuk dependensi database SQL Server. Hanya dengan memberikan Connection String dari database, VS10 akan secara otomatis mengambil data script/skema dan dikemas untuk deployment. VS 2010 juga memungkinkan untuk melakukan kustomisasi pada Sql script dengan urutan yang benar agar dapat berjalan pada server. Setelah DB dikemas bersama dengan Pengaturan IIS dan konten web, anda dapat mendeploy ke server manapun dengan menambahkan Connection String pada saat installasi.

4. Publish dengan sekali Klik – VS 2010 memungkinkan untuk tidak hanya melakukan installasi paket aplikasi Web dengan semua dependensinya tetapi juga menggunakan Remote Management IIS service untuk mempublish web aplikasi ke remote server. VS 2010 akan membuat profil Publish dari Hoster Account atau melakukan pengujian ke berbagai server dan menyimpan data dengan aman sehingga dapat di Deploy ke salah satu profil Publish dengan hanya satu klik menggunakan toolbar Web One Click. Dengan VS 2010 Anda juga akan dapat mempublikasikan menggunakan baris perintah pada MsBuild sehingga Anda dapat mengkonfigurasikan ruang kerja team untuk memasukkan hasil Publish kedalam model yang terintegrasi berkesinambungan.